Table of Contents
Linux journal 資料流
graph TD
A[Services] --> B(systemd-journald)
C(rsyslogd) --> B
C --> D[ /var/log/service.log]
實際上,各個 Service
所產生的 log 並不是直接透過 rsyslogd
接收,而是將資料丟給 systemd-journald
統一接收
rsyslogd
在透過 imjournal
拿取資料後分發至相對應的地方
system-journald
Journal 存放位置
CentOS
:預設為/run/log/journal
此位置為記憶體位置,重開機後資料會流失,因此在不正常關機的情形下,可能會發生因為
rsyslogd
來不及分發而導致的資料流失Ubuntu
:預設為/var/log/journal
此位置需自行處理
logrotate
問題,否則可能會被journal
資料塞爆硬碟,最好的方法是直接設定參數限制檔案大小
system-journald 設定
# 系統 log 總大小上限
SystemMaxUse=30M
# 系統 log 單檔案大小上限
SystemMaxFileSize=4M
# 運行服務 log 總大小上限
RuntimeMaxUse=30M
# 運行服務 log 單檔案大小上限
RuntimeMaxFileSize=4M
# 以下設定是如果有觸及 rate-limiting 時才要設定
# 不壓縮
Compress=no
# 取消 rate-limiting 限制
RateLimitInterval=0
MaxRetentionSec=5s
# 另外需在 rsyslogd 中設定
# $IMUXSockRateLimitInterval 0
# $IMJournalRatelimitInterval 0
提醒:取消 rate-limiting
可能會導致空間使用以及系統資源問題