2017-05-15 2 views
0

Ich benutze elasticsearch 5.x und Filebeat und möchte wissen, ob es eine Möglichkeit gibt, Datum (timestamp) direkt in filebeat zu analysieren (will logstash nicht verwenden) . Ich verwende json.keys_under_root: true und es funktioniert gut, aber das Problem ist, dass Timestamp (auf uns) als Zeichenfolge erkannt wird. Alle anderen Felder wurden automatisch als richtige Typen erkannt, nur diese nicht. enter image description hereWie analysiere ich Datum in Elasticsearch 5.x und Filebeat

Wie kann ich es als Datum zuordnen?

Antwort

3

Sie können Filebeat mit der ES Ingest Node-Funktion verwenden, um das Feld timestamp zu analysieren und den Wert auf das Feld @timestamp anzuwenden.

Sie würden in Elasticsearch eine einfache Pipeline einrichten, die ein date auf eingehende Ereignisse anwendet.

PUT _ingest/pipeline/my-pipeline 
{ 
    "description" : "parse timestamp and update @timestamp", 
    "processors" : [ 
    { 
     "date" : { 
     "field" : "timestamp", 
     "target_field" : "@timestamp" 
     } 
    }, 
    { 
     "remove": { 
     "field": "timestamp" 
     } 
    } 
    ], 
    "on_failure": [ 
    { 
     "set": { 
     "field": "error.message", 
     "value": "{{ _ingest.on_failure_message }}" 
     } 
    } 
    ] 
} 

Dann in Filebeat configure die Elasticsearch Ausgangsdaten an Ihre neue Pipeline zu drücken.

output.elasticsearch: 
    hosts: ["http://localhost:9200"] 
    pipeline: my-pipeline 
+0

Dies scheint eine sehr elegante Lösung, wird es versuchen und Antwort akzeptieren. Ich frage mich nur, ist es nicht möglich, Dateibeat-Vorlage zu ändern? – alphiii

+0

Es ist möglich, die Indexvorlage zu modifizieren, um das Feld 'timestamp' als Datum zu interpretieren (https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html). , aber dies ersetzt das Feld "@ timestamp" nicht durch den neuen Wert. Wenn Sie andere Daten mit '@ timestamp' haben, möchten Sie wahrscheinlich konsistent sein. –

+0

Was ich erlebt habe ist, dass Feld als ein Datum zu erkennen ist, dass Sie es nur in das richtige Format in der Protokolldatei (Beispiel: '" 2017-05-17T06: 07: 51.658998 + 00: 00 "') setzen müssen, das wird dann geparst als Datum. Aber ich googelte ein bisschen mehr und fand heraus, dass es keine direkte Methode gibt, um uns zu analysieren. Auflösung wird mein Datum gerade abgeschnitten (wenn Sie einen gefunden haben, lassen Sie es mich bitte wissen). – alphiii

Verwandte Themen