Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel soll Benutzern, die mit Splunk vertraut sind, dabei helfen, die Kusto-Abfragesprache zu erlernen, um Protokollabfragen mit Kusto zu schreiben. Direkte Vergleiche werden 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:
| Begriff | Splunk | Kusto | Kommentar |
|---|---|---|---|
| Bereitstellungseinheit | Gruppe | Gruppe | Kusto ermöglicht beliebige clusterübergreifende Abfragen. Splunk funktioniert nicht. |
| Datencaches | buckets | Zwischenspeichern und Aufbewahrungsrichtlinien | Steuert den Zeitraum und die Zwischenspeicherungsebene für die Daten. Diese Einstellung wirkt sich direkt auf die Leistung von Abfragen und die Kosten der Bereitstellung aus. |
| Logische Datenpartition | index | Datenbank | Ermöglicht die logische Trennung der Daten. Beide Implementierungen ermöglichen Vereinigungen und Verknüpfungen über diese Partitionen hinweg. |
| Strukturierte Ereignismetadaten | N/A | Tisch | Splunk macht das Konzept von Ereignismetadaten nicht für die Suchsprache verfügbar. Kusto-Protokolle haben das Konzept einer Tabelle, die Spalten enthält. Jede Ereignisinstanz wird einer Zeile zugeordnet. |
| Datensatz (record) | Ereignis | Zeile | Nur die Terminologie wird geändert. |
| Record-Attribut | field | Spalte | In Kusto ist diese Einstellung als Teil der Tabellenstruktur vordefiniert. In Splunk verfügt jedes Ereignis über einen eigenen Satz von Feldern. |
| Typen | 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 Datasets zu arbeiten, einschließlich JSON-Unterstützung. |
| Abfrage und Suche | search | Anfrage | Konzepte sind im Wesentlichen identisch zwischen Kusto und Splunk. |
| Ereignisaufnahmezeit | Systemzeit | 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. |
Funktionen
Die folgende Tabelle gibt Funktionen in Kusto an, die den Splunk-Funktionen entsprechen.
| Splunk | Kusto | Kommentar |
|---|---|---|
strcat |
strcat() |
(1) |
split |
split() |
(1) |
if |
iff() |
(1) |
tonumber |
todouble()tolong()toint() |
(1) |
upperlower |
toupper()tolower() |
(1) |
replace |
replace_string(), replace_strings() oder replace_regex() |
(1) Obwohl replace Funktionen drei Parameter in beiden Produkten verwenden, sind die Parameter unterschiedlich. |
substr |
substring() |
(1) Beachten Sie außerdem, dass Splunk 1-basierte Indizes verwendet. Kusto notiert nullbasierte Indizes. |
tolower |
tolower() |
(1) |
toupper |
toupper() |
(1) |
match |
matches regex |
(2) |
regex |
matches regex |
In Splunk regex ist ein Operator. "In »Kusto« handelt es sich um einen relationalen Operator." |
searchmatch |
== | In Splunk searchmatch ermöglicht die Suche nach der genauen Zeichenfolge. |
random |
rand() rand(n) |
Die Funktion Splunk gibt eine Zahl zwischen Null und 231-1 zurück. Kustos gibt eine Zahl zwischen 0,0 und 1,0 zurück, oder wenn ein Parameter angegeben wird, zwischen 0 und n-1. |
now |
now() |
(1) |
relative_time |
totimespan() |
(1) In Kusto entspricht relative_time(datetimeVal, offsetVal)Splunks Entsprechung datetimeVal + totimespan(offsetVal) .Beispielsweise search | eval n=relative_time(now(), "-1d@d") wird .... | extend myTime = now() - totimespan("1d") |
(1) In Splunk wird die Funktion mithilfe des eval Operators aufgerufen. In Kusto wird es als Teil extend oder project.
(2) In Splunk wird die Funktion mithilfe des eval Operators aufgerufen. In Kusto kann sie mit dem where Operator verwendet werden.
Betriebspersonal
Die folgenden Abschnitte enthalten Beispiele für die Verwendung verschiedener Operatoren in Splunk und Kusto.
Hinweis
In den folgenden Beispielen wird das Feld rule in Splunk einer Tabelle in Kusto zugeordnet, und der Standardzeitstempel von Splunk wird der Logs Analytics ingestion_time() Spalte zugeordnet.
Suche
In Splunk können Sie das search Schlüsselwort weglassen und eine unzitierte Zeichenfolge angeben. In Kusto müssen Sie jede Abfrage mit find starten, eine unmarkierte Zeichenfolge ist ein Spaltenname, und der Nachschlagewert muss eine Zeichenfolge in Anführungszeichen sein.
| Produkt | Bediener | Example |
|---|---|---|
| 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 dem filter angewendet wird. In Splunk ist die Filterung der Standardvorgang für den aktuellen Index. Sie können den where Operator auch in Splunk verwenden, es wird jedoch nicht empfohlen.
| Produkt | Bediener | Example |
|---|---|---|
| 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) |
Rufen Sie n Ereignisse oder Zeilen zur Überprüfung ab
Kusto-Protokollabfragen unterstützen auch take als Alias für limit. Wenn die Ergebnisse in Splunk geordnet sind, gibt head die ersten n Ergebnisse zurück. In Kusto wird limit nicht sortiert. Es gibt jedoch erst die ersten n gefundenen Zeilen zurück.
| Produkt | Bediener | Example |
|---|---|---|
| Splunk | head |
Event.Rule=330009.2| head 100 |
| Kusto | limit |
Office_Hub_OHubBGTaskError| limit 100 |
Abrufen der ersten n Ereignisse oder Zeilen, sortiert nach einem Feld oder einer Spalte
Für die unteren Ergebnisse verwenden Sie tail in Splunk. In Kusto können Sie die Sortierrichtung mithilfe von asc.
| Produkt | Bediener | Example |
|---|---|---|
| Splunk | head |
Event.Rule="330009.2"| sort Event.Sequence| head 20 |
| Kusto | top |
Office_Hub_OHubBGTaskError| top 20 by Event_Sequence |
Das Ergebnis-Set mit neuen Feldern oder Spalten erweitern
Splunk hat 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 | Bediener | Example |
|---|---|---|
| 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 die gleichen Aktionen ausführt.
| Produkt | Bediener | Example |
|---|---|---|
| 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 Projektionen
Splunk verwendet den table Befehl, um auszuwählen, welche Spalten in die Ergebnisse einbezogen werden sollen. Kusto verfügt über einen project Operator, der dasselbe und mehr tut.
| Produkt | Bediener | Example |
|---|---|---|
| Splunk | table |
Event.Rule=330009.2| table rule, state |
| Kusto | project |
Office_Hub_OHubBGTaskError| project exception, state |
Splunk verwendet den fields - Befehl, um auszuwählen, welche Spalten aus den Ergebnissen ausgeschlossen werden sollen. Kusto verfügt über einen project-away Operator, der dieselben Aktionen ausführt.
| Produkt | Bediener | Example |
|---|---|---|
| Splunk | fields - |
Event.Rule=330009.2| fields - quota, hightest_seller |
| Kusto | project-away |
Office_Hub_OHubBGTaskError| project-away exception, state |
Aggregation
Sehen Sie sich die Liste der verfügbaren Zusammenfassungsaggregationsfunktionen an.
| Splunk-Operator | Beispiel für Splunk | 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 |
Beitreten
join in Splunk hat erhebliche Einschränkungen. Die Unterabfrage hat einen Grenzwert von 10.000 Ergebnissen (in der Bereitstellungskonfigurationsdatei festgelegt), und eine begrenzte Anzahl von Verknüpfungstypen ist verfügbar.
| Produkt | Bediener | Example |
|---|---|---|
| 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
Standardmäßig wird die Sortierung in aufsteigender Reihenfolge vorgenommen. Um absteigende Reihenfolge anzugeben, fügen Sie vor dem Feldnamen ein Minuszeichen (-) hinzu. Kusto unterstützt auch das Definieren der Stelle, an der Null gesetzt werden soll, entweder am Anfang oder am Ende.
| Produkt | Bediener | Example |
|---|---|---|
| Splunk | sort |
Event.Rule=120103| sort -Data.Hresult |
| Kusto | order by |
Office_Hub_OHubBGTaskError| order by Data_Hresult, desc |
Mehrfachwerterweiterung
Der mehrwertige Expand-Operator ist sowohl in Splunk als auch in Kusto ähnlich.
| Produkt | Bediener | Example |
|---|---|---|
| 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 sind über die API verfügbar.
| Produkt | Bediener | Example |
|---|---|---|
| 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 summarize arg_min() verwenden, um die Auswahlreihenfolge eines Datensatzes umzukehren.
| Produkt | Bediener | Example |
|---|---|---|
| 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 |
Zeitdiagramm
Kusto und Splunk verwenden beide den timechart-Operator, um Daten im Laufe der Zeit zu visualisieren. In Splunk aggregiert es Daten über bestimmte Zeitintervalle und kann mit verschiedenen statistischen Funktionen verwendet werden. In Kusto wird das Äquivalent durch die summarize- und bin-Funktionen und anschließend den Operator Render-Timechart erreicht.
| Produkt | Bediener | Example |
|---|---|---|
| Splunk | timechart |
index=StormEvents | where StartTime >= "2007-01-01" AND StartTime <= "2007-12-31" AND DamageCrops > 0 | bin span=7d StartTime | stats count as EventCount by StartTime | timechart span=7d count as EventCount |
| Kusto | timechart |
StormEvents | where StartTime between (datetime(2007-01-01) .. datetime(2007-12-31)) and DamageCrops > 0 | summarize EventCount = count() by bin(StartTime, 7d) | render timechart |
Verwandte Inhalte
- Gehen Sie ein Lernprogramm zur Kusto-Abfragesprache durch.