2017-12-23 5 views
1

Ich versuche, Protokolle von json informieren zu lesen und zu spucken das Ergebnis mit logstash meine JSON-Datei nach stdout sich wie folgt:Parse Json Fehler Logstash

Ich frage mich, wie würde ich unter json analysieren

{"shoppers" : [ 
{ 
"type": "login", 
"source": "user", 
"triggered_at": "Login Screen", 
"triggered_by": "Login Button", 
"api_url": "<URL>", 
"username": "Shopper123", 
"timestamp": "17.04.2017 13:37:57" 
}, 
{ 
"type": "logout", 
"source": "user", 
"triggered_at": "Account Screen", 
"triggered_by": "User Pressed Logout Button", 
"api_url": "<URL>", 
"username": "Shopper123", 
"timestamp": "17.04.2017 13:37:57" 
} 
]} 

meine logstash conf Beispieldatei unten dargestellt: Wie Sie lese mich von s3 Eimern sehen können, und ich json Filter verwenden, aber das Ergebnis zeigt mich immer _parsejsonerror

input { 
    s3 { 
     access_key_id => '<access_key>' 
     secret_access_key => '<secret_key>' 
     bucket => 'some-bucket' 
     region => 'eu-west-2' 
     type => 'shopper_app' 
     delete => true 
     sincedb_path => "/home/user/logstash/last-s3-file" 
     codec => json_lines 
    } 
} 


filter { 

    json { 
     source => "message" 
     add_field => ["type", "%{[message][type]}"] 
    } 
} 



output 
{ 
    stdout {codec => rubydebug} 
} 

Antwort

0

Eigentlich habe ich das Problem gelöst, dass das Problem auf eine fehlerhafte JSON-Datei zurückzuführen ist. Die JSON-Datei sollten keine neuen Zeilen enthalten sie sein sollte wie folgt:

[{"type": "login","source": "user","triggered_at": "Login Screen","triggered_by": "Login Button","api_url": "<URL>","username": "Shopper123","timestamp": "17.04.2017 13:37:57"},{"type": "logout","source": "user","triggered_at": "Account Screen","triggered_by": "User Pressed Logout Button","api_url": "<URL>","username": "Shopper123","timestamp": "17.04.2017 13:37:57"}] 

Dank