我们有一个程序,其中程序以遵循GELF规范的格式记录到.Json文件。
目前,这是使用HTTP发送到Graylog2服务器的。这可行,但由于HTTP的性质,存在显着的延迟,如果存在大量日志消息,则会出现问题。
我想将HTTP传送方式更改为UDP,以便“解雇并忘记”。
将日志写入以下文件:
{ "short_message": "<message>", "host": "<host>", "full_message": "<message>", "_extraField1": "<value>", "_extraField2": "<value>", "_extraField3": "<value>" }
目前的配置是:
<Extension json>
Module xm_json
</Extension>
<Input jsonLogs>
Module im_file
File '<File Location>'
PollInterval 5
SavePos True
ReadFromLast True
Recursive False
RenameCheck False
CloseWhenIdle True
</Input>
<Output udp>
Module om_udp
Host <IP>
Port <Port>
OutputType GELF_UDP
</Output>
使用此设置,部分json日志消息将添加到GELF消息的“message”字段中,并发送到服务器。
我尝试添加`exec parse_json()行,但这只会导致除short_message和full_message之外的所有字段都被排除。
我不确定如何正确配置。即使只是将完整的日志消息添加到字段也是可取的,因为我可以在服务器端添加提取器。
答案 0 :(得分:0)
您需要Exec parse_json()
才能让GELF_UDP生成正确的输出,但不清楚message
和full/short_message
的具体问题是什么。
您可以尝试的其他选项只是通过om_tcp
发送日志。在这种情况下,您不需要使用OutputType GELF_TCP
,因为它已经格式化了。