第十章 系统日志的分析及管理
10.1 系统日志架构分析
在rhel7系统中有两个日志服务,分别是传统的rsyslog和新添加的systemd-journal.
systemd-journald是一个改进型的日志管理服务,可以收集来自内核、系统早期的启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。 该日志服务仅仅把日志集中保存在单一结构化的日志文件/run/log中,默认情况下并不会持久化保存日志,每次重启后,之前的日志都会丢失。另外,一些rsyslog无法收集的日志也会被jounral记录到。
rsyslog作为传统的系统日志服务,把所有收集到的日志都记录到/var/log/目录下的各个日志文件中。常见的日志文件如下:
/var/log/messages 绝大多数的系统日志都记录到才文件
/var/log/secure 所有跟安全和认证授权等日志都会记录到此文件
/var/log/maillog 邮件服务的日志
/var/log/cron crond计划任务的日志
/var/log/boot.log 系统启动的相关日志
10.2 审查syslog日志
rsyslog.conf
syslog日志类型
syslog日志的属性:
emerg
alert
crit
err
warnning
nice
info
debug
看懂简单的日志设定规则
分析日志字段
手工发送日志logger
10.3 审查systemd Journal日志
这是systemd自带的日志服务工具
所有日志记录到/run/log文件中
# journalctl 查看所有的日志
# journalctl -n 5 查看最后5条日志
# journalctl -p err 查看err类型的日志
# journalctl -f 不断输出最后10条日志
# journalctl --since today 查看今天的日志
# journalctl --since "2014-02-10 20:30:00" --until "2014-02-13 12:00:00"
# journalctl -o verbose 查看日志的详细信息
# journalctl _SYSTEMD_UNIT=sshd.service _PID=1182
更多的使用参数参考 journalctl(1) 和 systemd.journal-fields(7)
10.4 保存systemd Journal日志
持久化保存journal的日志,默认只会保存一个月的日志
# mkdir /var/log/journal
# chown root:systemd-journal /var/log/journal
# chmod 2755 /var/log/journal
# kill -USR1 systemd-journald
10.5 维护准确的系统时间
timedatectl 查看系统时间和设定
timedatectl list-timezones 列出可用时区
timedatectl set-timezone Asia/Shanghai 设定时区
timedatectl set-time 22:19:00 设定时间
timedatectl set-ntp true 使用网络时间同步(考试必考题)
使用chronyd服务进行网络时间同步
/etc/chrony.conf
例子:设置系统使用chrony同步时间
# timedatectl set-ntp true
# vim /etc/chrony.conf
server content.example.com iburst
把原来之际rhel自带的注释掉
# systemctl enable chronyd
# systemctl restart chronyd
验证
# chronyc sources -v
# chronyc
chronyc> waitsync
try: 1, refid: 172.25.254.254, correction: 0.000000001, skew: 0.701
==============================
10.2
[[email protected] log]# systemctl is-enabled rsyslog
enabled
[[email protected] log]#
[[email protected] log]# systemctl status rsyslog
[[email protected] log]# ls /etc/rsyslog.conf
/etc/rsyslog.conf
[[email protected] log]# man rsyslog.conf
logger -p authpriv.info -t "test" "can you see me"
10.3
ls /run/log
# journalctl --since "2017-06-3 12:30:00" --until "2017-06-3 15:30:00"
10.4
可以改保存时间了 默认只是一个月
[[email protected] log]# vim /etc/systemd/journald.conf
#MaxFileSec=2month
永久保存的方法:
mkdir /var/log/journal
chown root:systemd-journal /var/log/journal
chmod 2755 /var/log/journal
killall -USR1 systemd-journald
运行实例:
[[email protected] log]# mkdir /var/log/journal
[[email protected] log]# chown root:systemd-journal /var/log/journal
[[email protected] log]# chmod 2755 /var/log/journal
[[email protected] log]# killall -USR1 systemd-journald
[[email protected] log]# cd /var/log
[[email protected] log]# ls
anaconda boot.log chrony cron dmesg gdm lastlog maillog ovirt-guest-agent pm-powersave.log qemu-ga sa secure spooler test tuned Xorg.0.log yum.log
audit btmp cloud-init.log cups dmesg.old journal libvirt messages pluto ppp rhsm samba speech-dispatcher tallylog test.log wtmp Xorg.0.log.old
[[email protected] log]# ls journal/946cb0e817ea4adb916183df8c4fc817/
system.journal