systemd 日志查看

发布时间 2023-12-11 21:27:10作者: 年华似水゛

原文链接:https://blog.csdn.net/wangzhicheng987/article/details/122325623

 

持久化systemd日志

CentOS 7 可以使用systemd-journald来做日志中心库(生成日志文件夹),systemd-journald 守护进程提供一种改进的日志管理服务,可以收集来自内核,启动过程的早期阶段,标准输出,系统日志,以及服务,守护进程启动和运行期间的错误的消息。

默认情况下,systemd 的日志保存在 /run/log/journal 中,系统重启会清除掉。
可通过新建目录,让日志自动记录到新建目录中,并永久存储。
将这些消息写到一个结构化的事件日志中,默认情况下不在重新启动之间保留。

    修改journal存储模式,配置为持久化

[root@shuge ~]# sed -i "/^#Storage/cStorage=persistent" /etc/systemd/journald.conf

 

[root@shuge ~]# cat /etc/systemd/journald.conf 
....
[Journal]
Storage=persistent
....

    先处理所需要的目录与相关权限设置 ( 可选,服务重启后会自动创建该目录 )

[root@shuge ~]# mkdir /var/log/journal
[root@shuge ~]# chown root:systemd-journal /var/log/journal
[root@shuge ~]# chmod 2775 /var/log/journal/

 

    重新启动 systemd-journald 并且观察备份的日志数据!

[root@shuge ~]#  systemctl restart systemd-journald.service

 

[root@shuge ~]# ll /var/log/journal/
total 0
drwxr-sr-x 2 root systemd-journal 117 Jan  5 16:06 2b17394d61974d95b2f8810a81a2dfcb

查看日志(journalctl)

Systemd 统一管理所有 Unit 的启动日志。可以只用journalctl一个命令,查看所有相关日志(内核日志和应用日志)。

    以flow形式查看日志,类似tail -f的效果

$ journalctl -f

[root@shuge local]#  journalctl -f
-- Logs begin at Mon 2021-01-04 19:16:30 CST. --
...
Jan 07 09:05:16 shuge.cn systemd[1]: Started Network Manager Script Dispatcher Service.
Jan 07 09:05:16 shuge.cn nm-dispatcher[1981]: req:1 'dhcp4-change' [ens32]: new request (2 scripts)
Jan 07 09:05:16 shuge.cn nm-dispatcher[1981]: req:1 'dhcp4-change' [ens32]: start running ordered scripts...

Jan 07 09:07:12 shuge.cn systemd[1]: Starting Cleanup of Temporary Directories...
Jan 07 09:07:13 shuge.cn systemd[1]: Started Cleanup of Temporary Directories.

 

查看内核日志

$ journalctl -k

[root@shuge local]#  journalctl -k
-- Logs begin at Mon 2021-01-04 19:16:30 CST, end at Fri 2022-01-07 09:07:13 CST. --
....
Jan 07 16:51:31 zaishu.cn kernel: BIOS-e820: [mem 0x000000003ff00000-0x000000003fffffff] usable
Jan 07 16:51:31 zaishu.cn kernel: BIOS-e820: [mem 0x00000000f0000000-0x00000000f7ffffff] reserved
Jan 07 16:51:31 zaishu.cn kernel: BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
Jan 07 16:51:31 zaishu.cn kernel: BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
Jan 07 16:51:31 zaishu.cn kernel: BIOS-e820: [mem 0x00000000fffe0000-0x00000000ffffffff] reserved
Jan 07 16:51:31 zaishu.cn kernel: NX (Execute Disable) protection: active
......

查看指定服务日志

$ journalctl -u mysql.serivce

[root@shuge local]# journalctl -u mysql.service
-- Logs begin at Mon 2021-01-04 19:16:30 CST, end at Fri 2022-01-07 09:07:13 CST. --
Jan 07 09:03:30 shuge.cn systemd[1]: Starting MySQL Server...
Jan 07 09:03:31 shuge.cn mysqld[1771]: Starting MySQL.[  OK  ]
Jan 07 09:03:31 shuge.cn systemd[1]: Started MySQL Server.

查看指定日期日志

$ journalctl --since=“2021-11-21 12:14:00” -u mysql
$ journalctl --since=“2021-11-21 12:14:00” --until=“2021-11-21 23:14:00” -u mysql

[root@shuge local]#  journalctl --since="2021-11-21 12:14:00" -u mysql
-- Logs begin at Mon 2021-01-04 19:16:30 CST, end at Fri 2022-01-07 09:07:13 CST. --
Jan 07 09:03:30 shuge.cn systemd[1]: Starting MySQL Server...
Jan 07 09:03:31 shuge.cn mysqld[1771]: Starting MySQL.[  OK  ]
Jan 07 09:03:31 shuge.cn systemd[1]: Started MySQL Server.

 

[root@shuge local]# journalctl --since="2021-11-21 12:14:00" --until="2021-11-21 23:14:00" -u mysql
-- Logs begin at Mon 2021-01-04 19:16:30 CST, end at Fri 2022-01-07 09:07:13 CST. --

 

查看指定级别日志

$ journalctl -p 3 -u mysql.service

    日志级别
    操作系统提供了从0 (emerg) 到 7 (debug) 一共7个级别的日志,7个级别的含义为:
    0: emerg
    1: alert
    2: crit
    3: err
    4: warning
    5: notice
    6: info
    7: debug
[root@shuge local]# journalctl -p 3 -u mysql.service
-- No entries --

 

查看日志占用的磁盘空间

$ journalctl --disk-usage

[root@shuge local]#  journalctl --disk-usage
Archived and active journals take up 16.0M on disk.

 

设置日志占用的空间

$ journalctl --vacuum-size=500M

[root@shuge local]# journalctl --vacuum-size=500M
Vacuuming done, freed 0B of archived journals on disk.

设置日志保存的时间

$ journalctl --vacuum-time=1month

[root@shuge local]#  journalctl --vacuum-time=1month
Deleted archived journal /var/log/journal/2b17394d61974d95b2f8810a81a2dfcb/system@03f61e2080f54516b6dc72d59c364ebd-0000000000000001-0005b81138ce4b57.journal (8.0M).
Vacuuming done, freed 8.0M of archived journals on disk.

 

检查日志文件一致性

$ journalctl --verify

[root@shuge local]# journalctl --verify
PASS: /var/log/journal/2b17394d61974d95b2f8810a81a2dfcb/system.journal    

 

 

Systemd 统一管理所有 Unit 的启动日志。可以只用journalctl一个命令,查看所有相关日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf。