Die Suche nach unterschiedlichen Werten in einem Feld ist einfacher als ihr denkt.
Angenommen, ihr wollt im Feld „error_code“ nur die Codes 400, 402, 404, und 406 lokalisieren.
Es ist wirklich mühsam, ein Feld-Wert-Paar nach dem anderen eingeben zu müssen, nur um nach einer Liste von Werten im gleichen Feld zu suchen. Aber genau das musstet ihr vor Splunk Version 6.6.0. tun. Ihr musstet jedes Feld-Wert-Paar als separate OR-Bedingung angeben.
...error_code=400 OR error_code=402 OR error_code=404 OR error_code=406...
Eine der wichtigsten Verbesserungen des Suchbefehls ist der IN-Operator. Mit dem IN-Operator könnt ihr das Feld und eine Liste von Werten angeben. Beispiel:
... error_code IN (400, 402, 404, 406) | ...
Da der Suchbefehl am Anfang einer Suchzeichenfolge implizit verwendet wird, müsst ihr nur einen Feldnamen und eine Liste von Werten angeben. Die Syntax ist ganz simpel:
field IN (value1, value2, ...)
Wichtig: Der IN-Operator muss in Großbuchstaben eingegeben werden.
Ihr könnt in der Werteliste auch einen Platzhalter verwenden, um nach ähnlichen Werten zu suchen. Beispiel:
... error_code IN (40*) | ...
Diese Suche nimmt das Feld error_code in euren Events unter die Lupe und gibt alle Events mit einem Code zurück, der mit 40 beginnt.
Nicht schlecht, oder?
Im Zusammenhang mit dem Suchbefehl wird diese Funktion „IN-Operator“ genannt. Im Zusammenhang mit den Befehlen eval und where wird sie als „IN-Funktion“ implementiert.
Um „IN“ mit den Befehlen eval und where zu verwenden, müsst ihr „IN“ als eval-Funktion einsetzen. In der Splunk-Dokumentation wird das „IN-Funktion“ („in function“) genannt.
Syntax und Verwendung sind etwas anders als beim Suchbefehl.
Hier seht ihr die unterstützten Syntaxoptionen:
...| eval new_field=if(IN(field,"value1","value2", ...), "value_if_true","value_if_false")
...| where field IN("value1","value2", ...)
...| where IN(field,"value1","value2", ...)
Hinweis: Im Gegensatz zum IN-Operator kann die IN-Funktion in Groß- oder Kleinbuchstaben angegeben werden. In diesem Blog wird sie zur Verdeutlichung in der Syntax und in Beispielen in Großbuchstaben dargestellt.
Beginnen wir mit dem Befehl where, weil das relativ einfach ist.
Im folgenden Beispiel wird der Befehl where verwendet, um IN=TRUE zurückzugeben, wenn einer der Werte im Feld status mit einem der Werte in der Liste übereinstimmt. Die Werte im Feld status sind HTTP-Statuscodes. Da es sich bei den Codes um Zeichenkettenwerte (keine numerischen Werte) handelt, müsst ihr jeden Wert in Anführungszeichen setzen.
... | where status IN("400", "401", "403", "404", "406")
Ihr könntet dieses Beispiel auch folgendermaßen angeben:
... | where IN(status,"400", "401", "403", "404", "406")
Mit dem Befehl eval wird die IN-Funktion etwas anders verwendet als mit dem Befehl where. Der Befehl eval akzeptiert nämlich keine booleschen Werte. Daher müsst ihr die IN-Funktion innerhalb einer anderen Funktion verwenden, welche die von der IN-Funktion zurückgegebenen booleschen Werte verarbeiten kann.
Schauen wir uns ein Beispiel an, in dem ihr die IN-Funktion als ersten Parameter für die IF-Funktion verwenden könnt. Wir verwenden die Datei access.log, die in den Daten des Tutorials zur Suchfunktion enthalten ist.
Im folgenden Beispiel wird die IN-Funktion innerhalb der IF-Funktion verwendet, um das Aktionsfeld zu bewerten. Anschließend führt der Befehl „stats“ eine Berechnung aus.
sourcetype=access_combined_wcookie
| eval activity=if(IN(action, "addtocart","purchase"),"Purchase Related","Other")
| stats count by activity
Bei dieser Suche passiert Folgendes:
Die Ergebnisse werden auf der Registerkarte Statistics angezeigt. Hier könnt ihr jetzt ablesen, wie viele Events kaufbezogene Aktivitäten und wie viele andere Aktivitätstypen aufweisen.
Diese Ergebnistabelle ist super. Ihr könnt die Ergebnisse auch in einem Diagramm anzeigen. Dazu wechselt ihr einfach auf die Registerkarte Visualization und ändert den Diagrammtyp in „Kreisdiagramm“ (Pie Chart).
Ihr könnt diese Suche als Dashboard Panel oder Report speichern.
Weitere Informationen findet ihr in den folgenden Splunk-Dokumentationen (alle auf Englisch):
----------------
*Dieser Artikel wurde aus dem Englischen übersetzt und editiert. Den Originalblogpost findet ihr hier: Smooth operator | Searching for multiple field values.
Die Splunk-Plattform beseitigt die Hürden zwischen Daten und Handlungen, damit Observability-, IT- und Security-Teams in ihren Unternehmen für Sicherheit, Resilienz und Innovation sorgen können.
Splunk wurde 2003 gegründet und ist ein globales Unternehmen – mit mehr als 7.500 Mitarbeitern, derzeit über 1.020 Patenten und einer Verfügbarkeit in 21 Regionen rund um den Globus. Mit seiner offenen, erweiterbaren Datenplattform, die die gemeinsame Nutzung von Daten in beliebigen Umgebungen unterstützt, bietet Splunk allen Teams im Unternehmen für jede Interaktion und jeden Geschäftsprozess End-to-End-Transparenz mit Kontext. Bauen auch Sie eine starke Datenbasis auf – mit Splunk.