Logging
rsyslog udp 轉發在 2048 個字元處截斷
RHEL 6 伺服器上的 Rsyslog 在埠 514 UDP 上本地接收消息。這些消息有時比正常的 syslog 消息大小要大得多。我看到 rsyslog 處理所有消息都很好,它寫入本地文件沒有問題。但是,當我將遠端主機添加到 rsyslog 配置時,這些相同的大消息會被截斷為大約 2048 個字元。
我正在執行 rsyslogd 版本:5.8.10
rsyslogd 5.8.10, compiled with: FEATURE_REGEXP: Yes FEATURE_LARGEFILE: No GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No 32bit Atomic operations supported: Yes 64bit Atomic operations supported: Yes Runtime Instrumentation (slow code): No
我對 rsyslog conf 所做的唯一更改是以下兩件事:
這是我的 rsyslog conf 文件的最頂部:
$MaxMessageSize 64k
這是我的 rsyslog conf 文件的最底部:
$template RemoteHost,"<%%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg% *.* @my-rsyslog-central-logger:514; RemoteHost
有誰知道為什麼 rsyslog 會通過 UDP 將日誌截斷到遠端主機,但是在將日誌寫入本地文件時能夠處理日誌?
**注意,我通過使用 netcat 偵聽 rsyslog 通過 UDP 轉發到的本地埠,仔細檢查了遠端 rsyslog 主機上沒有發生這種情況。
** 注意我確實嘗試過 TCP,但它沒有截斷大的轉發消息,所以現在的問題是為什麼 UDP 會截斷。(我假設答案可能與 UDP 的屬性有關,但我仍然想知道,如果可能的話,可能對 UDP 轉發的消息進行修復)
UDP沒有序列號,沒有辦法連貫地組合消息(如果它們亂序到達)
系統日誌 UDP 傳輸 - https://www.rfc-editor.org/rfc/rfc5426
3.1。每個數據報一條消息
每個 syslog UDP 數據報必須只包含一個 syslog 消息,它可以是完整的或被截斷的。消息必鬚根據 RFC 5424 進行格式化和截斷
$$ 2 $$. 數據報有效載荷中不得出現附加數據。