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 に答える