第十章 系统日志的分析及管理


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/croncrond计划任务的日志

/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

[root@server0 log]# systemctl is-enabled rsyslog

enabled

[root@server0 log]# 


[root@server0 log]# systemctl status rsyslog



[root@server0 log]# ls /etc/rsyslog.conf 

/etc/rsyslog.conf

[root@server0 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

可以改保存时间了  默认只是一个月

[root@desktop0 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


运行实例:

[root@desktop0 log]#  mkdir /var/log/journal

[root@desktop0 log]#  chown root:systemd-journal /var/log/journal

[root@desktop0 log]#  chmod 2755 /var/log/journal

[root@desktop0 log]#  killall -USR1 systemd-journald

[root@desktop0 log]# cd /var/log

[root@desktop0 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

[root@desktop0 log]# ls journal/946cb0e817ea4adb916183df8c4fc817/

system.journal