NXLog:Json输入到GELF UDP输出

时间:2018-01-09 10:13:32

标签: json graylog2 nxlog gelf

我们有一个程序,其中程序以遵循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之外的所有字段都被排除。

我不确定如何正确配置。即使只是将完整的日志消息添加到字段也是可取的,因为我可以在服务器端添加提取器。

1 个答案:

答案 0 :(得分:0)

您需要Exec parse_json()才能让GELF_UDP生成正确的输出,但不清楚messagefull/short_message的具体问题是什么。

您可以尝试的其他选项只是通过om_tcp发送日志。在这种情况下,您不需要使用OutputType GELF_TCP,因为它已经格式化了。