filebeatで吐き出したjsonをlogstashで再度取り込むという処理をしています。
その際、grokfilterでjsonより前の情報をとったあと、json部分にjsonフィルターを適用しますがその場合、他のフィールドが削除されてしまうようです。
これを回避する方法はありますか?
https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html#plugins-filters-json-tag_on_failure
grok {
patterns_dir => ["/etc/logstash/patterns"]
match => {"message" => "%{PATTERN}"}
}
json {
source => "json_string"
}
PATTERN %{TIMESTAMP_ISO8601}\s{name=%{IPORHOST:rhost.rp}}\s+%{TIMESTAMP_APPS:timestamp_APPS}\s%{GREEDYDATA:json_string}
tsgkdt
(tsgkdt)
February 26, 2020, 1:22pm
2
手元にあったLogstash7.5でgrokとjsonを使って確認してみましたが、他のフィールドが消えるというような状況を再現できませんでした。
jsonフィルターで展開した後の項目名が重複しているということはありませんか?
重複していると、jsonフィルターで展開した項目がルートにきたとき、上書きされてしまうため。
By default, it will place the parsed JSON in the root (top level) of the Logstash event
jsonフィルターでtargetを指定してみて、gorkで展開された他フィールド、あるいはメタ情報のフィールドが残っているかどうか、output { stdout{} } で確認するのはどうでしょうか?
filter {
json {
source => "json_string"
target => "target_test" # <-展開先を指定することで上書きを避ける
}
}
少しでも何かヒントがあれば幸いです。
再度実施確認したところ、見間違えでした。。
大変申し訳ございませんでした。
system
(system)
Closed
March 26, 2020, 2:10am
4
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.