Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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) |
upperlower |
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().
Rechercher
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 |
Contenu connexe
- Parcourez un didacticiel sur le langage de requête Kusto.