0

logstash で Apache Tomcat とアプリケーション ログ ファイルを解析するためのパターンを定義すると、次のエラーが発生します。サンプル ログ ファイルは次のとおりです。

2014-08-20 12:35:26,037 INFO [routerMessageListener-74] PoolableRuleEngineFactory Executing the rule -->ECE Tagging Rule

設定ファイルは次のとおりです。

filter{
   grok{
    type => "log4j"
    #pattern => "%{TIMESTAMP_ISO8601:logdate} %{LOGLEVEL:severity} \[\w+\[%              {GREEDYDATA:thread},.*\]\] %{JAVACLASS:class} - %{GREEDYDATA:message}"
    pattern => "%{TIMESTAMP_ISO8601:logdate}"

    #add_tag => [ "level_%{level}" ]
 }



   date {
        match => [ "logdate", "YYYY-MM-dd HH:mm:ss,SSS"]
   }
}

日付 {:level=>:error} の不明な設定 'timestamp'

4

1 に答える 1

0

あなたの投稿には、日付フィルターの設定「タイムスタンプ」が表示されません。以前のバージョンの日付フィルターにあったタイムスタンプ設定を使用したここの例から始めたのではないかと思います。新しいバージョンの logstash で一致設定を使用するように正しく修正しましたが、おそらく変更を保存していませんでした。上記のフィルターを logstash-1.5.3 で使用しても問題はありません。

ここに私の完全な設定ファイルがあります。注: まだテスト中ですが、既存のログ ファイルからインポートされた Log4J ログ メッセージを使用して JBoss ログをインポートすることはできているようです。

input {
  tcp {
    type => "log4j"
    port => 4560
  }
  stdin {
    type => "log4j"
  }
}

filter {
  grok{
    type => "log4j"
    #pattern => "%{TIMESTAMP_ISO8601:logdate} %{LOGLEVEL:severity} \[\w+\[%{GREEDYDATA:thread},.*\]\] %{JAVACLASS:class} - %GREEDYDATA:message}"
    pattern => "%{TIMESTAMP_ISO8601:logdate}"

    #add_tag => [ "level_%{level}" ]
 }

  date {
    type => "log4j"
    match => [ "logdate", "YYYY-MM-dd HH:mm:ss,SSS"]
    exclude_tags => "_grokparsefailure"
  }

  # Catches normal space indented type things, probably could be removed b/c the other multiline should do everythign we need
  multiline {
    type => "log4j"
    tags => ["_grokparsefailure"] # exclude anything we already handled
    pattern => ".*"
    what => "previous"
    add_tag => "notgrok"
  }
}


output {
  gelf {
     host => "localhost"
     custom_fields => ["environment", "PROD", "service", "BestServiceInTheWorld"]
     }
  # Print each event to stdout.
  stdout {
    codec => json
  }
}
于 2015-08-21T12:03:19.633 に答える