本章讲解本地日志管理和搭建日志服务器。rhel5中管理日志的服务是syslog,rhel6中管理日志的服务是rsyslog,rhel7中管理日志的服务是rsyslog和systemd-journald,默认情况下这两个服务不冲突,可以同时开起来,systemd-journald作为rsyslog的补充。默认情况下本地日志存储在var/log下。
日志服务的配置文件为/etc/rsyslog.conf
AAA BBB CCC
AAA 产生日志的设备或对象:
authprive 与安全验证相关的日志
cron 计划任务产生的日志
kern 内核产生的日志
user 普通用户产生的日志
localN 保留给其他应用程序使用 N=0-7
BBB 日志级别(使用man sysconfig查看):
KERN_EMERG 0 紧急的错误信息
KERN_ALERT 1 报警信息
KERN_CRIT 2 危急的信息
KERN_ERR 3 错误信息
KERN_WARNING 4 警告信息
KERN_NOTICE 5 稍微需要注意的信息
KERN_INFO 6 正常信息
KERN_DEBUG 7 排错信息
CCC日志存储位置
/var/log/xxx表示存储在本地,前面如果有 - ,表示异步记录日志信息
@@ip 表示日志存储在ip主机上,以TCP协议传输
@ip 以UDP协议传输
AAA.BBB 表示等于或者大于该级别,如AAA.ERR表示日志级别为3、2、1、0
AAA=ERR代表等于该级别
AAA!ERR除了该级别之外的级别都包含
不论AAA还是BBB,都可以使用通配符来表示
查看/etc/rsyslog.conf,可以看到里面有一行:$IncludeConfig=/etc/rsyslog.d/*.conf,这个配置的意思是引入其他配置,所以我们一般不会直接在/etc/rsyslog.conf中修改日志配置信息,而是在/etc/rsyslog.d/创建自己的日志配置文件,修改了配置之后需要systemctl restart rsyslog重启日志服务才生效。使用tail /var/log/mylog -f实时监控日志(即一旦mylog中存在日志将会输出,该命令等于tailf /var/log/mylog)
实例(日志过滤):在server0主机中配置desktop0主机产生的日志到/var/log/desktop0.log下:
首先如果server0中有防火墙需要设置一下,然后在server0的/etc/rsyslog.d下新建desktop0.conf文件,vim中输入 :fromhost, isequal, "desktop0.example.com" /var/log/desktop0.log :fromhost, isequal, "desktop0.example.com" ~(~表示只记录 /var/log/desktop0.log中,其他地方就不记录)。 重启日志服务:systemctl restart rsyslog,desktop0中测试:logger this is test log,可以看到server0中/var/log/desktop0.log下输出了”this is test log“日志信息
日志轮循
日志文件会随着时间越来越大,很不方便查看,因此需要使用日志轮循策略,将旧的日志文件删除,并创建新的日志文件,这个过程叫做转储。该策略的配置文件为/etc/logrotate.conf,它相当于一个全局的轮循策略,我们定义日志轮循策略在/etc/logrotate.d下,因为/etc/logrotate.conf中引用了该文件夹
实例:配置desktop0.log日志的轮循:
切换到/etc/logrotate.d,vim desktop0,输入:
/var/log/desktop0.log{
weekly
rotate 5
mail root@server0.example.com
size 4k
}
该配置文件配置了desktop0.log达到4k就会轮循,保留5周的日志,并发送邮件给root。日志轮循的计划任务为/etc/cron.daily/logrotate,可以使用logrotate -f /etc/logrotate.conf强制轮循一下,相当于立即执行了日志轮循计划任务,可以看到/var/log下多了一个desktop0-日期.log文件,该文件就记录了5周的日志信息
使用journalctl查看日志
和rsyslog服务不一样,rsyslog的日志存储在/var/log下,而journal的日志存储在/run/log下,存储的是二进制。/run的挂载点为tmpfs,也就是一个内存文件系统,所以journal的日志存储在内存中,每次重启日志就会丢失,当然也有方法让其永久保存。
优点:
记录的是从系统开机到关机之间的日志
查看日志的时候可以指明时间区间
journalctl查看日志,如果不加任何选项,显示所有记录的日志
journalctl -n 20 查看最后20行的日志
journalctl -p err 查看日志级别为err的日志
journalctl -f 监控日志
journalctl _COMM 服务名称,表示查看该服务产生的日志 如:journalctl _COMM sshd