2017-07-18 4 views
0

イベントのタイムスタンプをメッセージのタイムスタンプに置き換えることができません。ここに詳細があります。Logstash:メッセージからタイムスタンプを交換できません。

サンプルログ:

20170119 144002.184140 0005B9427CA0_CU_1 user.notice ProcMon:: 10.220.0.13 is valid IP Address 

パターン:

CSSYSLOGTIMESTAMP %{YEAR}%{MONTHNUM}%{MONTHDAY}[T ]%{HOUR}%{MINUTE}%{SECOND}.%{NONNEGINT:MSEC} 

フィルタ:

filter { 
    grok { 
    patterns_dir => ["/root/logstash-5.5.0/patterns"] 
    match => { "message" => "^%{CSSYSLOGTIMESTAMP:syslog_timestamp} %{DATA:syslog_hostname} %{DATA:syslog_level} %{DATA:app_name}: %{GREEDYDATA:syslog_message}" } 
    } 

    date { 
    match => ["syslog_timestamp" , "yyyyMMdd HHmmss.SSS"] 
    target => "@timestamp" 
    add_field => { "debug" => "timestampMatched"} 
    } 
} 

Logstashデバッグ出力:

[2017-07-18T10:25:01,152][DEBUG][logstash.pipeline  ] filter received {"event"=>{"@timestamp"=>2017-07-18T04:54:55.170Z, "offset"=>747452, "@version"=>"1", "input_type"=>"log", "beat"=>{"hostname"=>"node1", "name"=>"node1", "version"=>"5.5.0"}, "host"=>"node1", "source"=>"/root/samplelogs/Debug.log", "message"=>"20170119 144002.184140 0005B9427CA0_CU_1 user.notice ProcMon:: 10.220.0.13 is valid IP Address", "type"=>"log", "tags"=>["beats_input_codec_plain_applied"]}} 
[2017-07-18T10:25:01,154][DEBUG][logstash.filters.grok ] Running grok filter {:event=>2017-07-18T04:54:55.170Z node1 20170119 144002.184140 0005B9427CA0_CU_1 user.notice ProcMon:: 10.220.0.13 is valid IP Address} 
[2017-07-18T10:25:01,159][DEBUG][logstash.filters.grok ] Event now: {:event=>2017-07-18T04:54:55.170Z node1 20170119 144002.184140 0005B9427CA0_CU_1 user.notice ProcMon:: 10.220.0.13 is valid IP Address} 
[2017-07-18T10:25:01,165][DEBUG][logstash.pipeline  ] output received {"event"=>{"MSEC"=>"184140", "offset"=>747452, "input_type"=>"log", "source"=>"/root/samplelogs/Debug.log", "message"=>"20170119 144002.184140 0005B9427CA0_CU_1 user.notice ProcMon:: 10.220.0.13 is valid IP Address", "type"=>"log", "syslog_message"=>"10.220.0.13 is valid IP Address", "tags"=>["beats_input_codec_plain_applied", "_dateparsefailure"], "app_name"=>"ProcMon:", "@timestamp"=>2017-07-18T04:54:55.170Z, "syslog_hostname"=>"0005B9427CA0_CU_1", "syslog_timestamp"=>"20170119 144002.184140", "@version"=>"1", "beat"=>{"hostname"=>"node1", "name"=>"node1", "version"=>"5.5.0"}, "host"=>"node1", "syslog_level"=>"user.notice"}} 

すべてのフィールドが正しく抽出されているのがわかります。メッセージのタイムスタンプはsyslog_timestampフィールドに作成されます。しかし、@タイムスタンプはメッセージタイムスタンプに置き換えられていません。 私は何が間違っていますか?ありがとう。

答えて

1

問題が見つかりました。私は3桁の小数点(SSS)までしか使用していませんでした。

"S: fraction of a second Maximum precision is milliseconds (SSS). Beyond that, zeroes are appended." 

しかし、フィルタを定義する際にはまだ6 Sを使用する必要があります。

+0

date.matchはgrok.matchのように動作しません。 date.matchにはパターンを正確に収めるために文字列全体が必要です。余分な文字は許されません。 – kubanczyk

関連する問題