如何将时间戳作为Grok Logstash中唯一的分隔符?

时间:2014-12-15 10:20:10

标签: grok logstash-grok

我有一个如下日志条目: -

2014-10-13 16:42:46,946 [1] DEBUG SolaceManager - Creating Solace session: Host=abc, 
VPN=xyz, User=indiana, ConnectRetries=-1, SendBlocking=True 

要使用grok解析它,我在logstash中使用了以下模式: -

%{TIMESTAMP_ISO8601:Logdate} \[%{NUMBER:ThreadId}\] %{WORD:LogLevel} ?%{GREEDYDATA:data}"

以上代码不起作用,我收到以下消息: -

1) @message= 2014-10-13 16:42:46,946 [1] DEBUG SolaceManager - Creating Solace session:
2) @message= Host=abc,
3) @message= User=indiana,
4) @message= ConnectRetries=-1,
5) @message= SendBlocking=True

这不是预期的,我需要一条消息: -

@message = 2014-10-13 16:42:46,946 [1] DEBUG SolaceManager - Creating Solace session: Host=abc, 
VPN=xyz, User=indiana, ConnectRetries=-1, SendBlocking=True 

换句话说,有没有办法确保只有时间戳作为分隔符?

1 个答案:

答案 0 :(得分:1)

你是否尝试在grok匹配之后添加一个mutate,如

grok {
    match => {
        "message" => "%{TIMESTAMP_ISO8601:Logdate} \[%{NUMBER:ThreadId}\] %{WORD:LogLevel} ?%{GREEDYDATA:data}"
    }
}

mutate {
        replace      => [ "@message", "%{message}" ]
        remove_field => [ "message" ]
}

这应该在@message字段中添加完整的消息