rsyslog上傳限制?

rsyslog上傳限制?

我使用 rsyslog 將日誌上傳到我的 Graylog 伺服器

/etc/rsyslog.conf:

$InputFileName /var/log/apache-error.log
$InputFileFacility apache
$InputFileTag #apacheError:
$InputFileStateFile apache-error
$InputFileSeverity error
$InputRunFileMonitor

if $programname == '#apacheAccess' then @1.2.3.4:1514

一些長訊息在 Graylog 中被截斷(訊息末尾不可用)。

當我嘗試使用 netcat 在 UDP 中上傳長訊息時:

echo -n -e "$(for i in $(seq 0 64000); do echo -n '0123456789';done)" | nc -u 1.2.3.4 1514

該訊息位於 Graylog 中(在多個訊息中,但所有訊息均可用)

為什麼來自 rsyslog 的訊息的一部分被截斷,而來自 netcat 的訊息則沒有被截斷?

是否必須增加 MaximumSize 參數或其他參數?

我試過

$MaxMessageSize 256k
$MainMsgQueueDequeueBatchSize 256

但沒有成功

謝謝

在此輸入影像描述

答案1

rsyslogd 使用 syslog 協議,該協議定義於RFC 3164。在第 4.1 節中,它說

資料包的總長度必須為 1024 位元組或更小。

因此,rsyslog 正確地將訊息分割成更小的資料包,以符合 syslog 訊息的標準。

ncat 將訊息作為一個巨大的 blob 發送的原因是,ncat 對您發送的訊息類型的協定一無所知,因此它不知道應該拆分訊息。

相關內容