Tcp
使用 (r)syslog 的動態文件生成
我正在將(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 有相當不錯的文件。