rsyslog是syslog的多线程增强版,现在Fedora、Ubuntu,、rhel6、centos6默认的日志系统都是rsyslog了。rsyslog主要用来收集系统产生的各种日志,日志默认放在/var/log/目录下。先简单看看配置文件,然后给几个实例也算是对rsyslog的一个更深入的理解吧。
1、配置文件解析 主配置文件/etc/rsyslog.conf配置文件中有很多内容, 但最主要的是指定需要记录哪些服务和需要记录服务什么等级的信息。
格式是:日志设备 [连接符号]
日志级别 日志处理方式(action)
a)、日志设备(可以理解为日志类型):
1 | auth --pam产生的日志 |
b)、日志级别,从上到下,级别从高到低,记录的信息越来越少。
1 | debug --有调式信息的,日志信息最多 |
c)、连接符号,其中的xxx表示某一日志级别
1 | .xxx 表示小于等于xxx级别的日志信息 |
d)、日志处理方式,意思就是将特定的日志做怎样的处理。
1 | 1. 记录到普通文件或设备文件:: |
举2个例子 将mail的所有级别的日志,记录到文件/var/log/maillog中,其中的符号”-“表示使用缓存模式
1 | mail.* -/var/log/maillog |
将所有日志的所有级别的信息采用UDP协议送给远程服务器192.168.186.134一份
1 | *.* @192.168.186.134 |
2、用实例说话
a)、将所有服务器的系统日志送给远程日志服务器,远程服务器用来接收和集中所有服务器送来的系统日志。
采用UDP协议发送和接收,在远程服务器端配置文件/etc/rsyslog.conf开启下面两行
1 | # Provides UDP syslog reception |
客服端的配置文件/etc/rsyslog.conf最后新增加一行,用来将所有的日志信息发送给远程的服务器192.168.186.134
1 | *.* @192.168.186.134 |
每次更改配置文件后不要忘记重启rsyslog服务。
测试:重启某台服务器的rsyslog服务看看远程的服务器能不能收到日志
1 | $ /etc/init.d/rsyslog restart |
看远程的服务器已经收到了相应的日志,如果没有收到日志是不是防火墙挡住了,如果没有使用标准的端口还要看看是不是SELinux服务开启了。
1 | $ tailf /var/log/messages |
b)自定义设备,手动将日志送给rsyslog服务
先修改配置文件,新增自定义设备local0并将其info级别及其以下级别的日志记录到文件/var/log/test.log文件中
1 | local0.info /var/log/test.log |
修改配置文件后不要忘记重启rsyslog服务使其生效
然后我们用logger命令向设备local0送日志,总共发送了4次日志,前三次的级别都是info及其以下级别的日志,第四次是debug级别的日志。参数”-t”是将每次发送的日志信息打上自定义标签。
1 | $ logger -p local0.info "hello world" |
结果是前三次都记录到了文件/var/log/test.log中,第四条由于超过info级别为debug级别故忽略了。
1 | $ tailf /var/log/test.log |
c、收集各台服务器的history记录,可以参考文章《日志管理(1) 审计并收集history记录》。
关于rsyslog的简单介绍就这些了,其它用法如过滤、加载外部模块、收集MySQL程序日志等,有兴趣的可以继续深入。