Linux日志rsyslog

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介:

Linux日志

一、什么是日志?

日志总体来说是来记录历史事件的,记录在过去一段事件系统的行为。将过去一段时间所发生的时间按时间序列记录到指定的存储结构中,记录的主要内容有事件的来源、发生的时间、内容、事件的关键程度(日志级别)。例如:在操作系统中安装和卸载过什么软件,这些操作会记录下来。记录日志的主要目的是在发生问题的时候,是解决问题的重合依据之一。

在Linux中,一般情况下会记录系统进程(syslog)和内核事件(klogd)进程相关的日志。

二、rsyslog

rsyslog是CentOS6系列提供记录日志的工具,具有如下特点:

 

支持多线程模式

支持像TCP,SSL,TLS,RELP等协议

可以将日志信息记录到像MySQL, PGSQL, Oracle等多种关系型数据中

强大的过滤器,可实现过滤系统信息中的任意部分

自定义输出格式

适用于企业级别日志记录需求

     

三、facility

记录日志的设施,从功能或程序上对日志进行分类,并由专门的工具负责记录其日志 。简单的来说,就是记录日志的“主人”。常见的有如下:

auth 认证相关的
authpriv 认证授权相关的
cron 周期性计划任务相关的
daemon 相关的
kern 相关的
lpr 打印相关的
mail 相关的
mark 防火墙标记相关的
news 新闻组相关的(较早)
security 安全相关的,同auth
syslog 记录日志工具自己的日志
user 用户相关的
uucp unix to unix copy,unix之间共享文件的协议(较早)
local0-local7 用户自定义的
* 表示所有
表示取反

四、priority

称之为级别,来定义日志的紧急程度。常见的有:

debug 调试信息,最详细的信息
info 基本信息
notice 通知信息
warn warnning 警告信息
err error 错误信息
crit 蓝色警戒信息
alert 橙色警戒信息
emerg panic 红色警戒信息

这里的级别从上到下表示级别越高,危险程度也越高,像emer级别是系统可能已经挂掉了。这里也可使用 *来表示所有级别,none: 没有任何级别 。

五、Target

target指的是日志存储的位置,常见的有:

本地文件路径:例如/var/log/messages

用户: *

日志服务器:@SERVER_IP(使用UDP协议) @@SERVER_IP(使用TCP协议)

管道:|COMMAND

关系型数据库: 例如: ommysql:localhost:Syslog:log:log(下面详细介绍)

六、rsyslog的配置


rsyslog的主配置文件:/etc/rsyslog.conf,在这个配置文件中主要有三方面的定义,如下:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
1、MODULES模块,在这里主要定义加载的模块等信息
#### MODULES ####
 
# 例如:作为日志服务器,使用udp/514作为监听端口
$ModLoad imudp
$UDPServerRun 514
 
2、GLOBAL DIRECTIVES模块,全局配置模块,在这里定义一些全局生效的属性
#### GLOBAL DIRECTIVES ####
 
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
 
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
 
# Include all config files in /etc/rsyslog.d/
$IncludeConfig  /etc/rsyslog .d/*.conf
 
3、定义日志规则
#### RULES ####
 
# 其定义格式 :
# facility.priority        Target 
 
mail.info          /var/log/maillog                                  # 比指定级别更高的所有级别,包括指定的级别本身; 
mail.=info       - /var/log/maillog                                  # 明确指定级别,这里的 - 表示异步写入磁盘,不加默认同步写入磁盘 
mail.!info       *                                                  # 除了指定级别,通知所有的用户
*.info          @172.16.10.88                                       # 所有facility的info级别,将日志以udp通信方式记录到172.16.10.88的日志服务器上 
mail.*:         :ommysql:localhost:Syslog: ftp :ftppass               # mail的所有级别,记录到mysql数据库中,登陆账号是:ftp@localhost -u ftp -p ftppass。数据库名称是Syslog
mail,news.info:                                                     # mail,news的info和更高的级别

日志信息格式:

1
2
3
4
# 时间     主机     进程(PID):事件 
 
Aug  7 02:32:14 server abrtd: Init complete, entering main loop
Aug  7 02:32:26 server kernel: readahead-collector: starting delayed service auditd

七、日志配置示例

1、日志服务器的功能

实验原理拓扑图:

1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
##########################实验配置##########################################
 
 
###########################在172.16.10.9主机上###############################
vim  /etc/rsyslog .conf  修改如下内容:
 
$ModLoad imtcp
$InputTCPServerRun 514
 
*.info;mail.none;authpriv.none; cron .none              /var/log/messages
 
# 重启服务
service rsyslog restart
 
##########################################################################
 
 
###########################在172.16.10.1上################################
vim  /etc/rsyslog .conf 
 
# 这里将需要的日志发送到日志服务器上
*.info;mail.none;authpriv.none; cron .none            @@172.16.10.9
 
# 重启服务
service rsyslog restart
 
######################################################################

测试结果:

2

3

2、支持mysql记录日志,使用loganalzer监控日志

配置原理图如下:

4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 配置如下:
###########################################在172.16.10.9上##############################################
1、安装rsyslog和mysql交互的软件
yum  install  rsyslog-mysql -y
 
2、搭建好lamp平台(这里不再详细介绍)
yum  install  httpd mysql php mysql-server php-gd -y
 
3、导入rsyslog所用到的数据库和表
# 具体通过 rpm -ql rsyslog-mysql 查看
mysql -u root -p <  /usr/share/doc/rsyslog-mysql-5 .8.10 /createDB .sql
 
### createDB.sql内容如下:
CREATE DATABASE Syslog;
USE Syslog;
CREATE TABLE SystemEvents
(
         ID int unsigned not null auto_increment primary key,
         CustomerID bigint,
         ReceivedAt datetime NULL,
         DeviceReportedTime datetime NULL,
         Facility smallint NULL,
         Priority smallint NULL,
         FromHost varchar(60) NULL,
         Message text,
         NTSeverity int NULL,
         Importance int NULL,
         EventSource varchar(60),
         EventUser varchar(60) NULL,
         EventCategory int NULL,
         EventID int NULL,
         EventBinaryData text NULL,
         MaxAvailable int NULL,
         CurrUsage int NULL,
         MinUsage int NULL,
         MaxUsage int NULL,
         InfoUnitID int NULL ,
         SysLogTag varchar(60),
         EventLogType varchar(60),
         GenericFileName VarChar(60),
         SystemID int NULL
);
 
CREATE TABLE SystemEventsProperties
(
         ID int unsigned not null auto_increment primary key,
         SystemEventID int NULL ,
         ParamName varchar(255) NULL ,
         ParamValue text NULL
);
 
授权登陆用户:
mysql> grant all on Syslog.* to log@ 'localhost'  identified by  'logpass' ;
mysql> flush privileges;
 
4、编辑配置文件
# vim /etc/rsyslog.conf
 
$ModLoad ommysql
*.info;mail.none;authpriv.none; cron .none                :ommysql:localhost,Syslog,log,logpass
 
5、重启服务
service rsyslog restart
 
#################################################################################################################################

测试结果:记录的结果如下,这样看起来比较费劲。

5

通过webGUI展示日志信息

1
2
3
4
5
6
7
8
9
# 具体安装步骤,可参考 loganalyzer-3.6.5/INSTASLL
tar  xf loganalyzer-3.6.5. tar .gz 
cp  loganalyzer-3.6.5 /src/  /var/www/html/  -R
cd  /var/www/html/
mv  src loganalyzer
chown  -R apache.apache loganalyzer
 
# 重启服务
/etc/init .d /httpd  restart

通过 http://172.16.10.9/loganalyzer 具体安装过程不再一一展示,重要的是每次安装这类软件的方法。几乎每个软件都会自带一个像INSTALL,README的文件,安装前尽量读一下。

在安装过程中,最重要的配置如下:要与对应的数据库名,表名,登录名一一对应。

7

loganalyzer:功能展示,可以形象的展示日志信息。

8

其他的功能在这里不再一一介绍,只能自己摸索。

 

OVER.










本文转自 羊木狼 51CTO博客,原文链接:http://blog.51cto.com/guoting/1544198,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
22天前
|
存储 Linux
linux /www/server/cron内log文件占用空间过大,/www/server/cron是什么内容,/www/server/cron是否可以删除
linux /www/server/cron内log文件占用空间过大,/www/server/cron是什么内容,/www/server/cron是否可以删除
21 1
|
7天前
|
存储 监控 安全
systemd-cat:Linux 系统日志的管道
`systemd-cat` 是 Linux 的一个工具,它将标准输入/输出/错误重定向到 systemd 的 Journald,便于集中管理、实时监控和分析系统及应用日志。它以高效二进制格式存储,提供安全、灵活且易用的日志处理。通过 `--priority` 和 `--identifier` 参数可设置日志级别和来源。示例用法包括将命令输出(如 `ls` 或 `grep`)重定向到日志。注意权限、日志级别选择和来源标识的设定,结合 `journalctl` 可优化日志管理。
|
1月前
|
存储 监控 安全
深入探索Linux的journalctl命令:系统日志的利器
**journalctl 深入解析:Linux 系统日志的强大工具** journalctl 是 Linux 中用于查询和管理 systemd 日志的命令行工具,与 systemd-journald 配合收集广泛的信息,包括内核消息和服务日志。它提供实时追踪、过滤、导出等功能,如 `-f` 实时监控,`-u` 过滤特定服务日志,`-k` 显示内核消息,`--since` 和 `--until` 选择时间范围。在实际应用中,结合权限管理、日志空间控制和有效过滤,journalctl 成为系统管理员诊断和优化系统的得力助手。
|
1月前
|
SQL Oracle 关系型数据库
探索 Linux 命令 `db_archive`:Oracle 数据库归档日志的工具
探索 Linux 中的 `db_archive`,实际与 Oracle 数据库归档日志管理相关。在 Oracle 中,归档日志用于恢复,当在线重做日志满时自动归档。管理员可使用 SQL*Plus 查看归档模式,通过 `RMAN` 进行备份和恢复操作。管理归档日志需谨慎,避免数据丢失。了解归档管理对 Oracle 管理员至关重要,确保故障时能快速恢复数据库。
|
1月前
|
存储 关系型数据库 Linux
探索 `db_printlog`:Linux 下的数据库日志打印工具
`db_printlog`是Linux下用于解析和打印Berkeley DB日志文件的命令行工具,帮助用户以可读格式理解数据库事务和系统事件。要使用它,先安装Berkeley DB,然后通过`db_printlog logfilename`命令分析日志。常见选项包括`-h`(显示帮助)、`-v`(详细输出)和`-f`(跟随日志更新)。注意日志文件权限和大小问题,此工具适用于Berkeley DB,其他数据库系统可能有不同解析工具。
|
27天前
|
监控 网络协议 Linux
技术好文共享::Linux系统日志管理日志转储
技术好文共享::Linux系统日志管理日志转储
21 0
|
27天前
|
监控 安全 Linux
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
60 0
|
1月前
|
监控 Linux 数据处理
深入了解Linux的logger命令:日志记录与监控
`logger`命令在Linux中用于向系统日志发送消息,便于记录系统事件和应用程序状态。它与`syslogd`配合,允许用户指定优先级、标识符和内容。简单易用,灵活适应不同日志需求。示例:`logger -p user.warning -t MYAPP &quot;A warning occurred.&quot;`。注意选择合适优先级,使用有意义的标识符,并结合其他工具如`logrotate`进行日志管理。
|
2月前
|
存储 监控 Ubuntu
Linux系统之GoAccess实时Web日志分析工具的基本使用
【5月更文挑战第22天】Linux系统之GoAccess实时Web日志分析工具的基本使用
71 1
|
1月前
|
Shell Linux
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
27 0