Panduan ringkas Splunk ke Kusto

Beralih layanan menggunakan menu tarik-turun Versi. Pelajari selengkapnya tentang navigasi.
Berlaku untuk: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

Artikel ini dimaksudkan untuk membantu pengguna yang terbiasa dengan Splunk mempelajari Bahasa Kueri Kusto untuk menulis kueri log dengan Kusto. Perbandingan langsung dibuat antara keduanya untuk menyoroti perbedaan dan kesamaan utama, sehingga Anda dapat membangun pengetahuan yang ada.

Struktur dan konsep

Tabel berikut membandingkan konsep dan struktur data antara log Splunk dan Kusto:

Konsep Splunk Kusto Comment
unit implementasi kluster kluster Kusto memungkinkan kueri lintas kluster secara bebas. Splunk tidak melakukannya.
cache data buckets kebijakan pengelolaan cache dan retensi Mengontrol periode dan tingkat caching untuk data. Pengaturan ini secara langsung memengaruhi performa kueri dan biaya penyebaran.
partisi data secara logis indeks database Memungkinkan pemisahan data yang logis. Kedua implementasi memungkinkan penggabungan dan penyatuan melintasi partisi-partisi ini.
metadata peristiwa terstruktur N/A tabel Splunk tidak mengekspos konsep metadata peristiwa ke bahasa pencarian. Log Kusto memiliki konsep tabel, yang memiliki kolom. Setiap instance dari peristiwa dipetakan ke dalam satu baris.
rekaman acara baris Perubahan terminologi saja.
atribut catatan field kolom Di Kusto, pengaturan ini telah ditentukan sebelumnya sebagai bagian dari struktur tabel. Dalam Splunk, setiap event memiliki serangkaian fieldnya sendiri.
Tipe tipe data tipe data Jenis data Kusto lebih eksplisit karena diatur pada kolom. Keduanya memiliki kemampuan untuk bekerja secara dinamis dengan jenis data dan kumpulan jenis data yang kira-kira setara, termasuk dukungan JSON.
kueri dan pencarian cari kueri Konsep pada dasarnya sama antara Kusto dan Splunk.
waktu pemrosesan peristiwa waktu sistem ingestion_time() Di Splunk, setiap peristiwa mendapatkan tanda waktu sistem saat peristiwa diindeks. Di Kusto, Anda dapat menentukan kebijakan yang disebut ingestion_time yang mengekspos kolom sistem yang dapat dirujuk melalui fungsi ingestion_time().

Functions

Tabel berikut menentukan fungsi di Kusto yang setara dengan fungsi 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(), atau replace_regex() (1)
Meskipun replace fungsi mengambil tiga parameter di kedua produk, parameternya berbeda.
substr substring() (1)
Perhatikan juga bahwa Splunk menggunakan indeks berbasis satu. Kusto mencatat indeks berbasis nol.
tolower tolower() (1)
toupper toupper() (1)
match matches regex (2)
regex matches regex Di Splunk, regex adalah operator. Di Kusto, ini adalah operator relasional.
searchmatch == Di Splunk, searchmatch memungkinkan pencarian string yang tepat.
random rand()
rand(n)
Fungsi Splunk mengembalikan angka antara nol hingga 231-1. Kusto mengembalikan angka antara 0,0 dan 1,0, atau jika parameter disediakan, antara 0 dan n-1.
now now() (1)
relative_time totimespan() (1)
Di Kusto, yang setara dengan relative_time(datetimeVal, offsetVal) di Splunk adalah datetimeVal + totimespan(offsetVal).
Misalnya, search | eval n=relative_time(now(), "-1d@d") menjadi .... | extend myTime = now() - totimespan("1d")

(1) Di Splunk, fungsi dipanggil dengan menggunakan eval operator. Di Kusto, ini digunakan sebagai bagian dari extend atau project.
(2) Di Splunk, fungsi dipanggil dengan menggunakan eval operator. Di Kusto, operator where dapat digunakan.

Para Operator

Bagian berikut memberikan contoh cara menggunakan operator yang berbeda di Splunk dan Kusto.

Nota

Dalam contoh berikut, kolom rule Splunk dipetakan ke tabel di Kusto, dan tanda waktu default Splunk dipetakan ke kolom Analitik Log ingestion_time().

Di Splunk, Anda dapat menghilangkan search kata kunci dan menentukan string yang tidak dikutip. Di Kusto, Anda harus memulai setiap kueri dengan find, string yang tidak dikutip adalah nama kolom, dan nilai pencarian harus berupa string yang dikutip.

Produk 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

Kueri log Kusto dimulai dari tataan hasil tabular yang filter diterapkan. Di Splunk, pemfilteran adalah operasi default pada indeks saat ini. Anda juga dapat menggunakan where operator di Splunk, tetapi kami tidak merekomendasikannya.

Produk 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)

Dapatkan n peristiwa atau baris guna inspeksi

Kueri log Kusto juga mendukung take sebagai alias ke limit. Di Splunk, jika hasilnya diurutkan, head mengembalikan hasil n pertama. Di Kusto, limit tidak diurutkan, tetapi mengembalikan baris n pertama yang ditemukan.

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

Dapatkan n peristiwa atau baris pertama yang diurutkan berdasarkan bidang atau kolom

Untuk hasil bawah, di Splunk, Anda menggunakan tail. Di Kusto, Anda dapat menentukan arah pemesanan dengan menggunakan asc.

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

Memperluas tataan hasil dengan bidang atau kolom baru

Splunk memiliki eval fungsi, tetapi tidak sebanding dengan eval operator di Kusto. eval Operator di Splunk dan extend operator di Kusto hanya mendukung fungsi skalar dan operator aritmatika.

Produk 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")

Rename

Kusto menggunakan project-rename operator untuk mengganti nama bidang. Dalam operator project-rename, kueri dapat memanfaatkan indeks apa pun yang telah dibuat sebelumnya untuk sebuah bidang. Splunk memiliki rename operator yang melakukan hal yang sama.

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

Memformat hasil dan proyeksi

Splunk menggunakan table perintah untuk memilih kolom mana yang akan disertakan dalam hasil. Kusto memiliki project operator yang melakukan hal yang sama dan banyak lagi.

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

Splunk menggunakan fields - perintah untuk memilih kolom mana yang akan dikecualikan dari hasil. Kusto memiliki project-away operator yang melakukan hal yang sama.

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

Aggregation

Lihat daftar fungsi ringkasan agregasi yang tersedia.

Operator Splunk Contoh Splunk Operator Kusto Contoh 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

Bergabung

join di Splunk memiliki batasan yang signifikan. Subkueri memiliki batas 10.000 hasil (diatur dalam file konfigurasi penyebaran), dan sejumlah ragam gabungan terbatas tersedia.

Produk 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

Urutkan

Urutan sortir default adalah menaik. Untuk menentukan urutan turun, tambahkan tanda minus (-) sebelum nama bidang. Kusto juga mendukung penentuan di mana harus menempatkan null, baik di awal atau di akhir.

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

Pengembangan nilai ganda

Operator perluasan multinilai mirip di Splunk dan Kusto.

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

Faset hasil, bidang yang menarik

Di Analitik Log di portal Microsoft Azure, hanya kolom pertama yang diekspos. Semua kolom tersedia melalui API.

Produk 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

Deduplikasi

Di Kusto, Anda dapat menggunakan summarize arg_min() untuk membalikkan urutan rekaman mana yang dipilih.

Produk 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

Diagram waktu

Kusto dan Splunk sama-sama menggunakan operator timechart untuk memvisualisasikan data dari waktu ke waktu. Di Splunk, ia menggabungkan data selama interval waktu yang ditentukan dan dapat digunakan dengan berbagai fungsi statistik. Di Kusto, yang setara dicapai menggunakan fungsi summarize dan bin diikuti oleh operator timechart render.

Produk 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