Partager via


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.

Étapes suivantes