2016-08-01 25 views
1

Ich erhalte die Web-Service-Daten sagen aus Twitter und Protokollierung in Datei und dort, nachdem ich senden müssen, dass die Daten so Logstash als gleich sein indexiert zu Elasticsearch.Logstash: Parsing versagt beim Parsen Json-Daten über Web-Service erhalten wie Twitter/Facebook usw.

ich unter Config bin mit und schenkt jsonparsefailure mit Ausnahme als

JSON parse failure. Falling back to plain-text {:error=>#> LogStash::Json::ParserError: Unexpected character (':' (code 58)): expected a >valid value (number, String, array, object, 'true', 'false' or 'null')

Dateien Meine logstash conf wie folgt aussieht:

input 
    { 
     file 
     { 
      path => ["/mnt/volume2/ELK_Prashant/at/events.json"] 
      codec => json 
      type => json 
     start_position => "beginning" 
      sincedb_path => "/dev/null" 
     } 
    } 
    output 
    { 
     stdout { codec => rubydebug } 
    } 

und Daten in events.json Referenz sein kann von https://dev.twitter.com/rest/reference/get/search/tweets mit einige probe wie folgt: events.json

[ 
{ "location": "LA, CA", 
     "follow_request_sent": null, 
     "profile_link_color": "0084B4", 
     "is_translator": false, 
     "id_str": "137238150", 
     "entities": { 
      "url": { 
      "urls": [ 
       { 
       "expanded_url": null, 
       "url": "" 
       } 
      ] 
      } 
     } 
} 
] 
+0

In Ihrer 'events.json' Datei ist jedes JSON Ereignis in einer einzigen Zeile ohne Zeilenvorschubzeichen in ihm? – Val

Antwort

1

Aus Ihrer Beispieldatei events.json ist klar, dass Sie ein komplettes JSON-Objekt als Eingabe verwenden, um das Plugin file logstash, aber das Plugin geht standardmäßig davon aus, dass jedes Ereignis einzeilig sein wird und nur deshalb neu erkennen kann Ereignisse kommen und verfolgen die aktuelle Position.

So sollte Ihre Eingabedatei wie folgt aussehen, wobei jedes Ereignis durch Zeilenendmarke getrennt

{"location":"LA, CA","follow_request_sent":null,"profile_link_color":"0084B4","is_translator":false,"id_str":"137238150","entities":{"url":{"urls":[{"expanded_url":null,"url":""}]}}} 
{"location":"LA, CA","follow_request_sent":null,"profile_link_color":"0084B4","is_translator":false,"id_str":"137238150","entities":{"url":{"urls":[{"expanded_url":null,"url":""}]}}} 
{"location":"LA, CA","follow_request_sent":null,"profile_link_color":"0084B4","is_translator":false,"id_str":"137238150","entities":{"url":{"urls":[{"expanded_url":null,"url":""}]}}} 

oder Sie haben mehrzeilige Codec oder Filter in der Eingangs Plugin zu verwenden. Weitere Informationen finden Sie unter here.