Cheat Sheet für die Übersetzung von Splunk in Kusto

Dieser Artikel unterstützt Benutzer, die mit Splunk vertraut sind, beim Erlernen der Kusto-Abfragesprache, um Protokollabfragen mit Kusto schreiben zu können. Es werden direkte Vergleiche zwischen den beiden durchgeführt, um wichtige Unterschiede und Ähnlichkeiten hervorzuheben, damit Sie auf Ihrem vorhandenen Wissen aufbauen können.

Struktur und Konzepte

In der folgenden Tabelle werden Konzepte und Datenstrukturen zwischen Splunk- und Kusto-Protokollen verglichen:

Konzept Splunk Kusto Kommentar
Bereitstellungseinheit cluster cluster Kusto ermöglicht beliebige clusterübergreifende Abfragen. Splunk nicht.
Datencaches buckets Zwischenspeicherungs- und Aufbewahrungsrichtlinien Steuert den Zeitraum und die Cachingebene für die Daten. Diese Einstellung wirkt sich direkt auf die Leistung von Abfragen und die Kosten der Bereitstellung aus.
logische Datenpartition Index database Ermöglicht die logische Trennung der Daten. Beide Implementierungen ermöglichen partitionsübergreifende Unions und Verknüpfungen.
Strukturierte Ereignismetadaten table Splunk macht das Konzept der Ereignismetadaten nicht für die Suchsprache verfügbar. Kusto-Protokolle weisen das Konzept einer Tabelle auf, die Spalten enthält. Jede Ereignisinstanz ist einer Zeile zugeordnet.
Datensatz (record) Ereignis row Nur Terminologieänderung.
record-Attribut Feld column In Kusto ist diese Einstellung als Teil der Tabellenstruktur vordefiniert. In Splunk hat jedes Ereignis einen eigenen Satz von Feldern.
types datatype datatype Kusto-Datentypen sind expliziter, da sie für die Spalten festgelegt sind. Beide haben die Möglichkeit, dynamisch mit Datentypen und ungefähr gleichwertigen Datentypen zu arbeiten, einschließlich JSON-Unterstützung.
Abfrage und Suche search Abfrage Die Konzepte zwischen Kusto und Splunk sind im Wesentlichen identisch.
Ereigniserfassungszeit Systemuhrzeit ingestion_time() In Splunk erhält jedes Ereignis einen Systemzeitstempel des Zeitpunkts, zu dem das Ereignis indiziert wurde. In Kusto können Sie eine Richtlinie namens ingestion_time definieren, die eine Systemspalte verfügbar macht, auf die über die funktion ingestion_time() verwiesen werden kann.

Functions

In der folgenden Tabelle sind Funktionen in Kusto angegeben, die Splunk-Funktionen entsprechen.

Splunk Kusto Kommentar
strcat strcat() (1)
split split() (1)
if iff() (1)
tonumber todouble()
tolong()
toint()
(1)
upper
lower
toupper()
tolower()
(1)
replace replace_string(), replace_strings() oder replace_regex() (1)
Obwohl replace Funktionen in beiden Produkten drei Parameter verwenden, unterscheiden sich die Parameter.
substr substring() (1)
Beachten Sie auch, dass Splunk einsbasierte Indizes verwendet. Kusto notiert nullbasierte Indizes.
tolower tolower() (1)
toupper toupper() (1)
match matches regex (2)
regex matches regex In Splunk ist regex ein Operator. In Kusto handelt es sich um einen relationalen Operator.
searchmatch == In Splunk ermöglicht searchmatch eine Suche nach der exakten Zeichenfolge.
random rand()
rand(n)
Die Splunk-Funktion gibt eine Zahl zwischen null und 231-1 zurück. Kusto gibt eine Zahl zwischen 0,0 und 1,0 oder bei Angabe eines Parameters zwischen 0 und n-1 zurück.
now now() (1)
relative_time totimespan() (1)
In Kusto entspricht datetimeVal + totimespan(offsetVal)Splunk relative_time(datetimeVal, offsetVal) .
Wird z. search | eval n=relative_time(now(), "-1d@d") B. zu ... | extend myTime = now() - totimespan("1d").

(1) In Splunk wird die Funktion mithilfe des eval -Operators aufgerufen. In Kusto wird es als Teil von extend oder projectverwendet.
(2) In Splunk wird die Funktion mithilfe des eval -Operators aufgerufen. In Kusto kann es mit dem where Operator verwendet werden.

Operatoren

Die folgenden Abschnitte enthalten Beispiele für die Verwendung verschiedener Operatoren in Splunk und Kusto.

Hinweis

In den folgenden Beispielen wird das Splunk-Feld rule einer Tabelle in Kusto zugeordnet, und der Standardzeitstempel von Splunk wird der Spalte Logs Analytics ingestion_time() zugeordnet.

In Splunk können Sie das Schlüsselwort search auslassen und eine Zeichenfolge ohne Anführungszeichen eingeben. In Kusto müssen Sie jede Abfrage mit findstarten, eine Zeichenfolge ohne Anführungszeichen ist ein Spaltenname, und der Nachschlagewert muss eine Zeichenfolge in Anführungszeichen sein.

Produkt Operator Beispiel
Splunk search search Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" earliest=-24h
Kusto find find Session.Id=="c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time()> ago(24h)

Filter

Kusto-Protokollabfragen beginnen mit einem tabellarischen Resultset, in das filter angewendet wird. In Splunk ist Filtern der Standardvorgang für den aktuellen Index. Sie können den where Operator auch in Splunk verwenden, aber wir empfehlen ihn nicht.

Produkt Operator Beispiel
Splunk search Event.Rule="330009.2" Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" _indextime>-24h
Kusto where Office_Hub_OHubBGTaskError
| where Session_Id == "c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time() > ago(24h)

Abrufen von n Ereignissen oder Zeilen zur Überprüfung

Kusto-Protokollabfragen unterstützen take auch als Alias für limit. Wenn die Ergebnisse in Splunk sortiert sind, head werden die ersten n Ergebnisse zurückgegeben. In Kusto limit ist nicht sortiert, aber es werden die ersten gefundenen n Zeilen zurückgegeben.

Produkt Operator Beispiel
Splunk head Event.Rule=330009.2
| head 100
Kusto limit Office_Hub_OHubBGTaskError
| limit 100

Abrufen der ersten n Ereignisse oder Zeilen, die nach einem Feld oder einer Spalte sortiert sind

Für die unteren Ergebnisse verwenden tailSie in Splunk . In Kusto können Sie die Reihenfolge mithilfe ascvon angeben.

Produkt Operator Beispiel
Splunk head Event.Rule="330009.2"
| sort Event.Sequence
| head 20
Kusto top Office_Hub_OHubBGTaskError
| top 20 by Event_Sequence

Erweitern des Resultsets mit neuen Feldern oder Spalten

Splunk verfügt über eine eval Funktion, ist aber nicht mit dem eval Operator in Kusto vergleichbar. Sowohl der eval Operator in Splunk als auch der extend Operator in Kusto unterstützen nur skalare Funktionen und arithmetische Operatoren.

Produkt Operator Beispiel
Splunk eval Event.Rule=330009.2
| eval state= if(Data.Exception = "0", "success", "error")
Kusto extend Office_Hub_OHubBGTaskError
| extend state = iff(Data_Exception == 0,"success" ,"error")

Umbenennen

Kusto verwendet den project-rename Operator, um ein Feld umzubenennen. project-rename Im Operator kann eine Abfrage alle Indizes nutzen, die für ein Feld vorkonfiguriert sind. Splunk verfügt über einen rename Operator, der dasselbe tut.

Produkt Operator Beispiel
Splunk rename Event.Rule=330009.2
| rename Date.Exception as execption
Kusto project-rename Office_Hub_OHubBGTaskError
| project-rename exception = Date_Exception

Formatieren von Ergebnissen und Projektion

Splunk verwendet den table Befehl, um auszuwählen, welche Spalten in die Ergebnisse eingeschlossen werden sollen. Kusto verfügt über einen project Operator, der dasselbe und mehr ausführt.

Produkt Operator Beispiel
Splunk table Event.Rule=330009.2
| table rule, state
Kusto project Office_Hub_OHubBGTaskError
| project exception, state

Splunk verwendet den field - Befehl, um auszuwählen, welche Spalten aus den Ergebnissen ausgeschlossen werden sollen. Kusto verfügt über einen project-away Operator, der dasselbe tut.

Produkt Operator Beispiel
Splunk fields - Event.Rule=330009.2
| fields - quota, hightest_seller
Kusto project-away Office_Hub_OHubBGTaskError
| project-away exception, state

Aggregation

Weitere Informationen finden Sie in der Liste der verfügbaren Aggregationsfunktionen .

Splunk-Operator Splunk-Beispiel Kusto-Operator Kusto-Beispiel
stats search (Rule=120502.*)
| stats count by OSEnv, Audience
summarize Office_Hub_OHubBGTaskError
| summarize count() by App_Platform, Release_Audience
evenstats ...
| stats count_i by time, category
| eventstats sum(count_i) AS count_total by _time_
join T2
| join kind=inner (T1) on _time
| project _time, category, count_i, count_total

Join

join in Splunk weist erhebliche Einschränkungen auf. Die Unterabfrage hat einen Grenzwert von 10.000 Ergebnissen (festgelegt in der Bereitstellungskonfigurationsdatei), und eine begrenzte Anzahl von Join-Varianten ist verfügbar.

Produkt Operator Beispiel
Splunk join Event.Rule=120103* | stats by Client.Id, Data.Alias
| join Client.Id max=0 [search earliest=-24h Event.Rule="150310.0" Data.Hresult=-2147221040]
Kusto join cluster("OAriaPPT").database("Office PowerPoint").Office_PowerPoint_PPT_Exceptions
| where Data_Hresult== -2147221040
| join kind = inner (Office_System_SystemHealthMetadata
| summarize by Client_Id, Data_Alias)on Client_Id

Sortieren

In Splunk müssen Sie den reverse Operator verwenden, um in aufsteigender Reihenfolge zu sortieren. Kusto unterstützt auch die Definition, wo NULL-Werte entweder am Anfang oder am Ende platziert werden sollen.

Produkt Operator Beispiel
Splunk sort Event.Rule=120103
| sort Data.Hresult
| reverse
Kusto order by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

Erweiterung für mehrere Werte

Der mehrwertige Erweiterungsoperator ist sowohl in Splunk als auch in Kusto ähnlich.

Produkt Operator Beispiel
Splunk mvexpand mvexpand solutions
Kusto mv-expand mv-expand solutions

Ergebnisfacetten, interessante Felder

In Log Analytics im Azure-Portal wird nur die erste Spalte verfügbar gemacht. Alle Spalten stehen über die API zur Verfügung.

Produkt Operator Beispiel
Splunk fields Event.Rule=330009.2
| fields App.Version, App.Platform
Kusto facets Office_Excel_BI_PivotTableCreate
| facet by App_Branch, App_Version

Deduplizieren

In Kusto können Sie verwenden summarize arg_min() , um die Reihenfolge des ausgewählten Datensatzes umzukehren.

Produkt Operator Beispiel
Splunk dedup Event.Rule=330009.2
| dedup device_id sortby -batterylife
Kusto summarize arg_max() Office_Excel_BI_PivotTableCreate
| summarize arg_max(batterylife, *) by device_id