6

次の形式の 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 }
}
4

2 に答える 2