Créer des règles de collecte de données (DCR) dans Azure Monitor
Plusieurs méthodes permettent de créer une règle de collecte des données (DCR) dans Azure Monitor. Dans certains cas, Azure Monitor crée et gère la DCR en fonction des paramètres que vous configurez dans le portail Azure. Vous pouvez même ne pas vous rendre compte que vous travaillez avec une DCR dans certains de ces cas. Pour d’autres scénarios, vous devrez peut-être créer vos propres DCR ou modifier des DCR existantes en travaillant directement avec leur définition en JSON. Cet article décrit les différentes méthodes de création d’une DCR et des recommandations sur leur modification et la résolution de leurs problèmes.
Remarque
Cet article explique comment créer et modifier la DCR elle-même. Pour créer et modifier des associations de règles de collecte de données, consultez Créer et gérer des associations de règles de collecte de données.
autorisations
Vous devez disposer des autorisations suivantes pour créer des DCR et des associations de DCR :
Rôle intégré | Étendues | Motif |
---|---|---|
Contributeur de surveillance |
|
Créez ou modifiez des DCR, attribuez des règles à la machine, déployez des associations. |
Contributeur de machine virtuelle Administrateur des ressources de la machine connectée à Azure |
|
Déployer des extensions d’agent sur la machine virtuelle. |
Tout rôle avec l’action Microsoft.Resources/deployments/* |
|
Déployer des modèles Azure Resource Manager. |
Important
Créez votre DCR dans la même région que votre espace de travail Log Analytics ou votre espace de travail Azure Monitor de destination. Vous pouvez associer la DCR à des machines ou à des conteneurs depuis tout abonnement ou groupe de ressources dans le locataire. Pour envoyer des données entre locataires, vous devez d’abord activer Azure Lighthouse.
Créer ou modifier une DCR en utilisant le Portail Azure
Le Portail Azure offre une expérience simplifiée pour la création d’une DCR pour des scénarios particuliers. En utilisant cette méthode, vous n’avez pas besoin de comprendre la structure d’une DCR, bien que vous puissiez être limité dans la configuration que vous pouvez effectuer, et que vous deviez peut-être modifier ultérieurement la définition DCR pour implémenter une fonctionnalité avancée telle qu’une transformation. L’expérience varie pour chaque scénario. En conséquence, reportez-vous à la documentation relative au scénario spécifique que vous utilisez, comme décrit dans le tableau suivant.
Scénario | Description |
---|---|
Activer VM Insights | Lorsque vous activez VM Insights sur une machine virtuelle, l’agent Azure Monitor est installé et une DCR est créée et associée à la machine virtuelle. Ce DCR collecte un ensemble prédéfini de compteurs de performances et ne doit pas être modifié. Consulter Activer VM Insights. |
Collecter des données clientes depuis une machine virtuelle | Créer une DCR dans le Portail Azure à l’aide d’une interface guidée pour sélectionner différentes sources de données depuis le système d’exploitation client d’une machine virtuelle. Par exemple, les événements Windows, les événements Syslog et les journaux d’activité texte. L’agent Azure Monitor est installé automatiquement si nécessaire, et une association est créée entre la DCR et chaque machine virtuelle que vous sélectionnez. Voir Collecter des données avec l’agent Azure Monitor. |
Exportation de métriques | Créer une DCR dans le Portail Azure à l’aide d’une interface guidée pour sélectionner les métriques des différents types de ressources à collecter. Une association est créée entre la DCR et chaque ressource que vous sélectionnez. Consultez Créer une règle de collecte de données (DCR) pour l'exportation de métriques. |
Création de la table | Lorsque vous créez une table dans un espace de travail Log Analytics en utilisant le Portail Azure, vous chargez des exemples de données qu’Azure Monitor utilise pour créer une DCR, y compris une transformation, qui peut être utilisée avec l’API Ingestion des journaux d’activité. Vous ne pouvez pas modifier cette DCR dans le Portail Azure, mais vous pouvez la modifier à l’aide de l’une des méthodes décrites dans cet article. Consultez Créer une table personnalisée. |
Surveillance Kubernetes | Pour surveiller un cluster Kubernetes, activer Container Insights pour les journaux d’activité et Prometheus pour les métriques. Une DCR pour chacun est créée et associée à la version conteneurisée de l’agent Azure Monitor dans le cluster. Vous devrez peut-être modifier la DCR Container Insights pour ajouter une transformation. Consultez Activer la surveillance des clusters Kubernetes et Transformations de données dans Container Insights. |
DCR de transformation de l’espace de travail | Les DCR de transformation d’espace de travail fournissent des transformations pour les scénarios de collecte de données qui n’utilisent pas encore de DCR. Vous pouvez créer cette DCR en utilisant la Portail Azure pour créer une transformation pour une table spécifique. Consulter Créer une DCR de transformation d’espace de travail. |
Définition DCR
Quelle que soit la façon dont elle est créée, chaque DCR a une définition qui suit un schéma JSON standard. Pour créer ou modifier une DCR en utilisant une méthode autre que le Portail Azure, vous devez travailler directement avec sa définition JSON. Pour certains scénarios, vous devez utiliser la définition JSON, car le Portail Azure ne fournit pas de moyen de configurer la DCR en fonction des besoins.
Vous pouvez afficher le JSON d’une DCR dans le Portail Azure en cliquant sur Affichage JSON dans le menu Vue d’ensemble.
Vérifiez que la version de l’API la plu récente est sélectionnée dans la liste déroulante des Versions ’API. Si ce n’est pas le cas, il se peut que certaines données JSON ne soient pas affichées.
Vous pouvez également récupérer le JSON de la DCR en appelant l’API DCR REST. Par exemple, le script PowerShell suivant récupère le JSON d’une DCR et l’enregistre dans un fichier.
$ResourceId = "<ResourceId>" # Resource ID of the DCR to edit
$FilePath = "<FilePath>" # File to store DCR content
$DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method GET
$DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File -FilePath $FilePath
Remarque
Vous pouvez obtenir les détails d’une DCR en utilisant la cmdlet Get-AzDataCollectionRule
dans PowerShell ou la commande az monitor data-collection rule show
dans Azure CLI, mais elles ne fournissent pas le JSON au format requis pour la modification. Utilisez plutôt PowerShell ou l’interface CLI pour appeler l’API REST, comme illustré dans l’exemple.
Créer ou modifier une DCR en utilisant JSON
En plus de modifier une DCR existante, vous pouvez en créer une en utilisant l’un des exemples de DCR qui fournissent le JSON pour plusieurs scénarios courants. Utilisez les informations contenues dans Structure d’une règle de collecte de données dans Azure Monitor pour modifier le fichier JSON pour votre environnement et vos exigences particuliers.
Une fois que vous avez la définition de votre DCR, vous pouvez la déployer sur Azure Monitor en utilisant le Portail Azure, l’interface CLI, PowerShell, l’API ou des modèles ARM.
Créer ou modifier une DCR avec l’interface CLI
Utilisez la commande az monitor data-collection rule create pour créer une DCR à partir de votre fichier JSON. Vous pouvez utiliser cette même commande pour mettre à jour une DCR existante.
az monitor data-collection rule create --location 'eastus' --resource-group 'my-resource-group' --name 'my-dcr' --rule-file 'C:\MyNewDCR.json' --description 'This is my new DCR'
Remarque
Bien que vous puissiez choisir d’utiliser les commandes PowerShell ou CLI pour créer et modifier une DCR, les méthodes API et ARM fournissent des messages d’erreur plus détaillés en cas d’erreurs de compilation.
Dans l’exemple suivant, la DCR spécifie un nom de table qui n’existe pas dans l’espace de travail Log Analytics de destination. La commande PowerShell retourne un message d’erreur générique, mais l’appel d’API retourne un message d’erreur détaillé qui spécifie l’erreur exacte.
Stratégies de modification et de test d’une DCR
Lorsque vous créez ou modifiez une DCR à l’aide de sa définition JSON, vous devez souvent effectuer plusieurs mises à jour pour obtenir les fonctionnalités souhaitées. Vous avez besoin d’une méthode efficace pour mettre à jour la DCR, la dépanner si vous n’obtenez pas les résultats attendus, puis effectuer des mises à jour supplémentaires. Cela est particulièrement vrai si vous ajoutez une transformation à la DCR, car vous devez valider que la requête fonctionne comme prévu. Étant donné que vous ne pouvez pas modifier le JSON directement dans le Portail Azure, voici quelques stratégies que vous pouvez utiliser.
Utiliser le fichier local comme source de la DCR
Si vous utilisez un fichier JSON local comme source des DCR que vous créez et modifiez, vous êtes assuré d’avoir toujours accès à la version de la définition DCR la plus récente. Cette méthode est idéale si vous souhaitez utiliser des outils de contrôle de version tels que GitHub ou Azure DevOps pour gérer vos modifications. Vous pouvez également utiliser un éditeur tel que VS Code pour apporter des modifications à la DCR, puis utiliser des outils en ligne de commande pour mettre à jour la DCR dans Azure Monitor, comme décrit ci-dessus.
Voici un exemple de script PowerShell que vous pouvez utiliser pour envoyer (push) des modifications à une DCR depuis un fichier source. Cela valide le fait que le fichier source est au format JSON avant de l’envoyer à Azure Monitor.
param (
[Parameter(Mandatory = $true)][string]$ResourceId, # Resource ID of the DCR
[Parameter(Mandatory = $true)][string]$FilePath # Path to the DCR JSON file to upload
)
# Read the DCR content from the file
Write-Host "Reading new DCR content from: $FilePath" -ForegroundColor Green
$DCRContent = Get-Content $FilePath -Raw
# Ensure the DCR content is valid JSON
try {
$ParsedDCRContent = $DCRContent | ConvertFrom-Json
} catch {
Write-Host "Invalid JSON content in file: $FilePath" -ForegroundColor Red
exit 1
}
# Create or update the DCR in the specified resource group
Write-Host "Deploying DCR $ResourceId ..." -ForegroundColor Green
Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method PUT -Payload $DCRContent
Enregistrer le contenu de la DCR dans un fichier temporaire
Si vous ne disposez pas de la définition DCR dans un fichier local, vous pouvez récupérer la définition à partir d’Azure Monitor et l’enregistrer dans un fichier temporaire. Vous pouvez ensuite modifier le fichier à l’aide d’un éditeur tel que VS Code avant d’envoyer les mises à jour à Azure Monitor.
Voici un exemple de script PowerShell que vous pouvez utiliser pour modifier une DCR existante dans Azure Monitor. Le script récupère la définition DCR et l’enregistre dans un fichier temporaire avant de lancer VS Code. Une fois que vous indiquez au script que vous avez enregistré vos modifications, la DCR est mis à jour avec le nouveau contenu et le fichier temporaire est supprimé.
param ([Parameter(Mandatory=$true)] $ResourceId)
# Get DCR content and save it to a local file
$FilePath = "temp.dcr"
$DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method GET
$DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File $FilePath
# Open DCR in code editor
code $FilePath | Wait-Process
{
#write DCR content back from the file
$DCRContent = Get-Content $FilePath -Raw
Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method PUT -Payload $DCRContent
}
#Delete temporary file
Remove-Item $FilePath
Utiliser un modèle ARM pour modifier une DCR existante
Si vous souhaitez effectuer vos modifications intégralement dans le Portail Azure, vous pouvez utiliser la fonctionnalité Exporter le modèle pour récupérer le modèle ARM d’une DCR. Vous pouvez ensuite modifier la définition dans le JSON et la redéployer dans le Portail Azure.
Sélectionnez la DCR que vous souhaitez modifier dans le Portail Azure, puis sélectionnez Exporter le modèle. Cliquez ensuite sur Déployer pour redéployer le même modèle.
Cliquez sur Modifier le modèle pour ouvrir une version modifiable du JSON de la DCR. Ne modifiez pas les valeurs des paramètres.
Apportez les modifications requises à la DCR, puis cliquez sur Enregistrer.
Si vous souhaitez créer une nouvelle DCR, modifiez le paramètre de nom. Sinon, laissez les paramètres inchangés. Cliquez sur Vérifier + créer pour déployer le modèle modifié et Créer pour créer la nouvelle DCR.
Si la DCR est valide et sans erreur, le déploiement réussit et la DCR sera mise à jour avec la nouvelle configuration. Cliquez sur Accéder à la ressource pour ouvrir la DCR modifiée.
Si la DCR présente des erreurs de compilation, vous recevrez un message indiquant que votre déploiement a échoué. Cliquez sur Détails de l’erreur et Détails de l’opération pour afficher les détails de l’erreur. Cliquez sur Redéployer, puis à nouveau sur Modifier le modèle pour apporter les modifications nécessaires à la DCR, puis enregistrez-le et redéployez-le.
Vérifier et résoudre les problèmes de collecte de données
Une fois la DCR installé, plusieurs minutes peuvent s'écouler avant que les modifications prennent effet et que les données soient collectées avec la DCR mise à jour. Si vous constatez qu’aucune donnée n’est collectée, il peut être difficile de déterminer la cause racine du problème. Utilisez les fonctionnalités de supervision DCR, qui incluent des métriques et des journaux pour vous aider à résoudre les problèmes.
Les métriques DCR sont collectées automatiquement pour toutes les DCR et vous pouvez les analyser en utilisant un explorateur de métriques comme les métriques de plateforme pour d’autres ressources Azure. Activez les journaux d’erreurs DCR pour obtenir des informations détaillées sur les erreurs lorsque le traitement des données n’a pas réussi.
Si vous ne voyez pas de données collectées, suivez ces étapes de base pour résoudre le problème.
- Vérifiez des métriques telles que
Logs Ingestion Bytes per Min
etLogs Rows Received per Min
pour être certain que les données atteignent Azure Monitor. Si ce n’est pas le cas, vérifiez votre source de données pour être certain qu’elle envoie des données comme prévu. - Vérifiez
Logs Rows Dropped per Min
pour voir si des lignes sont supprimées. Cela peut ne pas indiquer une erreur, car les lignes peuvent être supprimées par une transformation. Toutefois, si les lignes supprimées sont identiques àLogs Rows Dropped per Min
, cela signifie qu’aucune donnée ne sera ingérée dans l’espace de travail. ExaminezLogs Transformation Errors per Min
pour voir s’il existe des erreurs de transformation. - Vérifiez
Logs Transformation Errors per Min
pour déterminer s’il existe des erreurs liées aux transformations appliquées aux données entrantes. Ces erreurs peuvent être dues aux modifications apportées à la structure de données ou à la transformation elle-même. - Vérifiez la table
DCRLogErrors
pour voir si des erreurs d’ingestion ont été journalisées. Cela peut fournir des détails supplémentaires pour identifier la cause racine du problème.