0

すべてのログに対して「一般的な」grok フィルターを持つ logstash のフィルターを作成しようとしています。フィールドが存在する場合は、別の grok を実行します。

私が使用している最初のグロックは

grok {
match => [
"message", "....%{NOTSPACE:name} %{GREEDYDATA:logcontent}" 
]
}

これはうまく機能しています。しかし、「name」フィールドが「foo」の場合、これをさらにフィルタリングできるようにしたい

if [name] == "foo" {
grok {
match => [
"message", ".....%{NOTSPACE:name} %{NOTSPACE:object1} %{NOTSPACE:object2}" 
]
}

このオプションを試しましたが、うまくいきませんでした。何かご意見は?

4

1 に答える 1

0

最も簡単な方法は、何かを理解する前に、メッセージに対してパターン マッチを使用することです。

例えば:

if [message] =~ /....foo/ {
   // foo specific grok here
} else {
   // general grok
}
于 2016-02-18T17:41:42.600 に答える