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
하지만 성공하지 못한 채
고마워
답변1
rsyslogd는 다음에 정의된 syslog 프로토콜을 사용하고 있습니다.RFC 3164. 섹션 4.1에서는 다음과 같이 말합니다.
패킷의 총 길이는 1024바이트 이하여야 합니다.
따라서 rsyslog는 syslog 메시지 표준을 준수하기 위해 메시지를 더 작은 패킷으로 분할하는 올바른 작업을 수행합니다.
ncat이 하나의 거대한 덩어리로 메시지를 보내는 이유는 ncat이 보내는 메시지 유형의 프로토콜에 대해 아무것도 모르기 때문에 메시지를 분할해야 한다는 사실을 인식하지 못하기 때문입니다.