次の形式の JSON があります。
{
"SOURCE":"Source A",
"Model":"ModelABC",
"Qty":"3"
}
logstash を使用してこの JSON を解析しようとしています。基本的に、logstash の出力を、kibana を使用して分析できるキーと値のペアのリストにしたいと考えています。これは箱から出してできると思いました。多くの読書から、私は grok プラグインを使用する必要があることを理解しています (json プラグインの目的はまだわかりません)。しかし、すべてのフィールドでイベントを取得できません。複数のイベントを取得します (JSON の各属性に対しても 1 つ)。そのようです:
{
"message" => " \"SOURCE\": \"Source A\",",
"@version" => "1",
"@timestamp" => "2014-08-31T01:26:23.432Z",
"type" => "my-json",
"tags" => [
[0] "tag-json"
],
"host" => "myserver.example.com",
"path" => "/opt/mount/ELK/json/mytestjson.json"
}
{
"message" => " \"Model\": \"ModelABC\",",
"@version" => "1",
"@timestamp" => "2014-08-31T01:26:23.438Z",
"type" => "my-json",
"tags" => [
[0] "tag-json"
],
"host" => "myserver.example.com",
"path" => "/opt/mount/ELK/json/mytestjson.json"
}
{
"message" => " \"Qty\": \"3\",",
"@version" => "1",
"@timestamp" => "2014-08-31T01:26:23.438Z",
"type" => "my-json",
"tags" => [
[0] "tag-json"
],
"host" => "myserver.example.com",
"path" => "/opt/mount/ELK/json/mytestjson.json"
}
multiline コーデックまたは json_lines コーデックを使用する必要がありますか? もしそうなら、どうすればそれを行うことができますか? 独自の grok パターンを作成する必要がありますか、それとも、上記の 1 つのイベントに対して取得した key:value ペアを持つ ONE EVENT を提供する JSON 用の一般的なものがありますか? これを明らかにするドキュメントは見つかりませんでした。どんな助けでも大歓迎です。私のconfファイルを以下に示します:
input
{
file
{
type => "my-json"
path => ["/opt/mount/ELK/json/mytestjson.json"]
codec => json
tags => "tag-json"
}
}
filter
{
if [type] == "my-json"
{
date { locale => "en" match => [ "RECEIVE-TIMESTAMP", "yyyy-mm-dd HH:mm:ss" ] }
}
}
output
{
elasticsearch
{
host => localhost
}
stdout { codec => rubydebug }
}