Aide-mémoire sur Splunk avec Kusto
Cet article a pour but d’aider les utilisateurs qui connaissent Splunk à apprendre le langage de requête Kusto pour écrire des requêtes de journal avec Kusto. Des comparaisons directes sont effectuées entre les deux pour mettre en évidence les principales différences et similitudes, afin que vous puissiez vous appuyer sur 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 les requêtes arbitraires entre clusters. Splunk ne le fait pas. |
caches de données | compartiments | stratégies de mise en cache et de rétention | Contrôle la période et le niveau 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 | database | Permet une séparation logique des données. Les deux implémentations autorisent les unions et les jointures 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 ont le concept d’une table, qui contient des colonnes. Chaque instance d’événement est mappée à une ligne. |
enregistrement | événement | ligne | Changement de terminologie uniquement. |
attribut record | field | colonne | Dans Kusto, ce paramètre est prédéfini dans le cadre de la structure de table. Dans Splunk, chaque événement possède son propre ensemble de champs. |
types | type de données | type de données | 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 un ensemble de types de données à peu près équivalent, y compris la prise en charge JSON. |
requête et recherche | recherche | query | Les concepts sont essentiellement les mêmes entre Kusto et Splunk. |
heure d’ingestion d’é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(). |
Fonctions
Le tableau suivant spécifie les fonctions dans Kusto qui sont é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 de base un. Kusto note les index de 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 splunk retourne un nombre compris entre zéro et 231-1. Kusto renvoie 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 Splunk est relative_time(datetimeVal, offsetVal) 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 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.
Notes
Dans les exemples suivants, le champ rule
Splunk est mappé à une table dans Kusto, et l’horodatage par défaut de Splunk est mappé à la colonne Logs Analytics ingestion_time()
.
Recherche
Dans Splunk, vous pouvez omettre le mot clé search
et spécifier une chaîne sans guillemets. Dans Kusto, vous devez démarrer chaque requête avec find
, une chaîne non citée est un nom de colonne et la valeur de recherche doit être une chaîne entre guillemets.
Produit | Opérateur | Exemple |
---|---|---|
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) |
Filtrer
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 | Opérateur | Exemple |
---|---|---|
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) |
Obtenir n événements ou lignes à des fins d’inspection
Les requêtes de journal Kusto prennent également en charge take
en tant qu’alias de limit
. Dans Splunk, si les résultats sont triés, head
retourne les n premiers résultats. Dans Kusto, limit
n’est pas ordonné, mais retourne les n premières lignes trouvées.
Produit | Opérateur | Exemple |
---|---|---|
Splunk | head |
Event.Rule=330009.2 | head 100 |
Kusto | limit |
Office_Hub_OHubBGTaskError | limit 100 |
Obtenir les n premiers événements ou lignes classés par champ ou colonne
Pour les résultats inférieurs, dans Splunk, vous utilisez tail
. Dans Kusto, vous pouvez spécifier le sens du classement à l’aide de asc
.
Produit | Opérateur | Exemple |
---|---|---|
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 en charge uniquement les fonctions scalaires et les opérateurs arithmétiques.
Produit | Opérateur | Exemple |
---|---|---|
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") |
Renommer
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 | Opérateur | Exemple |
---|---|---|
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 plus.
Produit | Opérateur | Exemple |
---|---|---|
Splunk | table |
Event.Rule=330009.2 | table rule, state |
Kusto | project |
Office_Hub_OHubBGTaskError | project exception, state |
Splunk utilise la field -
commande pour sélectionner les colonnes à exclure des résultats. Kusto a un project-away
opérateur qui fait la même chose.
Produit | Opérateur | Exemple |
---|---|---|
Splunk | fields - |
Event.Rule=330009.2 | fields - quota, hightest_seller |
Kusto | project-away |
Office_Hub_OHubBGTaskError | project-away exception, state |
Agrégation
Consultez la liste des fonctions d’agrégations de synthèse disponibles.
Opérateur Splunk | Exemple 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 |
Join
join
dans Splunk a des limitations substantielles. La sous-requête a une limite de 10 000 résultats (défini dans le fichier de configuration de déploiement) et un nombre limité d’arômes de jointure sont disponibles.
Produit | Opérateur | Exemple |
---|---|---|
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
Dans Splunk, pour trier dans l’ordre croissant, vous devez utiliser l’opérateur reverse
. Kusto prend également en charge la définition de l’emplacement où placer les valeurs Null, soit au début, soit à la fin.
Produit | Opérateur | Exemple |
---|---|---|
Splunk | sort |
Event.Rule=120103 | sort Data.Hresult | reverse |
Kusto | order by |
Office_Hub_OHubBGTaskError | order by Data_Hresult, desc |
Développement à valeurs multiples
L’opérateur d’extension à valeurs multiples est similaire dans Splunk et Kusto.
Produit | Opérateur | Exemple |
---|---|---|
Splunk | mvexpand |
mvexpand solutions |
Kusto | mv-expand |
mv-expand solutions |
Facettes des résultats, champs intéressants
Dans Log Analytics, sur le Portail Azure, seule la première colonne est exposée. Toutes les colonnes sont disponibles via l’API.
Produit | Opérateur | Exemple |
---|---|---|
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 | Opérateur | Exemple |
---|---|---|
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 |
Contenu connexe
- Parcourez un tutoriel sur le Langage de requête Kusto.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour