0

syslog の管理に logstash を使い始めました。テストするために、リモート マシンから簡単なメッセージを送信し、logstash で解析しようとしています。

コマンドライン経由で使用される唯一の Logstash 構成:

input {
        syslog {
                type => syslog
                port => 5514
        }
}

filter {
        grok {
                match =>  { "message" => "hello %{WORD:who}" }
                }
      }

output {
        stdout { }
        elasticsearch {
                host => "elk.example.com"
                cluster => "security"
                protocol => "http"
        }
}

ログを受け取り、それらは正しく解析されます (whoフィールドが生成されます)。同時に、tags含まれています_grokparsefailure

送信するテスト ログは ですhello rambo3。私はそれを次のように見ています

2015-01-29T09:27:48.344+0000 10.242.136.232 <13>1 2015-01-29T10:27:48.113612+01:00 AA1.example.com testlog.txt - - - hello rambo3

grok デバッガーも同意します。

ここに画像の説明を入力

_grokparsefailureがタグに追加されるのはなぜですか?

興味深いことに、ピュア経由で送信された同じデータはtcp、同じフィルターによって正しく解析されます (_grokparsefailureタグにはありません)。

4

1 に答える 1

2

独自の_grokparsefailureフィルターで追加するものではありませんgrok。入力を使用する場合、ここに記載されているようにsyslog、syslog 形式はRFC3164に従う必要があります。

通常、Sysloginput はログを解析し、対応するfieldlikeを追加しますlog severity。だから、その中にグロクアクションがあります。ただし、リモート サーバーから送信するログはRFC 5424形式です。そのため、logstash はログを解析して_grokparsefailureタグを追加することができません。

于 2015-01-30T02:26:09.887 に答える