Splunk-Checkliste: Abfrage, SPL, RegEx und Befehle
Learn Stephen WattsIn dieser Splunk-Schnellreferenz werden wichtige Begriffe und Features, Grundlagen der Splunk-Suchsprache SPL sowie häufig verwendete Befehle und Funktionen von Splunk Cloud und Splunk Enterprise beschrieben.
Begriffe
Ereignisse (auch: Events)
Ein Ereignis besteht aus einem Satz von Werten, denen ein Zeitstempel zugeordnet ist. Es handelt sich um einen einzelnen Dateneintrag, der ein- oder mehrzeilig sein kann. Ein Ereignis kann ein
Textdokument, eine Konfigurationsdatei oder auch eine komplette Stack Trace-Datei etc. sein. Dies ist ein Beispiel für ein Ereignis in einem Weblog:
173.26.34.223 - - [01/ Mar/2021:12:05:27 -0700] “GET /trade/ app?action=logout HTTP/1.1” 200 2953
Ihr könnt auch Transaktionen für die Suche und Gruppierung von Ereignissen definieren, die konzeptionell zusammenhängen, jedoch über eine gewisse Zeitspanne stattfinden. Transaktionen können aus mehreren Schritten bestehende, geschäftliche Aktivitäten darstellen, beispielsweise alle Ereignisse im Zusammenhang mit einer einzelnen Kundensitzung auf der Website eines Online-Händlers.
Metriken
Ein Metrikdatenpunkt besteht aus einem Zeitstempel und einem oder mehreren Messwerten. Er kann auch Dimensionen beinhalten. Ein Messwert ist ein Metrikname und ein zugehöriger numerischer Wert. Dimensionen liefern weitere Informationen über die Messwerte. Beispiel für einen Metrikdatenpunkt:
Zeitstempel: 08-05-2020 16:26:42.025-0700
Messwert: metric_name:os.cpu. user=42.12, metric_name:max.size. kb=345
Dimensionen: hq=us-west-1, group=queue, name=azd
Metrikdatenpunkte und Ereignisse können gemeinsam durchsucht und korreliert werden, obwohl sie in separaten Indexarten gespeichert werden.
Als Host bezeichnet man das physische oder virtuelle Gerät, von dem ein Ereignis stammt. Darüber lassen sich alle Daten ermitteln, die von einem bestimmten Gerät stammen. Die Quelle ist der Name der Datei, des Verzeichnisses, des Datenstreams oder einer sonstigen Eingabe, aus der ein bestimmtes Ereignis stammt. Quellen werden als Sourcetypen klassifiziert. Diese sind entweder schon als bekannte Formate vordefiniert oder können vom Benutzer individuell definiert werden. Beispiele für gängige Sourcetypen sind HTTP-Webserverlogs und Windows-Ereignisprotokolle.
Host, Quelle und Sourcetyp
Ereignisse mit demselben Sourcetyp können aus unterschiedlichen Quellen stammen. Ereignisse aus der Datei
source=/var/log/messages
und von einem Syslog-Eingabeport
source=UDP:514
haben z. B. oftmals denselben Sourcetyp, nämlich
sourcetype=linux_syslog
Felder
Felder sind durchsuchbare Name-Wert-Paare, die Ereignisse voneinander unterscheiden. Nicht alle Ereignisse haben dieselben Felder und Feldwerte. Mit Feldern lassen sich individuell zugeschnittene Suchen erstellen, um exakt die gewünschten Ereignisse abzurufen. Wenn Splunk-Software bei der Indizierung und Suche Ereignisse verarbeitet, extrahiert die Software Felder auf der Grundlage von Definitionen in der Konfigurationsdatei und benutzerdefinierten Mustern.
Mit dem Feldextraktor-Tool könnt ihr bei der Suche reguläre Ausdrücke oder Trennzeichen wie Leerzeichen, Kommas oder andere Zeichen verwenden, um automatisch Feldextraktionen zu generieren und zu validieren.
Tags
Ein Tag ist ein Wissensobjekt, mit dem ihr nach Ereignissen suchen könnt, die bestimmte Feldwerte enthalten. Ihr könnt einer Feld-Wert-Kombination, einschließlich Eventtypen, Hosts, Quellen und Sourcetypen, ein oder mehrere Tags zuordnen. Mit Tags könnt ihr zusammengehörige Feldwerte gruppieren oder abstrakte Feldwerte wie IP-Adressen oder IDs nachverfolgen, indem ihr ihnen aussagekräftige Bezeichnungen zuordnet.
Indizierungs- und Suchzeitpunkt
Bei der Indexverarbeitung (also zum Indizierungszeitpunkt) werden Daten aus einer Quelle auf einem Host gelesen und als Sourcetyp klassifiziert. Es werden Zeitstempel extrahiert und die Daten in einzelne Ereignisse geparst. Zum Segmentieren der Ereignisse für die Anzeige in den Suchergebnissen werden Zeilenumbruchregeln angewandt. Jedes Ereignis wird in einen Index auf der Festplatte geschrieben, aus dem es später bei Suchanfragen abgerufen wird.
Beim Starten einer Suche, also zum Suchzeitpunkt, werden indizierte Ereignisse von der Festplatte abgerufen. Felder werden aus dem Rohtext des Ereignisses extrahiert.
Indizes
Beim Hinzufügen von Daten parst Splunk-Software die Daten in einzelne Ereignisse, extrahiert den Zeitstempel, wendet Zeilenumbruchregeln an und speichert die Ereignisse in einem Index. Ihr könnt neue Indizes für unterschiedliche Eingaben erstellen. Standardmäßig werden die Daten im Index „main“ gespeichert. Bei einer Suche werden Ereignisse aus einem oder mehreren Indizes abgerufen.
Hauptfunktionen
Berichte
Die Suche ist für Benutzer die Hauptmethode, um in Splunk-Software durch Daten zu navigieren. Ihr könnt eine Suche schreiben, um Ereignisse aus einem Index abzurufen, Statistikbefehle zum Berechnen von Metriken und Erstellen von Berichten auszuführen, innerhalb eines rollenden Zeitfensters nach bestimmten Bedingungen zu suchen, Muster innerhalb eurer Daten zu erkennen, künftige Trends zu prognostizieren und vieles mehr. Mithilfe der Splunk Search Process Language (SPL™) werden die Ereignisse transformiert. Suchen können als Berichte gespeichert und für die Anzeige in Dashboards verwendet werden.
Berichte
Bei Berichten handelt es sich um gespeicherte Suchen. Ihr könnt Berichte ad-hoc oder nach einem Zeitplan in regelmäßigen Intervallen ausführen und für einen geplanten Bericht festlegen, dass Benachrichtigungen ausgelöst werden, wenn die Ergebnisse bestimmte Bedingungen erfüllen. Berichte können als Dashboard-Teilfenster zu Dashboards hinzugefügt werden.
Dashboards
Dashboards bestehen aus Teilfenstern, die bestimmte Module wie Suchfelder, Felder und Datenvisualisierungen enthalten. Dashboard-Teilfenster sind meist mit gespeicherten Suchen verknüpft. In den Teilfenstern werden die Ergebnisse abgeschlossener Suchen sowie Daten aus Echtzeitsuchen angezeigt.
Benachrichtigungen
Benachrichtigungen werden ausgelöst, wenn Suchergebnisse bestimmte Bedingungen erfüllen. Ihr könnt Benachrichtigungen bei historischen und Echtzeitsuchen verwenden. Benachrichtigungen können so konfiguriert werden, dass sie Aktionen auslösen, z. B das Senden von Benachrichtigungsinformationen an bestimmte E-Mail-Adressen oder das Posten von Benachrichtigungsinformationen in einer Webressource.
Weitere Funktionen
Datensets
Mit Splunk könnt ihr unterschiedliche Arten von Datensets erstellen und verwalten, darunter Lookups, Datenmodelle und Tabellen-Datensets. Tabellen-Datensets sind spezielle kuratierte Sammlungen von Ereignisdaten, die für einen bestimmten geschäftlichen Zweck erstellt werden. Mit Table Views, einem Tool, das komplexe Suchbefehle in einfache UI-Editor-Interaktionen übersetzt, könnt ihr leistungsstarke Tabellen-Datensets definieren und verwalten. Das Tool ist wirklich benutzerfreundlich und erfordert nur minimale Kenntnisse von Splunk SPL.
Datenmodell
Ein Datenmodell ist eine hierarchisch organisierte Sammlung von Datensets. Ihr könnt ganze Datenmodelle oder bestimmte Datensets innerhalb von Datenmodellen in Suchen referenzieren. Außerdem könnt ihr auf Datenmodelle die Datenmodellbeschleunigung anwenden. Mit beschleunigten Datenmodellen lässt sich die Suchleistung drastisch steigern. Daher werden sie häufig für die Anzeige in Dashboard-Teilfenstern und wichtigen On-Demand-Berichten verwendet.
Apps
Bei Apps handelt es sich um eine Sammlung von Konfigurationen, Wissensobjekten und von Kunden entworfenen Ansichten und Dashboards. Apps erweitern die Splunk-Umgebung, um sie an spezifische Anforderungen operativer Teams wie etwa Administratoren von Unix- und Windows-Systemen, Experten für Netzwerksicherheit, Website-Manager, Business-Analysten usw. anzupassen. Innerhalb einer Splunk Enterprise- oder Splunk Cloud-Installation können mehrere Apps gleichzeitig ausgeführt werden.
Verteilte Suche
Eine verteilte Suche bietet die Möglichkeit, eure Bereitstellung zu skalieren, indem die Suchverwaltungs- und Darstellungsebene von der Indizierungs- und Suchabrufebene getrennt wird. Die verteilte Suche wird verwendet, um eine horizontale Skalierung und damit eine Performance-Steigerung zu ermöglichen, den Zugriff auf indizierte Daten zu steuern und geografisch verteilte Daten zu verwalten.
Systemkomponenten
Forwarder
Eine Splunk-Instanz, die Daten an eine andere Splunk-Instanz weiterleitet, wird als Forwarder bezeichnet.
Indexer
Ein Indexer ist die Splunk-Instanz, die Daten indiziert. Der Indexer wandelt die Rohdaten in Ereignisse um und speichert die Ereignisse in einem Index. Außerdem durchsucht der Indexer die indizierten Daten bei Suchanforderungen. Die Such-Peers sind Indexer, die Suchanforderungen seitens des Search Head erfüllen.
Search Head
In einer verteilten Suchumgebung ist der Search Head die Splunk-Instanz, die Suchanforderungen an eine Reihe von Such-Peers verteilt und die Ergebnisse beim Benutzer zusammenführt. Eine Instanz, die nur für Suchen, nicht jedoch für Indizierungen verwendet wird, wird in der Regel als dedizierter Search Head bezeichnet.
Search Processing Language (SPL)
Eine Splunk-Suche besteht aus einer Reihe von Befehlen und Argumenten. Befehle werden mit einem „|“ (Pipe-Zeichen) verkettet, welches angibt, dass das Ergebnis eines Befehls an den nächsten Befehl auf der rechten Seite weitergegeben wird.
search | command1 arguments1 | command2 arguments2 | ...
Am Anfang der Suchpipeline steht ein impliziter Suchbefehl zum Abrufen von Ereignissen aus dem Index. Suchanforderungen werden mit Schlüsselwörtern, Ausdrücken in Anführungszeichen, booleschen Ausdrücken, Platzhaltern, Feldname-Wert-Paaren und Vergleichsausdrücken geschrieben. Der AND-Operator wird zwischen Suchbegriffen impliziert. Zum Beispiel:
sourcetype=access_combined error | top 5 uri
Diese Suche ruft indizierte Webaktivitätsereignisse ab, die den Begriff „error“ enthalten. Für diese Ereignisse werden die fünf häufigsten URI-Werte zurückgegeben.
Suchbefehle werden verwendet, um unerwünschte Ereignisse zu filtern, weitere Informationen zu extrahieren, Werte zu berechnen, zu transformieren und die indizierten Daten statistisch zu analysieren. Die aus dem Index abgerufenen Suchergebnisse könnt ihr euch als dynamische Tabelle vorstellen. Jedes indizierte Ereignis ist eine Zeile. Die Feldwerte sind Spalten. Durch jeden Suchbefehl wird die Form dieser Tabelle neu definiert. Durch Suchbefehle, die Ereignisse filtern, werden beispielsweise Zeilen entfernt, während durch Suchbefehle, die Felder extrahieren, Spalten hinzugefügt werden.
Zeitmodifikatoren
Mit den Suchmodifikatoren „latest“ und „earliest“ könnt ihr einen Zeitraum angeben, in dem Ereignisse in Übereinstimmung mit eurer Suche abgerufen werden sollen.Relative Zeiten werden in einer Zeichenkette spezifiziert, die die Zeit (Ganzzahl und Einheit) angibt und optional eine „snap to“-Zeiteinheit enthalten kann. Die Syntax lautet:
[+|-]<integer><unit>@<snap_time_ unit>
Die Suche
“error earliest=-1d@d latest=h@h”
ruft Ereignisse ab, die „error“ enthalten und von gestern ab Mitternacht (00:00:00) bis zur letzten vollen Stunde des heutigen Tages aufgetreten sind.
Mit „snap to“ wird die Zeit auf die letzte volle angegebenen Einheit abgerundet. Wenn es zum Beispiel 11:59:00 ist und ihr „snap to hours“ (@h) angebt, wird 11:00:00 verwendet, nicht 12:00:00. Ihr könnt für „snap to“ auch bestimmte Wochentage angeben, indem ihr @w0 für Sonntag, @w1 für Montag verwendet usw.
Untergeordnete Suchen
Eine untergeordnete Suche (auch Subsuche) führt eine eigene Suche aus und gibt die Ergebnisse als Argumentwert an den übergeordneten Befehl zurück. Die untergeordnete Suche wird zuerst ausgeführt und ist in eckige Klammern eingeschlossen. Bei der folgenden Suche wird zum Beispiel eine untergeordnete Suche verwendet, um alle Syslog-Ereignisse des Benutzers zu finden, bei dem der letzte Anmeldefehler aufgetreten ist:
sourcetype=syslog [ search login error | return 1 user ]
Suchen optimieren
Entscheidend für schnelle Suchen ist die Beschränkung der Daten, die von der Festplatte abgerufen werden müssen, auf ein absolutes Minimum. Dann kommt es darauf an, die Daten möglichst früh im Suchvorgang zu filtern, sodass nur das erforderliche Minimum an Daten verarbeitet wird.
Wenn ihr nur selten Suchen in mehreren Datentypen durchführt, solltet ihr die Daten auf separate Indizes aufteilen. Beispielsweise könnt ihr Webdaten in einem Index speichern und Firewalldaten in einem anderen.
Beschränkt den Zeitraum auf den erforderlichen Rahmen. Beispiel: -1h nicht -1w oder earliest=-1d.
Gestaltet die Suche so spezifisch wie möglich. Beispiel: fatal_error und nicht *error*. In Dashboards empfiehlt sich die Verwendung von Post-Processing-Suchen.
Nutzt die Features für Zusammenfassungsindizierung, Berichte und Datenmodellbeschleunigung.
Machine Learning-Funktionen
Die Machine Learning-Funktionen von Splunk sind in unser gesamtes Portfolio integriert und
durch Angebote wie das Splunk Machine Learning Toolkit, das Streaming ML-Framework und das Splunk Machine Learning Environment in unsere Lösungen eingebettet.
SPL2
In mehreren Splunk-Produkten kommt bereits eine neue Version der Suchsprache SPL namens SPL2 zum Einsatz, die sich durch größere Benutzerfreundlichkeit auszeichnet, selten verwendete Befehle entfernt und die Konsistenz der Befehlssyntax optimiert. Weitere Informationen findet ihr in der Referenzdokumentation zur SPL2-Suche.
Beispielsuchen
Ergebnisse, die den gleichen
„host“ und „cookie“ aufweisen, innerhalb von 30 Sekunden auftreten und bei denen zwischen den einzelnen Ereignissen keine Pause von mehr als 5 Sekunden liegt, in einer Transaktion gruppieren.
Mittelwert von
„CPU“ pro Minute pro „host“ berechnen.
\d\d\d-\d\d-
\d\d\d\d
\d\d\d-?\d\d-
?\d\d\d\d
(?P<var>
...)
(?P<ssn>\d\d\d-
\d\d-\d\d\d\d)
(?: ...
)
Erfahren Sie mehr

Was ist Cloud Analytics?

Prädiktive Wartung: Eine kurze Einführung
