3

カスタム形式のログファイルがあります。日付フィールドは次のようになります。

Dec  4 23:59:21
Nov 21 23:59:21

logstash構成には、フィルター用に次のものがあります。

date {
    type => "custom"
    # tell it the format
    custom_timestamp => ["MMM  d HH:mm:ss", "MMM dd HH:mm:ss"]
    # locale didn't help
    locale => "en"
}
mutate{
    type => "custom"
    # replace the timestamp
    replace => ["@timestamp", "%{custom_timestamp}"]
}

これはおそらく、logstashタイムスタンプをログのカスタムタイムスタンプに置き換えます(テストするために、現在、古いログからタイムスタンプを埋め戻しています)。

デバッグフラグをオンにしてstdoutに出力すると、に@timestamp置き換えられcustom_timestampたことが表示されますが、インポートできないことを示すエラーメッセージが表示されます。

:exception=>java.lang.IllegalArgumentException: Invalid format: "Dec  4 23:59:21"

日付形式を変換するにはどうすればよいですか?

4

2 に答える 2

1

私が作業していたサンプルが間違っていることがわかりました。変異体の置換は必要ありません。構成は次のようになります。

date {
    type => "custom"
    # tell it the format
    custom_timestamp => ["MMM  d HH:mm:ss", "MMM dd HH:mm:ss"]
    # date format is english, computer might not be
    locale => "en"
}
mutate{
    type => "custom"
    #other mutations go here
}
于 2012-12-06T15:27:30.717 に答える
0

この投稿の2つの誤解:

  1. フォーマットにYEARがないため、Java例外が生成されます。したがって、日付を安全に解析できません。
  2. 他のアプリケーションに古いインポートされたログを一貫したタイムラインとして表示させたい場合は、mutateを実行する必要があります。それ以外の場合、古いログをすべてインポートすると、(インポート中に)数分間のイベントが集中して表示されます。

それ以外に、良い質問/回答、それは私が私の特定の問題に軌道に戻るのを助けました;)

于 2013-09-17T13:16:41.553 に答える