Journald 到 rsyslog 轉發混亂

Journald 到 rsyslog 轉發混亂

我不太明白從 Journald 到 Rsyslog 的轉發。

基本上我的理解是「管道」的建構方式如下:

核心透過 printk() 記錄日誌 → /proc/kmesg ← rsyslog → 根據 rsyslog.conf 中的規則寫入日誌文件

使用者空間日誌 → /dev/log ← rsyslog → 根據 rsyslog.conf 中的規則寫入日誌文件

這會產生各種日誌文件,例如 /var/log/syslog 等。

正如在 rsyslog.conf 片段中一樣,來自設施「使用者」的訊息也會寫入系統日誌,因此會儲存兩次,對吧?

#
# First some standard log files.  Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

到目前為止很清楚,如果我沒弄錯的話。

但是,/dev/log 似乎連結到

$ ls -lah /dev/log
lrwxrwxrwx 1 root root 28 Apr 15 16:30 /dev/log -> /run/systemd/journal/dev-log

這是為什麼?

回到我真正的問題。 Journald 從哪裡取得日誌?我只知道systemd-cat。還是也來自 /dev/log // /run/systemd/journal/dev-log?

Journald 將日誌轉送到 syslog(Debian 中的標準,根據https://manpages.debian.org/testing/manpages-de/journald.conf.5.de.html)。難道每個訊息不應該在系統日誌中重複嗎?

為了結束這個循環,我現在處於這一點是因為我正在規劃一個日誌管理環境,並且面臨著從哪裡獲取日誌的問題。

我預先感謝您並希望您能幫助我。

相關內容