2

Logstash を使用して Glassfish 4 ログファイルを ElasticSearch シンクに送信しています。Logstash でメッセージ フィールドの末尾の改行を削除するにはどうすればよいですか?

私のイベントは次のようになります。

{
  "@timestamp" => "2013-11-21T13:29:33.081Z",
  "message" => "[2013-11-21T13:29:32.577+0000] [glassfish 4.0] [INFO] [] [javax.resourceadapter.mqjmsra.lifecycle] [tid: _ThreadID=142 _ThreadName=Thread-43] [timeMillis: 1385040572577] [levelValue: 800] [[\n  MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter stopped.]]\n",
  "@version" => "1",
  "tags" => ["multiline", "date_filtered"],
  "host" => "myhost",
  "path" => "../server.log"
} 
4

2 に答える 2

11

2 つ目の解決策は、Logstash の mutate フィルターを使用することです。フィールドの値を削除できます。

filter {
  # Remove leading and trailing whitspaces (including newline etc. etc.)
  mutate {
    strip => "message"
  }
}
于 2013-12-03T14:43:15.273 に答える
2

先頭に空白があるすべての行が前の行に属していることをlogstashに伝えるには、正しいパターンで複数行フィルターを使用する必要があります。この行を conf ファイルに追加します。

filter{
  ...
  multiline {
    type => "gflogs"
    pattern => "\[\#\|\d{4}"
    negate => true
    what => "previous"
  }
  ...
}

タイムスタンプを処理し、不規則な行をインデックスから除外する grok プラグインを含めることもできます。

同じマシン上の単一の logstash インスタンスで完全なスタックを表示

input {
  stdin {
    type => "stdin-type"
  }

  file {
    path => "/path/to/glassfish/logs/*.log"
    type => "gflogs"
  }
}

filter{
  multiline {
    type => "gflogs"
    pattern => "\[\#\|\d{4}"
    negate => true
    what => "previous"
  }

  grok {
    type => "gflogs"
    pattern => "(?m)\[\#\|%{TIMESTAMP_ISO8601:timestamp}\|%{LOGLEVEL:loglevel}\|%{DATA:server_version}\|%{JAVACLASS:category}\|%{DATA:kv}\|%{DATA:message}\|\#\]"
    named_captures_only => true
    singles => true
  }

  date {
    type => "gflogs"
    match => [ "timestamp", "ISO8601" ]
  }

  kv {
    type => "gflogs"
    exclude_tags => "_grokparsefailure"
    source => "kv"
    field_split => ";"
    value_split => "="
  }
}

output {
  stdout { codec => rubydebug }
  elasticsearch { embedded => true }
}

これは私にとってはうまくいきました。logstash-usergroup のこの投稿もご覧ください。また、優れた最新のログスタッシュの本についてアドバイスすることもできます。これは、logstash 作成者の作業をサポートする良い方法でもあります。

JUG-Berlinのイベントでお会いしましょう!

于 2013-12-03T10:21:43.060 に答える