私はKafkaからJSON入力を受け取り、それをElasticsearch Outputに送るLogstash設定を持っています。私はKibanaを用いたELデータを表示するとき、それが後で新しい列に表示できるように、新しいフィールドとしてstatus
値を追加したいと思いLogstashネストJSON Parse
TrackingData: {
"path": "/hello/world",
"method": "GET",
"requestDateTime": "2017-11-07T16:12:02.635",
"duration": 5104684,
"status": 200
}
:JSON受信
は、以下の構造を有しています。これについては、Logstash設定にmutate
filter
を含める必要があることを理解しています。
status
の値をJSON構造体から外して新しいフィールドに入れるには、Rubyの文字列はどうすればよいですか?
マイLogstashの設定次のように現在、次のとおりです。メッセージはLogstashによって処理されると、私はroot_field
がKibanaで大丈夫解析され
input {
kafka {
bootstrap_servers => ["kafka:9092"]
topics => "test-topic"
group_id => "test-topic-group"
}
}
filter {
mutate {
add_field => {
"root_field" => "%{[message]}"
"status_field" => "%{[message][TrackingData][status]}"
}
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["elk:9200"]
}
見ることができます(私はJSONであることを証明するためにこのフィールドを追加しましたpar32)、status_field
はキバナに%{[message][TrackingData][status]}
と表示されます(つまり、解析文字列が正しくない必要があります)。
上記のJSON構造のうちstatus
の値を取得するには、解析文字列をどのように指定する必要がありますか?