6

誰かが私を助けてくれることを願っています!

logstashについて質問があります。次の日付を成功させました: 26/Jun/2013:14:00:26 +0200

次に、この日付をイベントの @timestamp として使用します。ご存じのように、logstash は自動的にタイムスタンプを追加します。

logstash が追加しているタイムスタンプを置き換えるには、日付フィルターを使用できます。次の日付フィルターを追加しました: match => [ "date", "dd/MMM/YYYY:HH:mm:ss Z"]

しかし、何らかの理由で、それは機能しません。テストしてみると、logstash が自分のタイムスタンプを追加しているだけであることがわかりました。

コード:

grok {
    type => "log-date"
    pattern => "%{HTTPDATE:date}"
}

date{
    type => "log-date"
    match => [ "date", "dd/MMM/YYYY:HH:mm:ss Z"]
}

これを行う必要があるため、elasticsearch にイベントを追加できます。

前もって感謝します!

4

2 に答える 2

8

次のアプローチを使用しました。

# strip the timestamp and force event timestamp to be the same.
# the original string is saved in field %{log_timestamp}.
# the original logstash input timestamp is saved in field %{event_timestamp}.
grok {
  patterns_dir => "./patterns"
  match => [ "message", "%{IRODS_TIMESTAMP:log_timestamp}" ]
  add_tag => "got_syslog_timestamp"
  add_field => [ "event_timestamp", "%{@timestamp}" ]
}

date {
  match => [ "log_timestamp", "MMM dd HH:mm:ss" ]
}

mutate {
        replace => [ "@timestamp", "%{log_timestamp}" ]
}

私の問題は、@timestamp が置き換えられたとしても、最初にそれを ISO8601 互換の形式に変換して、他のプログラムが "event_timestamp" に存在するタイムスタンプのように解釈に問題がないようにすることです。

     "@timestamp" => "Mar  5 14:38:40",
       "@version" => "1",
           "type" => "irods.relog",
           "host" => "ids-dev",
           "path" => "/root/logstash/reLog.2013.03.01",
            "pid" => "5229",
          "level" => "NOTICE",
  "log_timestamp" => "Mar  5 14:38:40",
"event_timestamp" => "2013-09-17 12:20:28 UTC",
           "tags" => [
    [0] "got_syslog_timestamp"
]

年情報があるので簡単に変換できます...私の場合、「パス」(ファイル名)属性から解析する必要があります...それでも、convert_to_iso8901 => @はないようですタイムスタンプ ディレクティブ。

とにかくこれがあなたの問題に役立つことを願っています! :)

于 2013-09-17T12:43:36.800 に答える