RHEL 及 CentOS 原來使用 rsyslog 管理記錄檔, 在 RHEL / CentOS 7 開始除了保留了 rsyslog 外, 還加入了 journald。systemd 是一個負責開啟, 停止及監察進程狀態的服務, 所有經 systemd 啟動的服務, systemd 會將包括正常啟動, 啟動或結束時的問題經由 journald 寫入紀錄檔, 而 journalctl 則是用作查看 journald 紀錄檔的工具。
以下是 RHEL 及 CentOS 操作 Journald 的實用例子。
檢查目前的紀錄檔:
# journalctl
上面 journalctl 的執行結果與 “tail -f /var/log/messages” 差不多, 分別主要是 journalctl 會將 notice 及 warning 用粗字體, 時間會使用本地時區, 每次 reboot 加上新行, error 會用紅色突顯出來。
查看自今次開機的紀錄檔:
# journalctl -b
查看昨天的紀錄:
# journalctl –since yesterday
查看 error message:
# journalctl -p err
最後 10 件發生的事件:
# journalctl -f
查看 journal 佔用了多少空間:
# journalctl –disk-usage
整合 Journald 與 Rsyslog
CentOS 7 預設沒有將 Journald 與 Rsyslog 整合, 要將兩者整合要開啟檔案 /etc/syslog.conf 設定:
# vi /etc/rsyslog.conf
找到 “$ModLoad imuxsock” 及 “$ModLoad imjournal” 兩行, 並在兩行中間加入以下新行內容, 類似這樣:
$ModLoad imuxsock
$OmitLocalLogging off
$ModLoad imjournal
$OmitLocalLogging off
$ModLoad imjournal
儲存檔案後離開編輯器。然後開啟檔案 /etc/rsyslog.d/listen.conf:
# vi /etc/rsyslog.d/listen.conf
如果找不到以下一行, 需要自行加入:
$SystemLogSocketName /run/systemd/journal/syslog
儲存後便完成整合 journald 及 rsyslog 了。
文档有误:
$OmitLocalLoggin off
应该是
$OmitLocalLogging off
謝謝指正, 已改好.