Logstash 構成ファイルを作成しています。
私はグロクフィルターを持っています。grok フィルターでの一致が正確にどのように機能するかを知りたいです。
logstash 側で 1 つの例を参照したところ、次のことがわかりました。
Ex log:55.3.244.1 GET /index.html 15824 0.043
以下のフィルターで解析されます。
filter {
grok {
match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
}
これは、ログ行全体を順番に一致させようとしているということですか? ログの行が異なります。それらは常に適切な枠組みにあるとは限りません。
以下のようなものです:
1. 11:10:15---somedata
2. 11:10:20---source--destination-- somedata
3. somedata
3 つのタイプの行すべてをキャプチャしたいのですが、別の一致フィルターを作成する必要がありますか? または、単一の一致で source、destination、somedata フィールドを個別にキャプチャしても問題ありませんか?
これに関する情報を求めています。
はい、私は正規表現と grok パターンの基本を理解しています。
line 1: timestamp source destination a=0,b=1,c=3,d=4
line 2: timestamp a=1,e=5, b=1
line 3: g=0
ログ ファイルにこれらの 3 行があり、b と g の値を持つ行をキャプチャしたいとします。私のマッチブロックはどのように見えますか?
match => message ["b=":variable_b,"g=":variable_g]
これは b と g ですべての行をキャプチャしますか?? b の場合、1 行と 2 行をキャプチャする必要があります。gの場合、3をキャプチャする必要があります。したがって、出力には3行すべてが含まれているはずです?? これはどのように機能しますか、それとも grokparse エラーをスローしますか??