Fonctionnalités KQL prises en charge dans les transformations Azure Monitor
Les transformations dans Azure Monitor vous permettent d’exécuter une requête KQL sur les données Azure Monitor entrantes pour filtrer ou modifier les données entrantes avant de les stocker dans un espace de travail Log Analytics. Cet article détaille les considérations relatives à KQL et les fonctionnalités prises en charge dans les requêtes de transformation en plus des opérateurs spéciaux disponibles uniquement dans les transformations.
Étant donné que les transformations sont appliquées individuellement à chaque enregistrement, elles ne peuvent pas utiliser des opérateurs KQL agissants sur plusieurs enregistrements. Seuls les opérateurs qui acceptent une seule ligne comme entrée et ne retournent pas plus d’une ligne sont pris en charge. Par exemple, la fonctionnalité summarize n’est pas prise en charge, car elle permet de récapituler plusieurs enregistrements.
Seuls les opérateurs répertoriés dans cet article sont pris en charge dans les transformations. Les autres opérateurs qui peuvent être utilisés dans d’autres requêtes de journal ne sont pas pris en charge dans les transformations.
Considérations spéciales
Commande parse
La commande parse d’une transformation est limitée à 10 colonnes par instruction pour des raisons de performances. Si votre transformation nécessite l’analyse de plus de 10 colonnes, fractionnez-la en plusieurs instructions, comme indiqué dans Diviser les commandes parse volumineuses.
Gestion des données dynamiques
Considérons l’entrée suivante avec des données dynamiques :
{
"TimeGenerated" : "2021-11-07T09:13:06.570354Z",
"Message": "Houston, we have a problem",
"AdditionalContext": {
"Level": 2,
"DeviceID": "apollo13"
}
}
Pour accéder aux propriétés dans AdditionalContext, définissez-la en tant que colonne de type dynamique dans le flux d’entrée :
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "Message",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "dynamic"
}
]
Le contenu de la colonne AdditionalContext peut désormais être analysé et utilisé dans la transformation KQL :
source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)
Littéraux dynamiques
Utilisez la fonction parse_json
pour gérer les littéraux dynamiques.
Par exemple, les requêtes suivantes offrent la même fonctionnalité :
print d=dynamic({"a":123, "b":"hello", "c":[1,2,3], "d":{}})
print d=parse_json('{"a":123, "b":"hello", "c":[1,2,3], "d":{}}')
Fonctions spéciales
Les fonctions suivantes ne sont disponibles que dans des transformations. Elles ne peuvent pas être utilisées dans d’autres requêtes de journal.
parse_cef_dictionary
Étant donné une chaîne contenant un message CEF, parse_cef_dictionary
analyse la propriété Extension du message dans un objet clé/valeur dynamique. Le point-virgule est un caractère réservé qui doit être remplacé avant de transmettre le message brut à la méthode, comme illustré dans l’exemple ci-dessous.
| extend cefMessage=iff(cefMessage contains_cs ";", replace(";", " ", cefMessage), cefMessage)
| extend parsedCefDictionaryMessage =parse_cef_dictionary(cefMessage)
| extend parsecefDictionaryExtension = parsedCefDictionaryMessage["Extension"]
| project TimeGenerated, cefMessage, parsecefDictionaryExtension
geo_location
À partir d’une chaîne donnée contenant une adresse IP (IPv4 et IPv6 sont pris en charge), la fonction geo_location
retourne un emplacement géographique approximatif, avec les attributs suivants :
- Country
- Région
- State
- Ville
- Latitude
- Longitude
| extend GeoLocation = geo_location("1.0.0.5")
Important
En raison de la nature du service de géolocalisation IP utilisé par cette fonction, une latence d’ingestion des données peut être observée dans le cas d’une utilisation excessive. Faites preuve de prudence lorsque vous utilisez cette fonction plusieurs fois par transformation.
Instructions prises en charge
Let, instruction
La partie droite de let
peut représenter une expression scalaire, une expression tabulaire ou une fonction définie par l’utilisateur. Seules les fonctions définies par l’utilisateur avec des arguments scalaires sont prises en charge.
Instructions d’expression tabulaire
Voici les seules sources de données prises en charge pour l’instruction KQL dans une transformation :
source qui représente les données sources. Par exemple :
source | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41" | project PreciseTimeStamp, Message
Opérateur
print
, qui produit toujours une seule ligne. Par exemple :print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
Opérateurs tabulaires pris en charge
extend
project
print
where
parse
project-away
project-rename
datatable
columnifexists
(utilisez columnifexists à la place de column_ifexists)
Opérateurs scalaires pris en charge
- Tous les opérateurs numériques sont pris en charge.
- Tous les opérateurs arithmétiques Datetime and Timespan sont pris en charge.
- Les opérateurs de chaîne suivants sont pris en charge.
- `=
!=
=~
!~
contains
!contains
contains_cs
!contains_cs
has
!has
has_cs
!has_cs
startswith
!startswith
startswith_cs
!startswith_cs
endswith
!endswith
endswith_cs
!endswith_cs
matches regex
in
!in
- Les opérateurs au niveau du bit suivants sont pris en charge.
binary_and()
binary_or()
binary_xor()
binary_not()
binary_shift_left()
binary_shift_right()
Fonctions scalaires
- Fonctions au niveau du bit
- Fonctions de conversion
- Fonctions DateTime et TimeSpan
- Fonctions dynamiques et fonctions de tableau
- Fonctions mathématiques
- Fonctions conditionnelles
- Fonctions de chaîne
base64_encodestring
(utilisez base64_encodestring à la place de base64_encode_tostring)base64_decodestring
(utilisez base64_decodestring à la place de base64_decode_tostring)countof
extract
extract_all
indexof
isempty
isnotempty
parse_json
replace
split
strcat
strcat_delim
strlen
substring
tolower
toupper
hash_sha256
- Fonctions de type
Identificateur quoting
Utilisez l’identificateur quoting si nécessaire.
Étapes suivantes
- Créez une règle de collecte de données et une association à celle-ci à partir d’une machine virtuelle à l’aide de l’agent Azure Monitor.