De Splunk à la requête de journal Azure MonitorSplunk to Azure Monitor log query

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 dans Azure Monitor.This article is intended to assist users who are familiar with Splunk to learn the Kusto query language to write log queries in Azure Monitor. Des comparaisons directes sont établies entre les deux pour vous permettre de comprendre les principales différences et les similitudes, et éventuellement d’approfondir vos connaissances.Direct comparisons are made between the two to understand key differences and also similarities where you can leverage your existing knowledge.

Structure et conceptsStructure and concepts

Le tableau suivant compare les concepts et les structures de données de Splunk et des journaux d’activité Azure Monitor.The following table compares concepts and data structures between Splunk and Azure Monitor logs.

ConceptConcept SplunkSplunk Azure MonitorAzure Monitor CommentaireComment
Unité de déploiementDeployment unit clustercluster clustercluster Azure Monitor autorise les requêtes entre clusters arbitraires.Azure Monitor allows arbitrary cross cluster queries. Ce n’est pas le cas de Splunk.Splunk does not.
Caches de donnéesData caches compartimentsbuckets Stratégies de rétention et mise en cacheCaching and retention policies Contrôle la période et le niveau de mise en cache des données.Controls the period and caching level for the data. Ce paramètre a un impact direct sur les performances des requêtes et le coût du déploiement.This setting directly impacts the performance of queries and cost of the deployment.
Partition logique des donnéesLogical partition of data indexindex databasedatabase Permet une séparation logique des données.Allows logical separation of the data. Les deux implémentations autorisent les unions et les jointures entre ces partitions.Both implementations allow unions and joining across these partitions.
Métadonnées d’événement structuréesStructured event metadata N/AN/A tabletable Splunk n’a pas le concept exposé au langage de recherche de métadonnées d’événement.Splunk does not have the concept exposed to the search language of event metadata. Les journaux d’activité Azure Monitor disposent du concept de table comportant des colonnes.Azure Monitor logs has the concept of a table, which has columns. Chaque instance d’événement est mappée à une ligne.Each event instance is mapped to a row.
Enregistrement de donnéesData record événementevent lignerow Changement de terminologie uniquement.Terminology change only.
Attribut d’enregistrement de donnéesData record attribute fieldfield colonnecolumn Dans Azure Monitor, elle est prédéfinie dans le cadre de la structure de la table.In Azure Monitor, this is predefined as part of the table structure. Dans Splunk, chaque événement possède son propre ensemble de champs.In Splunk, each event has its own set of fields.
TypesTypes type de donnéesdatatype type de donnéesdatatype Les types de données Azure Monitor sont plus explicites, car ils sont définis sur les colonnes.Azure Monitor datatypes are more explicit as they are set on the columns. Les deux ont la possibilité d’utiliser dynamiquement des types de données et un ensemble de types de données à peu près équivalent, notamment la prise en charge JSON.Both have the ability to work dynamically with data types and roughly equivalent set of datatypes including JSON support.
Requête et rechercheQuery and search recherchesearch queryquery Les concepts sont essentiellement les mêmes entre Azure Monitor et Splunk.Concepts are essentially the same between both Azure Monitor and Splunk.
Durée d’ingestion des événementsEvent ingestion time Temps systèmeSystem Time ingestion_time()ingestion_time() Dans Splunk, chaque événement obtient un horodatage système de l’heure à laquelle l’événement a été indexé.In Splunk, each event gets a system timestamp of the time that the event was indexed. Dans Azure Monitor, vous pouvez définir une stratégie nommée ingestion_time qui expose une colonne système à laquelle la fonction ingestion_time() fait référence.In Azure Monitor, you can define a policy called ingestion_time that exposes a system column that can be referenced through the ingestion_time() function.

FonctionsFunctions

Le tableau suivant spécifie les équivalences entre les fonctions Azure Monitor et Splunk.The following table specifies functions in Azure Monitor that are equivalent to Splunk functions.

SplunkSplunk Azure MonitorAzure Monitor CommentaireComment
strcatstrcat strcat()strcat() (1)(1)
splitsplit split()split() (1)(1)
ifif iff()iff() (1)(1)
tonumbertonumber todouble()todouble()
tolong()tolong()
toint()toint()
(1)(1)
upperupper
lowerlower
toupper()toupper()
tolower()tolower()
(1)(1)
remplacerreplace replace()replace() (1)(1)
Notez également que si replace() prend trois paramètres dans les deux produits, les paramètres sont différents.Also note that while replace() takes three parameters in both products, the parameters are different.
substrsubstr substring()substring() (1)(1)
Notez également que Splunk utilise des index de base un.Also note that Splunk uses one-based indices. Azure Monitor note des index de base zéro.Azure Monitor notes zero-based indices.
tolowertolower tolower()tolower() (1)(1)
touppertoupper toupper()toupper() (1)(1)
matchmatch matches regexmatches regex (2)(2)
regexregex matches regexmatches regex Dans Splunk, regex est un opérateur.In Splunk, regex is an operator. Dans Azure Monitor, il s’agit d’un opérateur relationnel.In Azure Monitor, it's a relational operator.
searchmatchsearchmatch == Dans Splunk, searchmatch permet de rechercher la chaîne exacte.In Splunk, searchmatch allows searching for the exact string.
randomrandom rand()rand()
rand(n)rand(n)
La fonction de Splunk retourne un nombre compris entre zéro et 231-1.Splunk's function returns a number from zero to 231-1. La fonction Azure Monitor retourne un nombre compris entre 0,0 et 1,0 ou, si un paramètre est fourni, entre 0 et n-1.Azure Monitor' returns a number between 0.0 and 1.0, or if a parameter provided, between 0 and n-1.
nownow now()now() (1)(1)
relative_timerelative_time totimespan()totimespan() (1)(1)
Dans Azure Monitor, l’équivalent Splunk de relative_time(datetimeVal, offsetVal) est datetimeVal + totimespan(offsetVal).In Azure Monitor, Splunk's equivalent of relative_time(datetimeVal, offsetVal) is datetimeVal + totimespan(offsetVal).
Par exemple, search | eval n=relative_time(now(), "-1d@d") devient ... | extend myTime = now() - totimespan("1d").For example, search | eval n=relative_time(now(), "-1d@d") becomes ... | extend myTime = now() - totimespan("1d").

(1) Dans Splunk, la fonction est appelée avec l’opérateur eval.(1) In Splunk, the function is invoked with the eval operator. Dans Azure Monitor, elle est utilisée dans le cadre de extend ou de project.In Azure Monitor, it is used as part of extend or project.
(2) Dans Splunk, la fonction est appelée avec l’opérateur eval.(2) In Splunk, the function is invoked with the eval operator. Dans Azure Monitor, elle peut être utilisée avec l’opérateur where.In Azure Monitor, it can be used with the where operator.

OpérateursOperators

Les sections suivantes donnent des exemples d’utilisation de différents opérateurs entre Splunk et Azure Monitor.The following sections give examples of using different operators between Splunk and Azure Monitor.

Notes

Pour les besoins de l’exemple suivant, le champ Splunk rule est mappé à une table dans Azure Monitor et le timestamp Splunk par défaut est mappé à la colonne ingestion_time() de Log Analytics.For the purpose of the following example, the Splunk field rule maps to a table in Azure Monitor, and Splunk's default timestamp maps to the Logs Analytics ingestion_time() column.

Dans Splunk, vous pouvez omettre le mot clé search et spécifier une chaîne sans guillemets.In Splunk, you can omit the search keyword and specify an unquoted string. Dans Azure Monitor, chaque requête doit commencer par find, une chaîne sans guillemets est un nom de colonne et la valeur de recherche doit être une chaîne entre guillemets.In Azure Monitor you must start each query with find, an unquoted string is a column name, and the lookup value must be a quoted string.

OpérateurOperator ExempleExample
SplunkSplunk searchsearch search Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" earliest=-24h
Azure MonitorAzure Monitor findfind find Session.Id=="c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time()> ago(24h)

FiltrerFilter

Les requêtes de journal Azure Monitor commencent à partir d’un jeu de résultats tabulaire où se trouve le filtre.Azure Monitor log queries start from a tabular result set where the filter. Dans Splunk, le filtrage est l’opération par défaut sur l’index actuel.In Splunk, filtering is the default operation on the current index. Vous pouvez également utiliser l’opérateur where dans Splunk, mais ce n’est pas recommandé.You can also use where operator in Splunk, but it is not recommended.

OpérateurOperator ExempleExample
SplunkSplunk searchsearch Event.Rule="330009.2" Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" _indextime>-24h
Azure MonitorAzure Monitor wherewhere Office_Hub_OHubBGTaskError
| where Session_Id == "c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time() > ago(24h)

Obtention de n événements/lignes pour inspectionGetting n events/rows for inspection

Les requêtes de journal Azure Monitor prennent également en charge take comme alias de limit.Azure Monitor log queries also support take as an alias to limit. Dans Splunk, si les résultats sont triés, head retourne les n premiers résultats.In Splunk, if the results are ordered, head will return the first n results. Dans Azure Monitor, la limite n’est pas ordonnée, mais retourne les n premières lignes trouvées.In Azure Monitor, limit is not ordered but returns the first n rows that are found.

OpérateurOperator ExempleExample
SplunkSplunk headhead Event.Rule=330009.2
| head 100
Azure MonitorAzure Monitor limitlimit Office_Hub_OHubBGTaskError
| limit 100

Obtention des n premiers événements/premières lignes classé(e)s selon un champ/une colonneGetting the first n events/rows ordered by a field/column

Pour les derniers résultats, dans Splunk vous utilisez tail.For bottom results, in Splunk you use tail. Dans Azure Monitor, la direction de tri est spécifiée avec asc.In Azure Monitor you can specify the ordering direction with asc.

OpérateurOperator ExempleExample
SplunkSplunk headhead Event.Rule="330009.2"
| sort Event.Sequence
| head 20
Azure MonitorAzure Monitor toptop Office_Hub_OHubBGTaskError
| top 20 by Event_Sequence

Extension du jeu de résultats avec de nouveaux champs ou de nouvelles colonnesExtending the result set with new fields/columns

Splunk a également une fonction eval, qui ne doit pas être comparée à l’opérateur eval.Splunk also has an eval function, which is not to be comparable with the eval operator. Les opérateurs eval dans Splunk et extend dans Azure Monitor ne prennent en charge que les fonctions scalaires et les opérateurs arithmétiques.Both the eval operator in Splunk and the extend operator in Azure Monitor only support scalar functions and arithmetic operators.

OpérateurOperator ExempleExample
SplunkSplunk evaleval Event.Rule=330009.2
| eval state= if(Data.Exception = "0", "success", "error")
Azure MonitorAzure Monitor extendextend Office_Hub_OHubBGTaskError
| extend state = iif(Data_Exception == 0,"success" ,"error")

RenommerRename

Azure Monitor utilise l’opérateur project-rename pour renommer un champ.Azure Monitor uses the project-rename operator to rename a field. project-rename permet à la requête de tirer parti de tous les index prédéfinis pour un champ.project-rename allows the query to take advantage of any indexes pre-built for a field. Splunk a un opérateur rename pour faire cela.Splunk has a rename operator to do the same.

OpérateurOperator ExempleExample
SplunkSplunk renamerename Event.Rule=330009.2
| rename Date.Exception as execption
Azure MonitorAzure Monitor project-renameproject-rename Office_Hub_OHubBGTaskError
| project-rename exception = Date_Exception

Mettre en forme les résultats/ProjectionFormat results/Projection

Splunk ne semble pas avoir d’opérateur similaire à project-away.Splunk does not seem to have an operator similar to project-away. Vous pouvez utiliser l’interface utilisateur pour filtrer les champs.You can use the UI to filter away fields.

OpérateurOperator ExempleExample
SplunkSplunk tabletable Event.Rule=330009.2
| table rule, state
Azure MonitorAzure Monitor projectproject
project-awayproject-away
Office_Hub_OHubBGTaskError
| project exception, state

AgrégationAggregation

Pour connaître les différentes fonctions d’agrégation, voir Agrégations dans les requêtes de journal Azure Monitor .See the Aggregations in Azure Monitor log queries for the different aggregation functions.

OpérateurOperator ExempleExample
SplunkSplunk statsstats search (Rule=120502.*)
| stats count by OSEnv, Audience
Azure MonitorAzure Monitor summarizesummarize Office_Hub_OHubBGTaskError
| summarize count() by App_Platform, Release_Audience

JoinJoin

La jointure dans Splunk présente des limitations importantes.Join in Splunk has significant limitations. La sous-requête a une limite de 10 000 résultats (définie dans le fichier de configuration de déploiement), et il existe un nombre limité de variantes de jointure.The subquery has a limit of 10000 results (set in the deployment configuration file), and there a limited number of join flavors.

OpérateurOperator ExempleExample
SplunkSplunk joinjoin Event.Rule=120103* | stats by Client.Id, Data.Alias | join Client.Id max=0 [search earliest=-24h Event.Rule="150310.0" Data.Hresult=-2147221040]
Azure MonitorAzure Monitor joinjoin 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

TrierSort

Dans Splunk, pour trier dans l’ordre croissant, vous devez utiliser l’opérateur reverse.In Splunk, to sort in ascending order you must use the reverse operator. Azure Monitor permet également de définir l’emplacement des valeurs Null (au début ou à la fin).Azure Monitor also supports defining where to put nulls, at the beginning or at the end.

OpérateurOperator ExempleExample
SplunkSplunk sortsort Event.Rule=120103
| sort Data.Hresult
| reverse
Azure MonitorAzure Monitor order byorder by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

Développement à valeurs multiplesMultivalue expand

Cet opérateur est similaire dans Splunk et dans Azure Monitor.This is a similar operator in both Splunk and Azure Monitor.

OpérateurOperator ExempleExample
SplunkSplunk mvexpandmvexpand mvexpand foo
Azure MonitorAzure Monitor mvexpandmvexpand mvexpand foo

Facettes de résultats, champs intéressantsResults facets, interesting fields

Dans Log Analytics, sur le Portail Azure, seule la première colonne est exposée.In Log Analytics in the Azure portal, only the first column is exposed. Toutes les colonnes sont disponibles via l’API.All columns are available through the API.

OpérateurOperator ExempleExample
SplunkSplunk fieldsfields Event.Rule=330009.2
| fields App.Version, App.Platform
Azure MonitorAzure Monitor facetsfacets Office_Excel_BI_PivotTableCreate
| facet by App_Branch, App_Version

DédupliquerDe-duplicate

Vous pouvez utiliser summarize arg_min() à la place pour inverser l’ordre dans lequel l’enregistrement est choisi.You can use summarize arg_min() instead to reverse the order of which record gets chosen.

OpérateurOperator ExempleExample
SplunkSplunk dedupdedup Event.Rule=330009.2
| dedup device_id sortby -batterylife
Azure MonitorAzure Monitor summarize arg_max()summarize arg_max() Office_Excel_BI_PivotTableCreate
| summarize arg_max(batterylife, *) by device_id

Étapes suivantesNext steps