2017-02-16 3 views
0

私は1つの行にすべてのイベントが含まれていLogstashとJSONファイルを読み込む方法を把握しようとしています読み方Logstash:シングルラインJSON

サンプル入力:

{"metadata": {"metadata fields": "metadata data"},"results": [{"events":[{"event fields": "event data"}, {"event fields": "event data"}}],"field": {"more fields": "data"}} 

拡張JSON:

{ 
    "metadata": { 
     "metadata fields": "metadata data" 
    }, 
    "results": [{ 
      "events": [{ 
        "event fields": "event data" 
       }, { 
        "event fields": "event data" 
       } 
      }], "field": { 
      "more fields": "data" 
     } 
    } 

私は、印刷が正常に起動した後、それがハングLogstashを実行したときだけ、しかしJSONコーデックを使用して試してみました。私が試したもう一つの試みは、JSONの終わりに改行を追加することですが、ログのソースを制御することができないため、これは実際には動作しません。

Logstashでこれらのログを正しく解析する方法はありますか?以下は私の設定ファイルです。前もって感謝します!

コンフィグ

input { 
    file { 
     path => "C:/Folder/*.json" 
     sincedb_path => "C:\nul" 
     start_position => "beginning" 
     codec => "json" 
     type => "data" 
    } 
} 
output { 
    stdout { codec => rubydebug } 
} 
+0

にJSONフィルタを使用して先に行くことができます。それが動作しない理由はおそらく理由。 – Fairy

+0

あなたは、私はそれを解析することができますどのように任意のアイデアを持っていますか? – Mielzus

+0

いくつかの精巧な 'grok'フィルタを仕事をします。 – Fairy

答えて

0
あなたの入力は角括弧が欠落している

、それは1を持っている必要があります。

{"metadata": {"metadata fields": "metadata data"},"results": [{"events":[{"event fields": "event data"}, {"event fields": "event data"} HERE ] }],"field": {"more fields": "data"}} 

不足している角括弧は、すべての入力ファイルに同じイベントの前にある場合は、あなたはgsubを試すことができます。例えば

:パターンと同様のものに置き換えられ、しかしでは、この変異した後、適切な場所に[を追加:

filter { 
mutate { 
    gsub => [ "message", "\"}}\],\"field\"\:", "\"}\]}\],\"field\"\:" ] 
} 
} 

これは"}}]、" フィールド」と一致します。あなたは有効なJSONではありませんメッセージ。

関連する問題