Ich habe es mit Protokolldateien zu tun, die Teile enthalten wie:
538,486K of 1,048,576K
Diese stellen die Speichernutzung (Java-Heapspeicher) dar, die in einem für Menschen lesbaren Format gerendert wird. Ich möchte diese Zahlen in Diagrammen in Kibana verfolgen. Zu diesem Zweck würde ich gerne Logstashs Grok-Filter verwenden, um diese Zahlen zu analysieren, aber ich weiß nicht, wie ich mit dem Tausendertrennzeichen umgehen soll (dh es ignorieren soll).
Idealerweise hätte ich etwas, das auch mit dem "K" umgehen und mit tausend multiplizieren kann. Zum jetzigen Zeitpunkt ist mir nicht bekannt, dass sich ein System in einer anderen Einheit als Kilobyte anmeldet, aber ich würde es vorziehen, diese Annahme nicht zu machen.
Antworten:
Der
mutate
Filter ermöglicht das Ersetzen von Text mit dergsub
Option.gsub
Es wird ein Array verwendet, in dem jedes Triplett von Werten Folgendes angibt:Es unterstützt technisch reguläre Ausdrücke, aber das brauchen wir in diesem Fall nicht.
Zuerst streifen wir die Kommas ab. Einfach genug.
Zweitens multiplizieren wir. Soll
K
mit 1000 multipliziert werden? Wenn ja, so scheint es mir , dass wir einfach ersetzenK
mit000
.Diese zusammenfassen:
Sie können bei Bedarf weitere Ersatzoptionen hinzufügen.
Je nach Ihren Umständen kann es
K
sein, dass Sie mit 1024 multiplizieren, was etwas komplizierter sein wird. Ich sehe keine sofort einsatzbereite Lösung, aber Sie können denruby
Filter verwenden, um einige Berechnungen durchzuführen .quelle
Ich denke, Rutters Antwort sollte in meinem Fall funktionieren. Folgendes habe ich getan, bevor ich es gelesen habe:
Ich vermute, es könnte prägnanter sein, aber es scheint zu funktionieren.
quelle