LogSystem

日志管理
CentOS 7/8 使用systemd-journald来做日志中心库,使用rsyslog来做日志持久化,使用logrotate来做日志文件轮转。

systemd-Journald

systemd-journald 守护进程提供一种改进的日志管理服务,可以收集来自内核,启动过程的早期阶段,标准输出,系统日志,以及守护进程启动和运行期间的错误的消息。
它将这些消息写到一个结构化的事件日志中,默认情况下不在重新启动之间保留。

持久化systemd日志

默认情况下,systemd 的日志保存在 /run/log/journal 中,系统重启就会清除,这是RHEL7的新特性。通过新建 /var/log/journal 目录,日志会自动记录到这个目录中,并永久存储。

  1. # 1. 修改 journal存储模式
  2. sudo sed -i "/^#Storage/cStorage=persistent" /etc/systemd/journald.conf
  3. # 2. 先处理所需要的目录与相关权限
  4. sudo mkdir /var/log/journal
  5. sudo chown root:systemd-journal /var/log/journal
  6. sudo chmod 2775 /var/log/journal
  7. # 3. 重启服务 systemd-journald 并观察备份的日志数据
  8. sudo systemctl restart systemd-journald.service
  9. ll /var/log/journal/

image.png
image.png

journalctl 常用命令

  1. # 以flow形式查看日志
  2. $ journalctl -f
  3. # 查看内核日志
  4. $ journalctl -k
  5. # 查看指定服务日志
  6. $ journalctl -u docker.serivce
  7. # 查看指定日期日志
  8. $ journalctl --since="2018-09-21 10:21:00" -u docker
  9. $ journalctl --since="2018-09-21 10:21:00" --until="2018-09-21 10:22:00" -u docker
  10. # 查看指定级别日志
  11. $ journalctl -p 3 -u docker.service
  12. 操作系统提供了从0 (emerg) 7 (debug) 一共7个级别的日志,7个级别的含义为:
  13. 0: emerg
  14. 1: alert
  15. 2: crit
  16. 3: err
  17. 4: warning
  18. 5: notice
  19. 6: info
  20. 7: debug
  21. # 查看日志占用的磁盘空间
  22. $ journalctl --disk-usage
  23. # 设置日志占用的空间
  24. $ journalctl --vacuum-size=500M
  25. # 设置日志保存的时间
  26. $ journalctl --vacuum-time=1month
  27. # 检查日志文件一致性
  28. $ journalctl –-verify