1

概要:

私は Logstash - Grok とエラスティック検索を使用しています。私の主な目的は、最初に logstash でログを受け入れ、grok で解析し、ログのタイプに応じてタグをメッセージに関連付け、最後にそれを Elastic サーバーにフィードして、 Kibana でクエリを実行します。

このコードは既に作成していますが、Elastic Search でタグを取得できません。これは私の logstash confif ファイルです。

input {
  stdin {
    type => "stdin-type"
  }
}
filter {
  grok {
    tags    => "mytags"
    pattern => "I am a %{USERNAME}"
    add_tag => "mytag"
    named_captures_only => true
  }
}
output {
  stdout { debug => true debug_format => "json"}
  elasticsearch {}
}

どこが間違っていますか?

4

2 に答える 2

2

LogStash を手動で実行し (すでに実行している可能性があります)、構成/opt/logstash/bin/logstash -f $CONFIG_FILEファイルが有効であることを確認できます/opt/logstash/bin/logstash -f $CONFIG_FILE --configtest

スタンザを配列に入れる必要があるかもしれませんadd_tag

grok {
    ...
    add_tag => [ "mytag" ]
}

STDINまた、パイプ先が grok パターンと一致していない可能性もあります。grok が一致しない場合は、タグに追加されます_grokparsefailureこれらが表示される場合は、grok パターンが起動していないことを意味します。

これを行うより良い方法は...

input {
  stdin {
    type => 'stdin'
  }
}
filter {
  if [type] = 'stdin' {
    mutate {
     add_tag => [ "mytag" ]
    }
  }
}
output {
  stdout {
    codec => 'rubydebug'
  }
}

"mytag"これにより、標準入力から来るすべてのものにタグが追加されます。

于 2014-09-19T19:02:31.583 に答える