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