Partager via


Aide-mémoire pour passer de Splunk à Kusto

S’applique à : ✅Microsoft Fabric

Cet article est destiné à aider les utilisateurs familiarisés avec Splunk à apprendre le langage de requête Kusto pour écrire des requêtes de journal avec Kusto. Les comparaisons directes sont effectuées entre les deux pour mettre en évidence les principales différences et les similitudes, ce qui vous permet de tirer profit de vos connaissances existantes.

Structure et concepts

Le tableau suivant compare les concepts et les structures de données entre les journaux Splunk et Kusto :

Concept Splunk Kusto Commentaire
unité de déploiement cluster cluster Kusto autorise des requêtes entre clusters arbitraires. Splunk ne le fait pas.
caches de données buckets mise en cache et stratégies de rétention Contrôle le niveau de période et de mise en cache des données. Ce paramètre affecte directement les performances des requêtes et le coût du déploiement.
partition logique des données index base de données Autorise la séparation logique des données. Les deux implémentations autorisent les unions et la jonction entre ces partitions.
métadonnées d’événement structuré N/A table Splunk n’expose pas le concept de métadonnées d’événement au langage de recherche. Les journaux Kusto possèdent le concept de table, qui comprend des colonnes. Chaque instance d’événement est mappée à une ligne.
enregistrement événement ligne Modification de la terminologie uniquement.
attribut d’enregistrement field column Dans Kusto, ce paramètre est prédéfini dans le cadre de la structure de table. Dans Splunk, chaque événement a son propre ensemble de champs.
Types Datatype Datatype Les types de données Kusto sont plus explicites, car ils sont définis sur les colonnes. Les deux ont la possibilité de travailler dynamiquement avec des types de données et à peu près un ensemble équivalent de types de données, y compris la prise en charge JSON.
requête et recherche search query Les concepts sont essentiellement les mêmes entre Kusto et Splunk.
temps d’ingestion de l'événement heure système ingestion_time() Dans Splunk, chaque événement obtient un horodatage système de l’heure à laquelle l’événement a été indexé. Dans Kusto, vous pouvez définir une stratégie appelée ingestion_time qui expose une colonne système qui peut être référencée via la fonction ingestion_time().

Functions

Le tableau suivant spécifie les fonctions kusto équivalentes aux fonctions Splunk.

Splunk Kusto Commentaire
strcat strcat() (1)
split split() (1)
if iff() (1)
tonumber todouble()
tolong()
toint()
(1)
upper
lower
toupper()
tolower()
(1)
replace replace_string(), replace_strings() ou replace_regex() (1)
Bien que replace les fonctions prennent trois paramètres dans les deux produits, les paramètres sont différents.
substr substring() (1)
Notez également que Splunk utilise des index basés sur un seul. Kusto consigne des indices en base zéro.
tolower tolower() (1)
toupper toupper() (1)
match matches regex (2)
regex matches regex Dans Splunk, regex est un opérateur. Dans Kusto, il s’agit d’un opérateur relationnel.
searchmatch == Dans Splunk, searchmatch permet de rechercher la chaîne exacte.
random rand()
rand(n)
La fonction de Splunk retourne un nombre compris entre zéro et 231-1. Kusto retourne un nombre compris entre 0,0 et 1.0, ou si un paramètre est fourni, entre 0 et n-1.
now now() (1)
relative_time totimespan() (1)
Dans Kusto, l’équivalent de relative_time(datetimeVal, offsetVal) Splunk est datetimeVal + totimespan(offsetVal).
Par exemple, search | eval n=relative_time(now(), "-1d@d") devient ... | extend myTime = now() - totimespan("1d").

(1) Dans Splunk, la fonction est appelée à l’aide de l’opérateur eval . Dans Kusto, il est utilisé dans le cadre de extend ou project.
(2) Dans Splunk, la fonction est appelée à l’aide de l’opérateur eval . Dans Kusto, il peut être utilisé avec l’opérateur where .

Opérateurs

Les sections suivantes donnent des exemples d’utilisation de différents opérateurs dans Splunk et Kusto.

Note

Dans les exemples suivants, le champ rule Splunk est associé à une table dans Kusto et l’horodatage par défaut de Splunk est associé à la colonne Logs Analytics ingestion_time().

Dans Splunk, vous pouvez omettre le search mot clé et spécifier une chaîne non mise en guillemet. Dans Kusto, vous devez démarrer chaque requête avec find, une chaîne non mise en guillemet est un nom de colonne et la valeur de recherche doit être une chaîne entre guillemets.

Produit 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

Les requêtes de journal Kusto commencent à partir d’un jeu de résultats tabulaire dans lequel filter est appliqué. Dans Splunk, le filtrage est l’opération par défaut sur l’index actuel. Vous pouvez également utiliser l’opérateur where dans Splunk, mais nous ne le recommandons pas.

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

Obtenez n événements ou lignes à des fins d'inspection.

Les requêtes de journal Kusto prennent également en charge take comme alias de limit. Dans Splunk, si les résultats sont classés, head retourne les premiers n résultats. Dans Kusto, limit n’est pas ordonné, mais il retourne les premières n lignes trouvées.

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

Obtenir les premiers n événements ou lignes ordonnés par un champ ou une colonne

Pour les résultats inférieurs, dans Splunk, vous utilisez tail. Dans Kusto, vous pouvez spécifier la direction de classement à l'aide de asc.

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

Étendre le jeu de résultats avec de nouveaux champs ou colonnes

Splunk a une eval fonction, mais elle n’est pas comparable à l’opérateur eval dans Kusto. L’opérateur eval dans Splunk et l’opérateur extend dans Kusto prennent uniquement en charge les fonctions scalaires et les opérateurs arithmétiques.

Produit 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 utilise l’opérateur project-rename pour renommer un champ. Dans l’opérateur project-rename , une requête peut tirer parti de tous les index prédéfinis pour un champ. Splunk a un rename opérateur qui fait la même chose.

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

Mettre en forme les résultats et la projection

Splunk utilise la table commande pour sélectionner les colonnes à inclure dans les résultats. Kusto a un project opérateur qui fait la même chose et bien plus encore.

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

Splunk utilise la fields - commande pour sélectionner les colonnes à exclure des résultats. Kusto dispose d'un opérateur project-away qui fait la même chose.

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

Aggregation

Consultez la liste des fonctions de synthèse des agrégations disponibles.

Opérateur Splunk Exemple de Splunk Opérateur Kusto Exemple 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

Unir

join dans Splunk a des limitations substantielles. La sous-requête a une limite de 10 000 résultats (définie dans le fichier de configuration de déploiement) et un nombre limité de versions de jointure sont disponibles.

Produit 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

Trier

L’ordre de tri par défaut est croissant. Pour spécifier l’ordre décroissant, ajoutez un signe moins (-) avant le nom du champ. Kusto prend également en charge la définition de l'emplacement des valeurs nulles, soit au début, soit à la fin.

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

Développement à valeurs multiples

L’opérateur de développement à valeurs multiples est similaire à la fois dans Splunk et Kusto.

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

Facettes des résultats, champs intéressants

Dans Log Analytics dans le portail Azure, seule la première colonne est exposée. Toutes les colonnes sont disponibles via l’API.

Produit 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

Dédupliquer

Dans Kusto, vous pouvez utiliser summarize arg_min() pour inverser l’ordre de choix de l’enregistrement.

Produit 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

Graphique chronologique

Kusto et Splunk utilisent tous deux l’opérateur timechart pour visualiser les données au fil du temps. Dans Splunk, il agrège les données sur des intervalles de temps spécifiés et peut être utilisé avec différentes fonctions statistiques. Dans Kusto, l’équivalent est obtenu à l’aide des fonctions summarize et bin, suivies de l’opérateur graphique temporel de rendu.

Produit 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