Ich habe mit mir folgenden unten Art von Json in Elasticsearch abgeladen werden filebeat {"@timestamp":"2017-02-10T06:30:51.424Z","beat":{"hostname":"myhostname","name":"mydevice-logger","version":"5.2.0"},"fields":{"device_type":"mydevice","env":"staging"},"metricset":{"module":"system","name":"cpu","rtt":211},"system":{"cpu":{"cores":4,"idle":{"pct":0.000000},"iowait":{"pct":0.000000},"irq":{"pct":0.000000},"nice":{"pct":0.000000},"softirq":{"pct":0.000000},"steal":{"pct":0.000000},"system":{"pct":0.000000},"user":{"pct":0.000000}}},"tags":["automata","box"],"type":"metricbeat-test-log"}
wie aus json kommenden Zeitstempel-Feld in logstash außer Kraft zu setzen
meine logstash (Version 5.1.1) config enthält, Eingang verwenden, Filter und eine Ausgabe wie unten -
input {
beats {
port => 5046
codec => json
}
}
filter {
if ...{}
else if [type] == "metricbeat-test-log" {
date {
match => ["@timestamp", "ISO8601"]
}
}
}
}
output {
if ...{}
else if [type] == "metricbeat-test-log" {
stdout { codec => rubydebug }
}
}
der Typ ist richtig aber die Datumsfilter funktioniert nicht. Die @timestamp
übernimmt schließlich immer den aktuellen Zeitstempel. Ich möchte es durch Original @timestamp
ersetzen, das in json vorhanden ist.
Verwenden Sie wirklich FileBeat, um die JSON-Daten von Metricbeat in Elasticsearch zu schreiben? –
Ja, der Grund ist ein Offline-Gerät. Ich sammle Metricbeat Log und setzen sie in elastische Suche –
, obwohl ich einfach ein Python-Skript verwenden kann, um die gesamte JSON in ES Dump jedoch finde ich mit filebeat praktischer für meinen Fall –