2018年7月10日 星期二

CentOS 查看由 systemd 所管理服務的日誌記錄

由 systemd 管理的服務,產生的日誌 log 記錄,是由 systemd-journald 服務處理。

[設定檔]
位置
/etc/systemd/journald.conf

設定說明可查看
man journald.conf

「Storage」 是控制日誌儲存的位置,有以下設定值。
volatile:儲存在記憶體中。在 /run/log/journal/ 目錄下,所以重開機便會不見。
persistent:儲存在硬碟。在 /var/log/journal 目錄下,目錄若不存在,會自動建立。
auto:若 /var/log/journal 目錄存在,則如同 persistent 儲存在硬碟。否則如同 volatile 儲存在記憶體。
none:不保存日誌。但不影響日誌轉發。
「SystemMaxUse=, SystemKeepFree=, SystemMaxFileSize=, RuntimeMaxUse=, RuntimeKeepFree=,RuntimeMaxFileSize=」
是檔案日誌大小限制,已有適當預設值,也會自動滾動輪替,無特殊需求應該不用修改。

修改設定檔案後,須重啟 systemd-journald 服務。
例如原本日誌原本預設儲存在記憶體。修改為將日誌儲存在硬碟、限制日誌檔案大小為100M。
$ vi /etc/systemd/journald.conf

Storage=persistent
SystemMaxUse=100M
$ systemctl restart systemd-journald
重啟後,可發現系統自動建立了 /var/log/journal 目錄,


[日誌指令]
查看日誌
$ journalctl

查看 kernel 訊息
$ journalctl -k

查看啟動編號(0:目前的編號,每次重開機會多一個,若日誌儲存在記憶體,重開機會清空,則只會有編號0這一個)
$ journalctl --list-boots
-3 87786fd3c7274fa49d88644a6f84eaec 三 2018-07-10 15:29:51 CST—三 2018-07-10 16:21:51 CST
-2 d69bfb38d2b342479175dc6b161caaa3 三 2018-07-10 16:21:56 CST—三 2018-07-10 16:23:41 CST
-1 5eeccbecaacb49d4aa70a04b119f6e7e 三 2018-07-10 16:23:47 CST—三 2018-07-10 16:25:21 CST
 0 b22ae5b9e5834647a09b654ceab32479 三 2018-07-10 16:25:26 CST—三 2018-07-10 16:26:31 CST

查看啟動後的日誌
$ journalctl -b 啟動編號

指定某時間開始的日誌
$ journalctl --since="2018-01-05 15:10:20"
$ journalctl --since "20 min ago"
$ journalctl --since 'yesterday'

查看指定時段內的日誌
$ journalctl --since="2018-01-05 15:10:20" --until="2018-01-05 18:30:00"

顯示最新日誌
$ journalctl -f

查看指定系統服務的日誌
$ journalctl -u 系統服務名稱

日誌先後順數反向顯示(新的日誌顯示在前面)
$ journalctl -r

特定PID的日誌
$ journalctl _PID=指定PID數字

顯示幾筆最新的日誌
$ journalctl -n 數字

過濾日誌級別
$ journalctl -p 級別數字或英文
0:emerg
1:alert
2:crit
3:err
4:warning
5:notice
6:info
7:debug

日誌使用的空間
$ journalctl --disk-usage



參考:
systemd (正體中文) - ArchWiki
RHEL / CentOS 7 管理記錄檔 — Journald – Linux 技術手札
如何使用Journalctl查看和操作Systemd日志
Suse Doc: 管理指南 - journalctl:查询 systemd 日记 - September 08 2013
journald.conf 中文手册 [金步国]


沒有留言:

張貼留言