Exemples de transformations dans Azure Monitor
Les transformations dans Azure Monitor vous permettent de filtrer ou de modifier des données entrantes avant qu’elles ne soient envoyées à l’espace de travail Log Analytics. Cet article fournit des exemples de requêtes pour les scénarios courants que vous pouvez utiliser pour commencer à créer vos propres transformations. Consultez Créer une transformation dans Azure Monitor pour plus d’informations sur le test de ces transformations et leur ajout à une règle de collecte de données (DCR).
Réduire les coûts des données
Étant donné que des coûts d’ingestion vous sont facturés pour toute donnée envoyée à un espace de travail Log Analytics, vous souhaitez filtrer les données dont vous n’avez pas besoin pour réduire ces coûts.
Filtrer les lignes de données
Utilisez une instruction where
pour filtrer les données entrantes qui correspondent à des exigences particulières. Si l’enregistrement entrant ne correspond pas à l’instruction, l’enregistrement n’est pas envoyé à la destination. Dans l’exemple suivant, seuls les enregistrements avec une gravité de Critical
sont collectés.
source | where severity == "Critical"
Filtrer les colonnes de données
Supprimez les colonnes de la source de données qui ne sont pas nécessaires pour économiser sur les coûts d’ingestion des données. Utilisez une instruction project
pour spécifier les colonnes de votre sortie ou utilisez project-away
pour spécifier uniquement les colonnes à supprimer. Dans l’exemple suivant, la colonne RawData
est supprimée de la sortie.
source | project-away RawData
Analysez les données importantes d’une colonne
Vous pouvez avoir une colonne avec des données importantes enterrées dans du texte excessif. Conservez uniquement les données précieuses et supprimez le texte qui n’est pas nécessaire. Utilisez fonctions de chaîne telles que substring
et extract
pour analyser les données souhaitées. Vous pouvez également analyser les données à l’aide de parse
ou de split
pour décomposer une seule colonne dans plusieurs valeurs et sélectionner celle souhaitée. Utilisez ensuite extend
pour créer une colonne avec les données analysées et project-away
pour supprimer la colonne d’origine.
Avertissement
Consultez décomposer les commandes d’analyse volumineuses pour obtenir des conseils sur l’utilisation de commandes d’analyse complexes.
Dans l’exemple suivant, la colonne RequestContext
contient JSON avec ResourceId de l’espace de travail. Les fonctions parse_json
et split
sont utilisées pour extraire le nom simple de l’espace de travail. Une nouvelle colonne est créée pour cette valeur et les autres colonnes sont supprimées.
source
| extend Context = parse_json(RequestContext)
| extend Workspace_CF = tostring(Context['workspaces'][0])
| extend WorkspaceName_CF = split(Workspace_CF,"/")[8]
| project-away RequestContext, Context, Workspace_CF
Envoyer des lignes à des journaux de base
Envoyez des lignes dans vos données qui nécessitent des fonctionnalités de requête de base à des tables de journaux de base pour un coût d’ingestion inférieur. Consultez Envoyer des données à plusieurs tables pour plus d’informations sur l’envoi de données à plusieurs tables.
Supprimer des données sensibles
Vous avez probablement une source de données qui envoie des informations que vous ne souhaitez pas stocker pour des raisons de confidentialité ou de conformité.
Filtrez les informations sensibles
Utilisez les mêmes stratégies décrites dans Réduire les coûts de données pour filtrer des lignes entières ou des colonnes particulières qui contiennent des informations sensibles. Dans l’exemple suivant, la colonne ClientIP
est supprimée de la sortie.
source | project-away ClientIP
Obfusquer des informations sensibles
Utilisez les fonctions de chaîne pour remplacer des informations telles que des chiffres dans une adresse IP ou un numéro de téléphone par un caractère commun. L’exemple suivant remplace le nom d’utilisateur dans une adresse e-mail par « ***** ».
source | extend Email = replace_string(Email,substring(Email,0,indexof(Email,"@")),"*****")
Envoyez à une autre table
Envoyez des enregistrements sensibles à une autre table avec une autre configuration de contrôle d’accès en fonction du rôle. Consultez Envoyer des données à plusieurs tables pour plus d’informations sur l’envoi de données à plusieurs tables.
Enrichir les données
Utilisez une transformation pour ajouter des informations aux données qui fournissent un contexte métier ou simplifie l’interrogation des données ultérieurement. Utilisez les fonctions de chaîne pour extraire des informations critiques d’une colonne, puis utilisez l’instruction extend
pour ajouter une nouvelle colonne à la source de données. L’exemple suivant ajoute une colonne identifiant si une adresse IP dans une autre colonne est interne ou externe.
source | extend IpLocation = iff(split(ClientIp,".")[0] in ("10","192"), "Internal", "External")
Mettre en forme les données pour la destination
Vous pouvez avoir une source de données qui envoie des données dans un format qui ne correspond pas à la structure de la table de destination. Utilisez une transformation pour reformater les données vers le schéma requis.
Modifier le schéma
Utilisez des commandes telles que extend
et project
pour modifier le schéma des données entrantes pour qu’elles correspondent à la table cible. Dans l’exemple suivant, une nouvelle colonne appelée TimeGenerated
est ajoutée aux données sortantes à l’aide d’une fonction KQL pour retourner l’heure actuelle.
source | extend TimeGenerated = now()
Analyser les données
Utilisez l’opérateur split
ou parse
pour analyser des données en plusieurs colonnes dans la table de destination. Dans l’exemple suivant, les données entrantes ont une colonne délimitée par des virgules nommée RawData
qui est divisée en colonnes individuelles pour la table de destination.
source
| project d = split(RawData,",")
| project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])
Avertissement
Consultez décomposer les commandes d’analyse volumineuses pour obtenir des conseils sur l’utilisation de commandes d’analyse complexes.