Felraktam egy Graylog 5.2 szervert Debian 12-re, egyéb Linux-os gépek (Debian és Ubuntu, vegyes kiadások) rsyslog segítségével átküldik a syslog-ot GELF formátumban UDP-n.
Adódott hogy egy Windows 10 egyedi szoftverének logját is ide kellene átküldeni. Ehhez feltelepítettem a fluentbit 3.0-át a következő konfigurációval - log-ban nincs benne a gépnév, azt külön kell beleraknom FILTER segítségével.
parsers.conf
[PARSER]
Name EgyediProgramLog
Format regex
Regex /(?<time>\d+/\d+/\d+ \d+:\d+:\d+ \+\d+:\d+),(?<message>.*)/
Time_Key time
Time_Format %Y/%m/%d %H:%M:%S
fluent-bit.conf
[INPUT]
Name tail
Tag EgyediProgram
Path C:\[log_directory]\*.log
Parser EgyediProgramLog
Refresh_Interval 10
[FILTER]
Name modify
Match EgyediProgram
Add hostname ${HOSTNAME}
[OUTPUT]
Name stdout
Match EgyediProgram
[OUTPUT]
Name syslog
Match EgyediProgram
Host [graylog-szerver-ip]
Port 514
Mode tcp
Syslog_format rfc3164
Syslog_message_key message
Syslog_hostname_key hostname
[OUTPUT]
Name gelf
Match EgyediProgram
Host [graylog-szerver-ip]
Port 12201
Mode udp
Compress false
Gelf_Short_Message_Key message
Gelf_Host_Key hostname
stdout kimenete
[0] EgyediProgram: [[1712658673.000000000, {}], {"message"=>"[log_bejegyzes]", "hostname"=>"[Windows_host_neve]"}]
Syslog üzenet megfelelően megérkezik Graylog szerver gyűjtött logjai közé, látszik a teljes üzenet, helyes Windows gépnévvel.
Ha (még Windows-on, Wireshark-al) megnézem a hálózati forgalmat, ez megy át GELF-ként: {"version":"1.1", "short_message":"[log_bejegyzes]", "host":"[Windows_host_neve]", "timestamp":1712658673.000}
Ezt nem fogadja el a Graylog szerver, server.log-ban ez szerepel: 2024-04-09T10:33:29.335+02:00 WARN [GelfCodec] GELF message <d77d0960-f64b-11ee-812f-000c2929b7fa> (received from <[Windows_host_IP]:56029>) is missing mandatory "host" field.
Mit nézek be? Pláne hogy Linux GELF források mennek, Windows log értelmezés és átalakítás stdout szerint rendben és syslog üzenetként megfelelően át is megy. GELF-ben meg a meglévő host mező hiányára hivatkozik. Plusz infó hogy a kb harminc próbálkozásból két Windows GELF mégis átment (később vettem csak észre), de host neve helyett a Windows gép IP címe van a log-ban - valamilyen közbenső konfigurálási próba eredménye lehet.