Ich analysiere eine Reihe von Daten in einen ELK-Stack für einige Nicht-Tech-Leute zu sehen. Als Teil davon möchte ich alle Felder außer einer bestimmten bekannten Teilmenge von Feldern aus den Ereignissen entfernen, bevor ich sie in ElasticSearch sende. ein neues Feld wird hinzugefügt, um die Eingangsdaten (die Daten gezogen, da oft zu jeder Zeit in diesem Fall Logstash Filter remove_field für alle Felder außer einer angegebenen Liste von Feldern
filter {
mutate {
remove_field => [ "throw_away_field1", "throw_away_field2" ]
}
}
passieren kann, ist:
kann ich angeben, jedes Feld explizit wie so in einem mutiert Filter fallen aus einer Warteschlange und von mehreren Systemen für mehrere Zwecke verwendet) würde eine Aktualisierung der Filterung erforderlich sein, was zusätzlichen Aufwand bedeutet, der nicht benötigt wird. Ganz zu schweigen von der Tatsache, dass einige sensible Daten zwischen der Aktualisierung der Eingangsströme und der Aktualisierung der Filterung bestanden haben.
Gibt es eine Möglichkeit, mit dem Logstash-Filter über jedes Feld eines Objekts zu iterieren, und remove_field, wenn es nicht in einer Liste von Feldnamen ist? Oder müsste ich einen benutzerdefinierten Filter schreiben, um dies zu tun? Grundsätzlich möchte ich für jedes einzelne Objekt nur 8 spezifische Felder behalten und absolut alles andere werfen.
Es scheint sehr minimal if ![field] =~ /^value$/
Typ Logik ist in der Datei logstash.conf verfügbar, aber ich sehe keine Beispiele, die über die Felder selbst in einem for each
Stil iterieren und den Feldnamen mit einer Liste von Werten vergleichen .
Antwort:
Nach logstash auf 1.5.0 aktualisieren zu können, Plugin-Erweiterungen verwendet werden, wie Pflaume, endete die Lösung wie diese aufzublicken:
filter {
prune {
interpolate => true
whitelist_names => ["fieldtokeep1","fieldtokeep2"]
}
}
, die wie genau sieht, was ich suche. Ich werde es versuchen und Bericht erstatten ... – redstonemercury
Ich musste Logstash aktualisieren, um diese Funktion zu bekommen, daher die Verzögerung, aber das tut genau das, was ich suche. Danke für die schnelle Antwort! Akzeptiert :) – redstonemercury