2016-07-11 5 views
0
に正しく

変換されていませんが、私のJSONのログファイルですLogstashが続いてJSON

[ 
    { 
     "error_message": " Failed to get line from input file (end of file?).", 
     "type": "ERROR", 
     "line_no": "2625", 
     "file": "GTFplainText.c", 
     "time": "17:40:02", 
     "date": "01/07/16", 
     "error_code": "GTF-00014" 
    }, 
    { 
     "error_message": " Bad GTF plain text file header or footer line. ", 
     "type": "ERROR", 
     "line_no": "2669", 
     "file": "GTFplainText.c", 
     "time": "17:40:02", 
     "date": "01/07/16", 
     "error_code": "GTF-00004" 
    }, 
    { 
     "error_message": " '???' ", 
     "type": "ERROR", 
     "line_no": "2670", 
     "file": "GTFplainText.c", 
     "time": "17:40:02", 
     "date": "01/07/16", 
     "error_code": "GTF-00005" 
    }, 
    { 
     "error_message": " Failed to find 'event source'/'product detail' records for event source '3025188506' host event type 1 valid", 
     "type": "ERROR", 
     "line_no": "0671", 
     "file": "RGUIDE.cc", 
     "time": "15:43:48", 
     "date": "06/07/16", 
     "error_code": "RGUIDE-00033" 
    } 
] 

ログはJSONに既にあるので私の理解によると、私たちはlogstash構成のフィルタ部を必要としません。次は私のlogstashの設定

input { 
    file{ 
    path => "/home/ishan/sf_shared/log_json.json" 
    start_position => "beginning" 
    codec => "json" 
    } 
} 

で、出力構成は

output { 
    elasticsearch { 
    hosts => ["localhost:9200"] 
    sniffing => true 
    manage_template => false 
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" 
    document_type => "%{[@metadata][type]}" 
    } 
    stdout { codec => rubydebug } 
} 

あるしかし、私は、私は、インデックスを照会するときに、データを見ることができませんよと、それは、ESに行くのではありませんデータのように思えます。私は何が欠けていますか?

答えて

0

私は問題は、json codecは1行に完全なjsonメッセージを期待し、複数行のメッセージでは動作しないと思います。

マルチラインコーデックスを使用し、json filterを使用すると、回避できる可能性があります。複数行のコーデックの
の構成は次のようになります。

multiline { 
    pattern => "]" 
    negate => "true" 
    what => "next" 
} 

あなたはJSONフィルタに与えるために、1つの完全なJSONドキュメントを持っていますので]で始まらないすべての行は、次の行に再編成されます。

+0

回避策はありますか? –

+0

@IshanBhatt私は自分の答えを更新しました。 – baudsp

関連する問題