Logging

runit 的 svlogd 期待什麼樣的服務?

  • December 17, 2014

runit 手冊指出,在配置中可以使用選項將日誌送出到:

ua.bcd

$$ :port $$ 告訴 svlogd 將所選日誌消息的前 len 個字元傳輸到 IP 地址 abcd,埠號 port。如果未設置埠,則使用系統日誌的預設埠 (514)。len 可以通過 -l 選項設置,見下文。如果 svlogd 在發送 udp 數據包時遇到問題,它會將錯誤消息寫入日誌目錄。注意:通過 udp 登錄是不可靠的,只能在私有網路中使用。

我知道這rsyslogd是在這個埠上執行的列表。所以這可能是一種可能的選擇……

但是還有其他選擇嗎?

這個問題有點含糊,但從它的聲音來看,我想你是在問你是否可以使用svlogd將 syslog 消息發送到除rsyslogd. 答案是,任何提供系統日誌服務的程序就足夠了。 不僅僅是rsyslogd提供 syslog 網路服務。

但是,runit 旨在“本機”處理日誌記錄的方式可能與您的想法相反。

這個想法是您有某種服務,並且該服務通過 stdout 或 stderr 寫入輸出。該runsv程序將svlogd在您的服務和之間建立管道svlogd;您的服務所要做的就是將數據發送到 stdout/stderr,svlogd 將直接寫入磁碟,並且生活是美好的。因為管道由 維護runsv,如果服務出現問題,輸出仍會被擷取並傳遞到svlogd- 所以理論上,您不會因服務崩潰而失去日誌數據。

同一作者還有另一個程序socklog,它充當 syslog 前端,匯集到svlogd. 因為有很多程序只是假設它/dev/log是可用的,socklog所以提供這個介面以便可以擷取 syslog 數據 - 它充當替代 syslog 服務。 這與您的建議相反。

我並不是說你不應該使用 syslog,我只是說有不止一種方法可以做到這一點。如果您真的想將 svlogd 的輸出分流回 syslog,那麼是的,任何舊的 syslog 服務都可以,但rsyslogd如果您的安裝允許,則可能值得考慮“全部原生”並完全放棄。

引用自:https://serverfault.com/questions/644298