Udostępnij przez


Ściągawka porównująca platformę Splunk z programem Kusto

Dotyczy: ✅Microsoft Fabric

Ten artykuł ma pomóc użytkownikom, którzy znają rozwiązanie Splunk, nauczyć się języka Kusto Query Language do pisania zapytań dzienników za pomocą usługi Kusto. Bezpośrednie porównania są wykonywane między nimi, aby wyróżnić kluczowe różnice i podobieństwa, dzięki czemu możesz opierać się na istniejącej wiedzy.

Struktura i pojęcia

W poniższej tabeli porównaliśmy pojęcia i struktury danych między dziennikami Splunk i Kusto:

Concept Splunk Kusto Comment
jednostka wdrożenia klaster klaster Usługa Kusto umożliwia wykonywanie dowolnych zapytań między klastrami. Splunk tego nie robi.
pamięci podręczne danych buckets Zasady buforowania i przechowywania Określa okres i poziom buforowania danych. To ustawienie ma bezpośredni wpływ na wydajność zapytań i koszt wdrożenia.
partycja logiczna danych indeks baza danych Umożliwia logiczne rozdzielenie danych. Obie implementacje umożliwiają łączenie związków i łączenie w tych partycjach.
metadane zdarzeń strukturalnych N/A tabela Funkcja Splunk nie ujawnia koncepcji metadanych zdarzeń w języku wyszukiwania. Dzienniki usługi Kusto wykorzystują koncept tabeli, która zawiera kolumny. Każde wystąpienie zdarzenia jest mapowane na wiersz.
rekord wydarzenie szereg Tylko zmiana terminologii.
atrybut rekordu pole kolumna W usłudze Kusto to ustawienie jest wstępnie zdefiniowane jako część struktury tabeli. W rozwiązaniu Splunk każde zdarzenie ma własny zestaw pól.
typy Datatype Datatype Typy danych Kusto są bardziej określone, ponieważ są ustawiane na kolumnach. Obie mają możliwość dynamicznej pracy z typami danych i w przybliżeniu równoważnym zestawem typów danych, w tym obsługą formatu JSON.
zapytanie i wyszukiwanie wyszukać kwerenda Pojęcia zasadniczo są takie same między Kusto i Splunk.
czas pozyskiwania zdarzeń czas systemowy ingestion_time() W narzędziu Splunk każde zdarzenie otrzymuje sygnaturę czasową systemu momentu indeksowania zdarzenia. W usłudze Kusto można zdefiniować zasady o nazwie ingestion_time, które uwidacznia kolumnę systemową, do której można odwoływać się za pomocą funkcji ingestion_time().

Functions

W poniższej tabeli określono funkcje w usłudze Kusto, które są równoważne funkcjom Splunk.

Splunk Kusto Comment
strcat strcat() (1)
split split() (1)
if iff() (1)
tonumber todouble()
tolong()
toint()
(1)
upper
lower
toupper()
tolower()
(1)
replace replace_string(), replace_strings() lub replace_regex() (1)
Chociaż funkcje replace w obu produktach przyjmują trzy parametry, parametry są różne.
substr substring() (1)
Należy również zauważyć, że Splunk korzysta z indeksów zaczynających się od jednego. Zauważ, że Kusto używa indeksów zaczynających się od zera.
tolower tolower() (1)
toupper toupper() (1)
match matches regex (2)
regex matches regex Operatorem w Splunk jest regex. W platformie Kusto jest to operator relacyjny.
searchmatch == Funkcja Splunk searchmatch umożliwia wyszukiwanie dokładnego ciągu.
random rand()
rand(n)
Funkcja Splunk zwraca liczbę z zakresu od zera do 231–1. Funkcja Kusto zwraca liczbę z zakresu od 0,0 do 1,0 lub jeśli podano parametr z zakresu od 0 do n-1.
now now() (1)
relative_time totimespan() (1)
W Kusto odpowiednikiem relative_time(datetimeVal, offsetVal) w Splunk jest datetimeVal + totimespan(offsetVal).
Na przykład search | eval n=relative_time(now(), "-1d@d") staje się .... | extend myTime = now() - totimespan("1d")

W Splunku funkcja jest wywoływana przy użyciu operatora eval. W Kusto jest używany jako część extend lub project.
(2) W Splunk funkcja jest wywoływana przy użyciu operatora eval. W Kusto można używać go z operatorem where.

Operatorów

W poniższych sekcjach przedstawiono przykłady używania różnych operatorów w rozwiązaniach Splunk i Kusto.

Uwaga / Notatka

W poniższych przykładach pole rule Splunk mapuje na tabelę w usłudze Kusto, a domyślna sygnatura czasowa Splunk na kolumnę Logs Analytics ingestion_time().

W narzędziu Splunk można pominąć nazwę słowa kluczowego i określić ciąg znaków bez cudzysłowów. W usłudze Kusto musisz rozpocząć każde zapytanie od ciągu find, nieoznakowany ciąg jest nazwą kolumny, a wartość wyszukiwania musi być ciągiem w cudzysłowie.

Product Operator 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

Zapytania dziennika Kusto rozpoczynają się od zestawu wyników tabelarycznych, w którym filter jest stosowany. W narzędziu Splunk filtrowanie jest domyślną operacją na bieżącym indeksie. Możesz także użyć operatora where w Splunku, ale nie zalecamy tego.

Product Operator 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)

Pobieranie n zdarzeń lub wierszy na potrzeby inspekcji

Zapytania dzienników Kusto obsługują take jako alias dla limit. W narzędziu Splunk, jeśli wyniki są uporządkowane, head zwraca pierwsze n wyników. W Kusto limit nie jest uporządkowane, ale zwraca pierwsze n znalezionych wierszy.

Product Operator Example
Splunk head Event.Rule=330009.2
| head 100
Kusto limit Office_Hub_OHubBGTaskError
| limit 100

Pobieranie pierwszych n zdarzeń lub wierszy uporządkowanych według pola lub kolumny

W przypadku dolnych wyników w narzędziu Splunk użyj polecenia tail. W usłudze Kusto można określić kierunek porządkowania przy użyciu polecenia asc.

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

Rozszerzanie zestawu wyników przy użyciu nowych pól lub kolumn

Splunk ma eval funkcję, ale nie jest porównywalna z operatorem eval w Kusto. Zarówno operator eval w Splunk, jak i operator extend w Kusto obsługują tylko funkcje skalarne i operatory arytmetyczne.

Product Operator 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")

Zmień nazwę

Kusto używa operatora project-rename do zmiany nazwy pola. W operatorze project-rename zapytanie może korzystać z wszystkich indeksów, które są wstępnie utworzone dla pola. Splunk ma operator rename, który robi to samo.

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

Formatowanie wyników i projekcji

Splunk używa polecenia table, aby wybrać kolumny do uwzględnienia w wynikach. Kusto ma project operator, który robi to samo i nie tylko.

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

Splunk używa polecenia fields -, aby wybrać kolumny do wykluczenia z wyników. Usługa Kusto ma operator project-away, który wykonuje to samo.

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

Aggregation

Zobacz listę funkcji podsumowania agregacji , które są dostępne.

Operator Splunk Przykład Splunk Operator Kusto Przykład Kusto
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

Dołączyć

join w narzędziu Splunk ma znaczne ograniczenia. Podzapytanie ma limit 10 000 wyników (ustawiony w pliku konfiguracyjnym wdrożenia), a dostępna jest ograniczona liczba rodzajów sprzężeń.

Product Operator 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

Sortuj

Domyślna kolejność sortowania jest rosnąca. Aby określić kolejność malejącą, dodaj znak minus (-) przed nazwą pola. Usługa Kusto obsługuje również definiowanie, czy wartości null mają być umieszczane na początku, czy na końcu.

Product Operator Example
Splunk sort Event.Rule=120103
| sort -Data.Hresult
Kusto order by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

Rozszerz wartości wielokrotne

Operator rozwijania wielowartościowego jest podobny w Splunk i Kusto.

Product Operator Example
Splunk mvexpand mvexpand solutions
Kusto mv-expand mv-expand solutions

Aspekty wyników, interesujące pola

W usłudze Log Analytics w witrynie Azure Portal uwidoczniona jest tylko pierwsza kolumna. Wszystkie kolumny są dostępne za pośrednictwem interfejsu API.

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

Deduplikacja

W usłudze Kusto można użyć summarize arg_min() polecenia , aby odwrócić kolejność wybranego rekordu.

Product Operator 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

Schemat czasu

Narzędzia Kusto i Splunk używają timechart operatora do wizualizowania danych z biegiem czasu. W narzędziu Splunk dane są agregowane w określonych przedziałach czasowych i mogą być używane z różnymi funkcjami statystycznymi. W Kusto odpowiednik jest osiągany przy użyciu funkcji summarize i bin, a następnie operatora utwórz wykres czasowy.

Product Operator 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