Envoyer des données du journal d’activité Azure Monitor
Le journal d’activité Azure Monitor est un journal de plateforme qui fournit des insights sur des événements au niveau des abonnements. Le journal d’activité inclut des informations telles que le moment auquel une ressource a été modifiée ou une machine virtuelle a été démarrée. Vous pouvez afficher le journal d’activité dans le Portail Azure ou récupérer des entrées avec PowerShell et l’interface Azure CLI. Cet article fournit des informations sur la façon d’afficher le journal d’activité et d’envoyer celui-ci vers différentes destinations.
Créez un paramètre de diagnostic pour envoyer le journal d’activité à un ou plusieurs de ces emplacements :
- Journaliser Analytique espace de travail pour des requêtes et des alertes plus complexes
- Azure Event Hubs vers le transfert des journaux en dehors d’Azure.
- Stockage Azure pour un archivage à long terme et moins cher
Pour plus d’informations sur la création d’un paramètre de diagnostic, consultez Créer des paramètres de diagnostic pour envoyer des journaux et des métriques de plateforme à différentes destinations.
Conseil
Envoyez les journaux d’activité à un espace de travail Analytique journal pour bénéficier des avantages suivants :
- L’envoi de journaux d’activité à un espace de travail Log Analytics est gratuit pour la période de rétention par défaut.
- Envoyez des journaux à un espace de travail log Analytique pendant une durée de rétention plus longue allant jusqu’à 12 ans.
- Les journaux d’activité exportés à un espace de travail Log Analytics peut être affiché dans Power BI
- Les Insights sont fournis pour des journaux d’activité exportés dans Log Analytics.
Remarque
- Les entrées du journal d’activité sont générées par le système et ne peuvent être ni changées, ni supprimées.
- Les entrées du journal d’activité représentent les changements apportés au plan de contrôle, par exemple le redémarrage d’une machine virtuelle. Les entrées non associées doivent être écrites dans les journaux de ressources Azure
- Les entrées dans le journal d'activité résultent généralement de modifications (opérations de création, de mise à jour ou de suppression) ou du lancement d'une action. Les opérations axées sur la lecture des détails d'une ressource ne sont généralement pas saisies.
Envoyer à l’espace de travail Log Analytics
Envoyez le journal d’activité à un espace de travail Log Analytics pour activer la fonctionnalité Journaux Azure Monitor où vous pouvez :
- Mettre en corrélation les données du journal d’activité avec d’autres données de surveillance collectées par Azure Monitor.
- Consolider les entrées de journal de plusieurs abonnements et locataires Azure en un seul endroit pour les analyser ensemble.
- Utiliser les requêtes de journal pour effectuer des analyses complexes et obtenir des informations détaillées sur les entrées du journal d’activité.
- Pour une logique d’alerte plus complexe, utilisez des alertes de recherche dans les journaux avec des entrées d’activité.
- Stocker les entrées du journal d’activité plus longtemps que la période de rétention du journal d’activité.
- Éviter les frais d’ingestion ou de conservation des données pour les données de journal d’activité stockées dans un espace de travail Log Analytics.
- La durée de conservation par défaut dans Log Analytics est de 90 jours.
Sélectionner Exporter les journaux d’activité pour envoyer le journal d’activité à un espace de travail Log Analytics.
Vous pouvez envoyer le journal d’activité d’un abonnement unique à jusqu’à cinq espaces de travail.
Les données du journal d’activité d’un espace de travail Log Analytics sont stockées dans une table appelée AzureActivity
que vous pouvez récupérer à l’aide d’une requête de journal dans Log Analytics. La structure de cette table varie selon la catégorie de l’entrée de journal. Pour obtenir une description des propriétés de la table, consultez la référence des données d’Azure Monitor.
Par exemple, pour afficher le nombre d’enregistrements du journal d’activité pour chaque catégorie, utilisez la requête suivante :
AzureActivity
| summarize count() by CategoryValue
Pour récupérer tous les enregistrements de la catégorie administrative, utilisez la requête suivante :
AzureActivity
| where CategoryValue == "Administrative"
Important
Dans certains scénarios, il est possible que des valeurs de champs AzureActivity aient des casses différentes des valeurs autrement équivalentes. Soyez prudent lors de l’interrogation de données dans AzureActivity pour utiliser des opérateurs qui ne respectent pas la casse pour des comparaisons de chaînes, ou utilisez une fonction scalaire pour forcer un champ à une casse uniforme avant toute comparaison. Par exemple, utilisez la fonction tolower() sur un champ pour le forcer à toujours être en minuscules ou l’opérateur =~ lors d’une comparaison de chaînes.
Envoyer à Azure Event Hubs
Envoyez le journal d’activité à Azure Event Hubs pour envoyer les entrées en dehors d’Azure, par exemple à la solution SIEM d’un tiers ou à d’autres solutions d’analytique des journaux d’activité. Les événements du journal d’activité en provenance d’Event Hubs sont consommés au format JSON avec un élément records
contenant les enregistrements dans chaque charge utile. Le schéma dépend de la catégorie et est décrit dans Schéma d’événement du journal d’activité Azure.
Voici des exemples de données de sortie provenant d’Event Hubs pour un journal d’activité :
{
"records": [
{
"time": "2019-01-21T22:14:26.9792776Z",
"resourceId": "/subscriptions/s1/resourceGroups/MSSupportGroup/providers/microsoft.support/supporttickets/115012112305841",
"operationName": "microsoft.support/supporttickets/write",
"category": "Write",
"resultType": "Success",
"resultSignature": "Succeeded.Created",
"durationMs": 2826,
"callerIpAddress": "111.111.111.11",
"correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
"identity": {
"authorization": {
"scope": "/subscriptions/s1/resourceGroups/MSSupportGroup/providers/microsoft.support/supporttickets/115012112305841",
"action": "microsoft.support/supporttickets/write",
"evidence": {
"role": "Subscription Admin"
}
},
"claims": {
"aud": "https://management.core.windows.net/",
"iss": "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/",
"iat": "1421876371",
"nbf": "1421876371",
"exp": "1421880271",
"ver": "1.0",
"http://schemas.microsoft.com/identity/claims/tenantid": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0",
"http://schemas.microsoft.com/claims/authnmethodsreferences": "pwd",
"http://schemas.microsoft.com/identity/claims/objectidentifier": "2468adf0-8211-44e3-95xq-85137af64708",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn": "admin@contoso.com",
"puid": "20030000801A118C",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "9vckmEGF7zDKk1YzIY8k0t1_EAPaXoeHyPRn6f413zM",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname": "John",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname": "Smith",
"name": "John Smith",
"groups": "cacfe77c-e058-4712-83qw-f9b08849fd60,7f71d11d-4c41-4b23-99d2-d32ce7aa621c,31522864-0578-4ea0-9gdc-e66cc564d18c",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": " admin@contoso.com",
"appid": "00001111-aaaa-2222-bbbb-3333cccc4444",
"appidacr": "2",
"http://schemas.microsoft.com/identity/claims/scope": "user_impersonation",
"http://schemas.microsoft.com/claims/authnclassreference": "1"
}
},
"level": "Information",
"location": "global",
"properties": {
"statusCode": "Created",
"serviceRequestId": "50d5cddb-8ca0-47ad-9b80-6cde2207f97c"
}
}
]
}
Envoyer à Stockage Azure
Envoyez le journal d’activité à un compte de stockage Azure si vous souhaitez conserver vos données de journal plus de 90 jours à des fins d’audit, d’analyse statique ou de sauvegarde. Si vous êtes tenu de conserver vos événements pendant maximum 90 jours, vous n’avez pas besoin de configurer d’archivage sur un compte de stockage. Les événements du journal d’activité sont conservés dans la plateforme pendant 90 jours.
Quand vous envoyez le journal d’activité à Azure, un conteneur de stockage est créé dans le compte de stockage dès qu’un événement se produit. Les blobs présents dans le conteneur utilisent la convention d’affectation de noms suivante :
insights-activity-logs/resourceId=/SUBSCRIPTIONS/{subscription ID}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json
Par exemple, un blob particulier peut avoir un nom similaire à ce qui suit :
insights-activity-logs/resourceId=/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/y=2020/m=06/d=08/h=18/m=00/PT1H.json
Chaque objet blob PT1H.json contient un objet JSON avec des événements provenant de fichiers journaux qui ont été reçus pendant l’heure spécifiée dans l’URL de l’objet blob. Pendant cette heure, les événements sont ajoutés au fichier PT1H.json à mesure qu’ils sont reçus, quelle que soit la date à laquelle ils ont été générés. La valeur de minute m=00
dans l’URL est toujours 00
car les objets blob sont créés toutes les heures.
Chaque événement est stocké dans le fichier PT1H.json au format suivant. Ce format utilise un schéma de niveau supérieur commun, mais qui est autrement unique pour chaque catégorie, comme décrit dans Schéma du journal d’activité.
{ "time": "2020-06-12T13:07:46.766Z", "resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MY-RESOURCE-GROUP/PROVIDERS/MICROSOFT.COMPUTE/VIRTUALMACHINES/MV-VM-01", "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee", "operationName": "Microsoft.Resourcehealth/healthevent/Updated/action", "level": "Information", "resultType": "Updated", "category": "ResourceHealth", "properties": {"eventCategory":"ResourceHealth","eventProperties":{"title":"This virtual machine is starting as requested by an authorized user or process. It will be online shortly.","details":"VirtualMachineStartInitiatedByControlPlane","currentHealthStatus":"Unknown","previousHealthStatus":"Unknown","type":"Downtime","cause":"UserInitiated"}}}
Autres méthodes pour récupérer les événements du journal d’activité
Vous pouvez également accéder aux événements du journal d’activité à l’aide des méthodes suivantes :
- Utilisez la cmdlet Get-AzLog pour récupérer le journal d’activité à partir de PowerShell. Consultez Exemples PowerShell Azure Monitor.
- Utilisez az monitor activity-log pour récupérer le journal d’activité à partir de l’interface CLI. Consultez les exemples d’interface de ligne de commande Azure Monitor.
- Utilisez l’API REST Azure Monitor pour récupérer le journal d’activité à partir d’un client REST.
Méthodes de collecte héritées
Notes
- La solution de journaux d’activité Azure a été utilisée pour transférer les journaux d’activité vers Azure Log Analytics. Cette solution sera mise hors service le 15 septembre 2026 et automatiquement convertie en paramètres de diagnostic.
Si vous collectez les journaux d’activité à l’aide de la méthode de collecte héritée, nous vous recommandons d’exporter les journaux d’activité vers votre espace de travail Log Analytics et de désactiver la collecte héritée à l’aide de l’API Data Sources - Delete comme suit :
Dressez la liste de toutes les sources de données connectées à l’espace de travail à l’aide de l’API Data Sources - List By Workspace et filtrez les journaux d’activité en définissant
kind eq 'AzureActivityLog'
.Copiez le nom de la connexion que vous souhaitez désactiver à partir de la réponse de l’API.
Utilisez l’API Data Sources - Delete afin d’arrêter la collecte des journaux d’activité pour la ressource spécifique.
Gestion des profils de journal hérités : mise hors service
Remarque
- Les profils de journaux ont été utilisés pour transférer les journaux d’activité vers des comptes de stockage et Event Hubs. Cette méthode est mise hors service le 15 septembre 2026.
- Si vous utilisez cette méthode, passez aux paramètres de diagnostic avant le 15 septembre 2025, date à laquelle nous arrêterons d’autoriser de nouvelles créations de profils de journal.
Les profils de journal sont la méthode héritée pour l’envoi du journal d’activité à un stockage ou à des hubs d’événements. Si vous utilisez cette méthode, passez aux paramètres de diagnostic, qui offrent une meilleure fonctionnalité et une meilleure cohérence avec les journaux de ressources.
Si un profil de journal existe déjà, vous devez d’abord le supprimer avant d’en créer un autre.
Utilisez
Get-AzLogProfile
pour déterminer s’il existe un profil de journal. S’il n’existe aucun profil de journal, notez la propriétéName
.Utilisez
Remove-AzLogProfile
pour supprimer le profil de journal à l’aide de la valeur provenant de la propriétéName
.# For example, if the log profile name is 'default' Remove-AzLogProfile -Name "default"
Utilisez
Add-AzLogProfile
pour créer un profil de journal :Add-AzLogProfile -Name my_log_profile -StorageAccountId /subscriptions/s1/resourceGroups/myrg1/providers/Microsoft.Storage/storageAccounts/my_storage -serviceBusRuleId /subscriptions/s1/resourceGroups/Default-ServiceBus-EastUS/providers/Microsoft.ServiceBus/namespaces/mytestSB/authorizationrules/RootManageSharedAccessKey -Location global,westus,eastus -RetentionInDays 90 -Category Write,Delete,Action
Propriété Obligatoire Description Nom Oui Nom de votre profil de journal. StorageAccountId Non ID de ressource du compte de stockage dans lequel le journal d’activité doit être enregistré. serviceBusRuleId Non ID de règle Service Bus pour l’espace de noms Service Bus dans lequel vous souhaitez créer des hubs d’événements. Le format de la chaîne est {service bus resource ID}/authorizationrules/{key name}
.Emplacement Oui Liste séparée par des virgules des régions pour lesquelles vous souhaitez collecter les événements du journal d’activité. RetentionInDays Oui Nombre de jours pendant lesquels les événements doivent être conservés dans le compte de stockage, de 1 à 365. Une valeur de zéro signifie que les journaux d’activité seront stockés pour une durée indéfinie. Category Non Liste séparée par des virgules des catégories d’événements à collecter. Les valeurs possibles sont Write, Delete et Action.
Exemple de script
Cet exemple de script PowerShell crée un profil de journal qui écrit le journal d’activité dans un compte de stockage et dans un hub d’événements.
# Settings needed for the new log profile
$logProfileName = "default"
$locations = (Get-AzLocation).Location
$locations += "global"
$subscriptionId = "<your Azure subscription Id>"
$resourceGroupName = "<resource group name your Event Hub belongs to>"
$eventHubNamespace = "<Event Hub namespace>"
# Build the service bus rule Id from the settings above
$serviceBusRuleId = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.EventHub/namespaces/$eventHubNamespace/authorizationrules/RootManageSharedAccessKey"
# Build the Storage Account Id from the settings above
$storageAccountId = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"
Add-AzLogProfile -Name $logProfileName -Location $locations -StorageAccountId $storageAccountId -ServiceBusRuleId $serviceBusRuleId
Modifications de la structure de données
L’expérience Exporter des journaux d’activité envoie les mêmes données que la méthode héritée utilisée pour envoyer le journal d’activité, avec quelques modifications de la structure de la table AzureActivity
.
Les colonnes de la table suivante sont dépréciées dans le schéma mis à jour. Elles existent toujours dans AzureActivity
, mais elles ne contiennent aucune donnée. Les colonnes de remplacement ne sont pas nouvelles, mais elles contiennent les mêmes données que les colonnes dépréciées. Elles sont dans un format différent, ce qui signifie que vous devrez peut-être modifier les requêtes de journal qui les utilisent.
JSON du journal d’activité | Nom de la colonne Log Analytics (plus ancien déconseillé) |
Nouveau nom de la colonne Log Analytics | Notes |
---|---|---|---|
catégorie | Category | CategoryValue | |
status Les valeurs sont réussite, démarrer, accepter, échec |
ActivityStatus Les valeurs son identiques à celles du JSON |
ActivityStatusValue Les valeurs sont modifiées en réussi, démarré, accepté, échec |
Les valeurs valides changent comme indiqué. |
subStatus | ActivitySubstatus | ActivitySubstatusValue | |
operationName | NomOpération | OperationNameValue | L’API REST localise la valeur de nom de l’opération. L’interface utilisateur Log Analytics s’affiche toujours en anglais. |
resourceProviderName | ResourceProvider | ResourceProviderValue |
Important
Dans certains cas, les valeurs figurant dans ces colonnes pourraient être en majuscules. Si vous avez une requête qui inclut ces colonnes, utilisez l’opérateur =~ pour effectuer une comparaison non sensible à la casse.
Les colonnes suivantes ont été ajoutées à AzureActivity
dans le schéma mis à jour :
- Authorization_d
- Claims_d
- Properties_d
Étapes suivantes
Pour en savoir plus :