Tcp

使用 (r)syslog 的動態文件生成

  • August 13, 2014

我正在將(r)syslog 伺服器配置為從各種客戶端接收日誌的遠端伺服器。

我想知道是否有更好的方法來動態生成多個文件名,而不是為應該動態創建文件名的任何 facility.priority 創建模板。

$template FILENAME,"/var/log/%fromhost-ip%/syslog.log"
kern.*                          ?FILENAME

除此之外,我是否必須明確告訴服務/守護程序使用 TCP 才能通過 TCP 和 (r)syslogd 使用日誌記錄?就像我關閉伺服器接收 UDP 數據包的能力一樣,它會停止記錄任何內容。或者換一種說法:

kern.*                           @loghost 

不起作用。

從手冊頁:

   To  forward  messages to another host via UDP, prepend the hostname
   with the at sign ("@").  To forward it via plain tcp,  prepend  two
   at signs ("@@").

所以像這樣改變你的配置行:

kern.*                           @@loghost 

並告訴 rsyslog 重新讀取配置文件。

是的,模板是在 rsyslog 中生成動態文件名的標準且推薦的方法。它們允許您在邏輯上將文件名格式與操作分開,並為您的配置引入清晰的結構。

關於 TCP,Jenny D已經給了你正確的答案。請注意,您的主機需要通過 TCP 支持 syslog。Syslog 最初基於 UDP,因此根據您在主機上執行的 syslog 守護程序的版本,TCP 可能無法在某些甚至全部上執行。rsyslog 和 syslog-ng 都支持 TCP。

對於 rsyslog 的額外參考,RedHat 有相當不錯的文件

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