Suchbefehle > „stats“, „chart“ und „timechart“ (2024)

Die Befehle stats, chart und timechart solltet ihr unbedingt kennen (vor allem stats). Als ich mich zum ersten Mal mit den Suchbefehlen von Splunk befasst habe, fand ich es zunächst schwierig, die Vorteile der einzelnen Befehle zu verstehen – insbesondere die Auswirkungen der BY-Klausel auf das Suchergebnis. Erst durch eine Gegenüberstellung der Ergebnisse (nach einigen Versuchen und ziemlich vielen Irrtümern) habe ich die Unterschiede zwischen den Befehlen wirklich begriffen.

Diese drei Befehle sind Transformationsbefehle. Ein Transformationsbefehl konvertiert eure Event-Daten in eine organisierte Ergebnistabelle. Ihr könnt diese drei Befehle verwenden, um Statistiken wie „count“, „sum“ und „average“ zu berechnen.

Hinweis:Das Schlüsselwort BY wird in diesen Beispielen und in der Splunk-Dokumentation aufgrund der besseren Lesbarkeit in Großbuchstaben angegeben. Bei euren Suchen könnt ihr das Schlüsselwort BY in Groß- oder Kleinbuchstaben angeben.

Die Ergebnistabelle des Befehls „stats“

Beginnen wir mit dem Befehlstats. Wir zählen die Anzahl der Events für die einzelnen HTTP-Statuscodes.

... | stats count BY status

In einer Tabelle unter der Statistics-Registerkarte wird die Anzahl der Events für jeden eindeutigen Statuscode in einer separaten Zeile angeführt:

StatusCount
20034282
400701
403228
404690


Im Grunde werden die Feldwerte (200, 400, 403, 404) zu Zeilenbezeichnungen in der Ergebnistabelle.

Beim Befehl stats werden die Ergebnisse basierend auf Feldern gruppiert, die ihr in der BY-Klausel angebt. Angenommen, wir erhalten Events von drei verschiedenen Hosts: www1, www2 und www3. Wenn wir nun das Host-Feld zu unserer BY-Klausel hinzufügen, werden die Ergebnisse in eindeutigere Gruppen unterteilt.

... | stats count BY status, host

In der Ergebnistabelle wird nun jede eindeutige Kombination aus Status und Host in einer separatenZeileangeführt.

statushostcount
200www111835
200www211186
200www311261
400www1233
400www2257
400www3211
403www2228
404www1244
404www2209
404www3

237

Jedes Feld, das ihr in der BY-Klausel angebt, wird zu einer separaten Spalte der Ergebnistabelle. Die Zeilen werden zuerst nach Status, dann nach Host geteilt. Die Felder, die ihr in der BY-Klausel des Befehlsstatsangebt, werden als -Felder (Zeilenteilungsfelder) bezeichnet.In diesem Beispiel seht ihr fünfAktionen, die Kunden auf unserer Website ausführen können, nämlich addtocart, changequantity, purchase, remove und view.

Fügen wir der Suche das Feld „action“ hinzu.

... | stats count BY status, host, action

Ihr teilt die Zeilen zuerst nach „status“, dann nach „host„ und dann nach „action“. Unten seht ihr einen Auszug aus der Ergebnistabelle, die erstellt wird, wenn wir der BY-Klausel das Feld action hinzufügen:

statushostactioncount
200www1addtocart1837
200www1changequantity428
200www1purchase1860
200www1remove432
200www1view1523
200www2addtocart1743
200www2changequantity365
200www2purchase1742

Ein großer Vorteil des Befehlsstatsist, dass ihr in der BY-Klausel mehr als zwei Felder angeben und Ergebnistabellen erstellen könnt, die sehr detaillierte statistische Berechnungen beinhalten.

Die Ergebnistabelle des Befehls „chart“

Jetzt wenden wir dieselbe grundlegende Suche an und vergleichen die vom Befehlchartgenerierten Ergebnisse mit den vom Befehlstatsgenerierten Ergebnissen.

Wenn ihr nur ein BY-Feld angebt, sind die von den Befehlenstatsundchartausgegebenen Ergebnisse identisch. Wenn ihr den Befehlchartin einer Suche mit zwei BY-Feldern anwendet, seht ihr allerdings große Unterschiede.

Zur Erinnerung: Beim Ausführen des Befehls stats mit zwei BY-Feldern sahen die Ergebnisse so aus:

statushostcount
200www111835
200www211186
200www311261
400www1233
400www2257
400www3211
403www2228
404www1244
404www2209
404www3

237

Jetzt ersetzen wir in der Suche den Befehlstatsdurch den Befehlchart.

... | chart count BY status, host

Die Suche ergibt folgende Ergebnisse:

statuswww1www2www3
200118351118611261
400233257211
40302880
404244209237

Der Befehl chart verwendet das erste BY-Feld, status, um die Ergebnisse zu gruppieren. Für jeden einzelnen Wert im Feld status werden die Ergebnisse in einer separaten Zeile angezeigt. Dieses erste BY-Feld wird als -Feld bezeichnet. Der Befehl chart verwendet das zweite BY-Feld, host, um die Ergebnisse auf unterschiedliche Spalten aufzuteilen. Dieses zweite BY-Feld wird daher als Spaltenteilungsfeld (column-split-field) bezeichnet. Die Werte des Feldes host werden zu Spaltenbezeichnungen.

Interessant ist ein Blick auf die Ergebnisse für den Statuscode 403 in beiden Ergebnistabellen. Mit dem Befehlstatswerden für den Statuscode 403 und die Hosts www1 und www3 keine Ergebnisse ausgegeben. Mit dem Befehlchartwird eine 0 zurückgegeben, wenn für das -Feld keine Events vorhanden sind, die den Wert für das -Feld enthalten.

Ein wichtiger Unterschied zwischen den Befehlenstatsundchartbesteht in der Anzahl der Felder, die in der BY-Klausel angegeben werden können.

Beim Befehlstatskönnt ihr in der BY-Klausel eine Liste von Feldern angeben, bei denen es sich durchweg um -Felder handelt. Die Syntax für die BY-Klausel des Befehlsstatssieht folgendermaßen aus:

BY <field-list>

Beim Befehlchartkönnt ihr maximal zwei Felder angeben, nämlich ein <row-split>-Feld und ein <column-split>-Feld.

Der Befehl chart bietet zwei Alternativen zur Angabe dieser Felder in der BY-Klausel. Hier ein Beispiel:

... | chart count BY status, host

... | chart count OVER status BY host

Die Syntax für die BY-Klausel des Befehlschartsieht folgendermaßen aus:

[ BY <row-split> <column-split> ] | [ OVER <row-split> ] [BY <column-split>] ]

Der Vorteil des Befehlschartliegt darin, dass er eine konsolidierte Ergebnistabelle erstellt, die sich besser für die Erstellung von Diagrammen eignet. Ich zeige euch gleich, was ich damit meine.

Visualisierungen mit den Befehlen „stats“ und „chart“

Wenn ihr die Befehle stats und chart ausführt, werden die Event-Daten in Ergebnistabellen konvertiert, die unter der Statistik-Registerkarte angezeigt werden. Um die Ergebnisse in einem Diagramm darzustellen, klickt ihr einfach auf die Visualisierungs-Registerkarte. Hier seht ihr die Visualisierung der Ergebnistabelle des Befehls stats.

Suchbefehle > „stats“, „chart“ und „timechart“ (1)

Das Feld Status bildet die X-Achse, und die Felder host und count bilden die Datenreihe. Der Zählwertebereich bildet die Y-Achse.

Dieses Diagramm ist in mehrfacher Hinsicht problematisch.

  1. Es gibt mehrere Werte für denselben Statuscode auf der X-Achse.
  2. Die Host-Werte (www1, www2 und www3) sind Zeichenkettenwerte und können in dem Diagramm nicht dargestellt werden. Es gibt zwar einen Legendeneintrag host, aber keine korrespondierenden blauen Säulen im Diagramm.

Aufgrund dieser Probleme wirkt das Diagramm eher verwirrend und übermittelt nicht die in der Ergebnistabelle enthaltenen Informationen.

Ihrkönntaus der Ergebnistabelle des Befehlsstatszwar eine Visualisierung erstellen, diese ist jedoch nur sinnvoll und nützlich, wenn ihr in der BY-Klausel nur ein Feld angebt.

Wenn ihr eine Visualisierung von zwei Feldern in der BY-Klausel erstellen möchtet, empfiehlt sich die Verwendung des Befehlschart:

Suchbefehle > „stats“, „chart“ und „timechart“ (2)

Das Feld status bildet die X-Achse und die host-Werte bilden die Datenreihe. Der Zählwertebereich bildet die Y-Achse.

Und der Befehl „timechart“?

Wenn ihr den Befehl timechart verwendet, wird die Ergebnistabelle immer nach dem Zeitstempel des Ereignisses (dem Feld _time) gruppiert. Der Zeitwert ist der für die Ergebnistabelle. In der BY-Klausel gebt ihr also nur ein Feld an, das column-split-Feld. Diese Suche erzeugt z.B. eine Anzahl und gibt das Feld „status“ als column-split-Feld an:

... | timechart count BY status

Diese Suche ergibt folgende Ergebnistabelle:

_time200400403404
2018-07-05103827719
2018-07-0649811113598
2018-07-0751239945105
2018-07-08501611222105
2018-07-094732863484
2018-07-10479110223107
2018-07-114783853998
2018-07-123818792374

Wenn ihr stattdessen nach dem Host-Feld sucht, wird folgende Tabelle ausgegeben:

_time

www1

www2

www3

2018-07-05372429419
2018-07-06211118371836
2018-07-07188720461935
2018-07-08192718692005
2018-07-09193716541792
2018-07-10198018321733
2018-07-11185518471836
2018-07-12155913981436

Die Zeitschritte, die ihr in der Spalte _time seht, basieren auf dem Suchzeitraum oder den Parametern, die ihr mit dem Befehl timechart angebt. In den vorherigen Beispielen wurde der Zeitraum auf All time (Alle Zeitpunkte) eingestellt und es liegen nur Daten für wenige Wochen vor. Da wir keine Zeitspanne angegeben haben, wird eine Standardzeitspanne verwendet. In diesem Fall ist die Standardzeitspanne 1 Tag.

Wenn ihr einen Zeitraum wieLetzte 24 Stunden angebt, beträgt die Standardzeitspanne 30 Minuten. Im AbschnittUsageder timechart-Dokumentation werden die Standardzeitspannen für die gängigsten Zeiträume angegeben. In dieser Ergebnistabelle ist eine Standardzeitspanne von 30 Minuten zu sehen:

_timewww1www2www3
2018-07-12 15:00:00442273
2018-07-12 15:30:00345331
2018-07-12 16:00:00143336
2018-07-12 16:30:00462154
2018-07-12 17:00:00752638
2018-07-12 17:30:00385114
2018-07-12 18:00:00622415


Der Befehltimechartverfügt über mehrere Optionen, die für die Befehle „stats“ und „chart“ nicht verfügbar sind. Beispielsweise könnt ihr eine Zeitspanne angeben, genau wie wir in dieser Suche:

... | timechart span=12h count BY host

_timewww1www2www3
2018-07-04 17:00801783819
2018-07-05 05:00795847723
2018-07-05 17:00192616611642
2018-07-06 05:00150117741542
2018-07-06 17:00203319091857
2018-07-07 05:00148216711594
2018-07-07 17:00202718182036

In diesem Beispiel basieren die 12-Stunden-Schritte in der Ergebnistabelle auf dem Zeitpunkt, an dem die Suche ausgeführt wird (Ortszeit) und auf der entsprechenden UNIX-Zeit (manchmal auch als Epochen-Zeit bezeichnet).

Hinweis: Der Befehltimechartbietet noch weitere Optionen, auf die wir in einem separaten Blog eingehen werden.

Wie werden die Ergebnisse nun in einem Diagramm dargestellt? Unter der Registerkarte Visualization seht ihr, dass _time die X-Achse bildet. Auf der Achse sind für jedes Datum die Mitternachts- und Mittagswerte angegeben. Die Säulen, mit denen die Daten dargestellt werden, beginnen jedoch jeden Tag um 17:00 Uhr und enden um 05:00 Uhr des folgenden Tages.

Das in der BY-Klausel angegebene Feld bildet die Datenreihe. Der Zählwertebereich bildet die Y-Achse.

Suchbefehle > „stats“, „chart“ und „timechart“ (3)

Zusammenfassung

Die Befehle stats, chart und timechart weisen einige Ähnlichkeiten auf, allerdings müsst ihr darauf achten, welche BY-Klauseln ihr mit welchem Befehl verwendet.

  • Der Befehl „stats“ empfiehlt sich, wenn ihr Ergebnistabellen erstellen möchtet, die detaillierte statistische Berechnungen zeigen.
  • Der Befehl „stats“ empfiehlt sich, wenn ihr in der BY-Klausel drei oder mehr Felder angeben möchtet.
  • Der Befehl „chart“ empfiehlt sich, wenn ihr Ergebnistabellen erstellen möchtet, die konsolidierte und zusammengefasste Berechnungen zeigen.
  • Der Befehl „chart“ empfiehlt sich, um Visualisierungen der Ergebnistabellendaten zu erstellen.
  • Der Befehl „timechart“ empfiehlt sich, um zeitlich basierte Ergebnistabellen und Diagramme zu erstellen.

SPL it like you mean it – Laura

Referenzen

Weitere Blogs:

  • Search Command> stats, eventstats and streamstats

Splunk Dokumentation:

  • Befehl „stats“:https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Stats
  • Befehl „chart“:https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Chart
  • Befehl „timechart“:https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Timechart

*Dieser Artikel wurde aus dem Englischen übersetzt und editiert. Den Originalblogpost findet ihr hier:Search commands > stats, chart, and timechart.

Suchbefehle > „stats“, „chart“ und „timechart“ (2024)

References

Top Articles
Latest Posts
Article information

Author: Ms. Lucile Johns

Last Updated:

Views: 5667

Rating: 4 / 5 (61 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Ms. Lucile Johns

Birthday: 1999-11-16

Address: Suite 237 56046 Walsh Coves, West Enid, VT 46557

Phone: +59115435987187

Job: Education Supervisor

Hobby: Genealogy, Stone skipping, Skydiving, Nordic skating, Couponing, Coloring, Gardening

Introduction: My name is Ms. Lucile Johns, I am a successful, friendly, friendly, homely, adventurous, handsome, delightful person who loves writing and wants to share my knowledge and understanding with you.