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 では、一部の長いメッセージが切り捨てられます (メッセージの末尾が利用できません)。
UDP で netcat を使用して長いメッセージをアップロードしようとしたとき:
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
しかし成功しなかった
THX
答え1
rsyslogdはsyslogプロトコルを使用しており、これはRFC 3164セクション4.1では、
パケットの合計長は 1024 バイト以下でなければなりません。
したがって、rsyslog は、syslog メッセージの標準に準拠するために、メッセージを小さなパケットに分割するという適切な処理を行います。
ncat がメッセージを 1 つの巨大な塊として送信する理由は、ncat が送信するメッセージの種類のプロトコルについて何も知らないため、メッセージを分割する必要があることを認識していないためです。