1

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

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 

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

4

1 回答 1

1

您是否尝试在 grok 匹配后添加一个 mutate

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

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

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

于 2015-01-16T12:25:47.587 回答