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 对您正在发送的消息类型的协议一无所知,因此它不知道应该将消息拆分开来。

相关内容