Я использую 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
, но безуспешно
Thx
rsyslogd использует протокол системного журнала, который определен в RFC 3164 . В разделе 4.1 говорится:
Общая длина пакета ДОЛЖНА быть 1024 байта или меньше.
Таким образом, rsyslog правильно разбивает сообщение на более мелкие пакеты, чтобы соответствовать стандарту для syslog. сообщений.
Причина, по которой ncat отправляет сообщение в виде одного огромного двоичного объекта, заключается в том, что ncat ничего не знает о протоколе для типа сообщения, которое вы отправляете, поэтому он не знает, что он должен разбивать сообщение .