Partager via


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 les événements au niveau de l’abonnement. Le journal d’activité inclut des informations telles que lorsqu’une ressource est modifiée ou lorsqu’une erreur de déploiement se produit. Vous pouvez afficher le journal d’activité dans le portail Azure ou récupérer des entrées avec PowerShell et Azure CLI.

Cet article fournit des informations sur la façon d’afficher le journal d’activité et d’envoyer celui-ci à différentes destinations.

Remarque

  • Les entrées du journal d’activité sont générées par le système et ne peuvent être ni modifiées, ni supprimées.
  • Les entrées dans le journal d’activité représentent des modifications de plan de contrôle comme un redémarrage d’une machine virtuelle, toutes les entrées non liées doivent être écrites dans les journaux des ressources Azure
  • Les entrées dans le journal d’activité sont généralement le résultat des modifications (opérations de création, de mise à jour ou de suppression) ou d’une action ayant été lancée. Les opérations axées sur la lecture des détails d’une ressource ne sont généralement pas capturées.

Conseil / Astuce

Si vous avez été dirigé vers cet article à partir d’une erreur d’opération de déploiement, consultez Résoudre les erreurs courantes de déploiement Azure.

Exporter les journaux d’activité

  1. Accédez aujournal d’activité> et sélectionnez Exporter les journaux d’activité.

    Capture d’écran montrant comment accéder aux journaux d’activité.

    Remarque

    Vous pouvez envoyer le journal d’activité d’un abonnement unique à jusqu’à cinq espaces de travail.

  2. Ajoutez un paramètre de diagnostic pour envoyer des journaux d’activité à un ou plusieurs de ces emplacements :

    Capture d’écran montrant comment ajouter un paramètre de diagnostic.

    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 / Astuce

    Envoyez les données du journal d’activité à un espace de travail Log Analytics pour bénéficier des avantages suivants :

Envoyer à un 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 période de rétention par défaut est de 90 jours dans Log Analytics.

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"}}}

Exporter au format CSV

Sélectionnez Télécharger en tant que csv pour exporter le journal d’activité vers un fichier CSV à l’aide du portail Azure.

Capture d’écran montrant l’option d’exportation au format CSV.

Important

L’exportation peut prendre un temps excessif si vous avez un grand nombre d’entrées de journal. Pour améliorer les performances, réduisez l’intervalle de temps de l’exportation. Dans le portail Azure, il s’agit du paramètre Timespan .

Vous pouvez également exporter le journal d’activité vers un fichier CSV à l’aide de PowerShell ou d’Azure CLI comme dans les exemples suivants.

az monitor activity-log list --start-time "2024-03-01T00:00:00Z" --end-time "2024-03-15T23:59:59Z" --max-items 1000 > activitylog.json
Get-AzActivityLog -StartTime 2021-12-01T10:30 -EndTime 2022-01-14T11:30 | Export-csv operations_logs.csv

L’exemple de script PowerShell suivant exporte le journal d’activité vers les fichiers CSV à intervalles d’une heure, chacun étant enregistré dans un fichier distinct.

# Parameters
$subscriptionId = "Subscription ID here"  # Replace with your subscription ID
$startTime = [datetime]"2025-05-08T00:00:00" # Adjust as needed
$endTime = [datetime]"2025-05-08T12:00:00"  # Adjust as needed
$outputFolder = "\Logs"    # Change path as needed
 
# Ensure output folder exists
if (-not (Test-Path $outputFolder)) {
    New-Item -Path $outputFolder -ItemType Directory
}
 
# Set subscription context
Set-AzContext -SubscriptionId $subscriptionId
 
# Loop through 1-hour intervals
$currentStart = $startTime
while ($currentStart -lt $endTime) {
    $currentEnd = $currentStart.AddHours(1)
    $timestamp = $currentStart.ToString("yyyyMMdd-HHmm")
    $csvFile = Join-Path $outputFolder "ActivityLog_$timestamp.csv"
 
    Write-Host "Fetching logs from $currentStart to $currentEnd..."
    Get-AzActivityLog -StartTime $currentStart -EndTime $currentEnd |
        Export-Csv -Path $csvFile -NoTypeInformation
 
    $currentStart = $currentEnd
}
 
Write-Host "Export completed. Files saved to $outputFolder."

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 :

Méthodes de collecte héritées

Remarque

La solution de journal d’activité Azure a été utilisée pour transférer les journaux d’activité vers 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 :

  1. 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'.

    Capture d’écran montrant la configuration de l’API Data Sources - List By Workspace.

  2. Copiez le nom de la connexion que vous souhaitez désactiver à partir de la réponse de l’API.

    Capture d’écran montrant les informations de connexion que vous devez copier depuis la sortie de l’API Data Sources - List By Workspace.

  3. Utilisez l’API Data Sources - Delete afin d’arrêter la collecte des journaux d’activité pour la ressource spécifique.

    Capture d’écran de la configuration de l’API Data Sources - Delete.

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, lorsque 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.

  1. Utilisez Get-AzLogProfile pour déterminer s’il existe un profil de journalisation. S’il n’existe aucun profil de journal, notez la propriété Name.

  2. 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"
    
  3. 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 Descriptif
    Nom Oui Nom de votre profil de journal.
    IdentifiantDuCompteDeStockage 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.
    Catégorie 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>"
$storageAccountName = "<Storage Account name>"

# 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

La fonctionnalité d'exportation des journaux d'activité envoie les mêmes données que l'ancienne méthode utilisée pour envoyer le journal d'activité, avec quelques modifications de la structure de la table AzureActivity.

Les colonnes du tableau ci-dessous sont obsolètes 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é Ancien nom de colonne Log Analytics
(déconseillé)
Nouveau nom de la colonne Log Analytics Remarques
catégorie Catégorie CategoryValue
statut

Les valeurs sont success, , startaccept,failure
Statut de l'activité

Les valeurs son identiques à celles du JSON
ActivityStatusValue

Les valeurs changent en succeeded, astartedccepted,failed
Les valeurs valides changent comme indiqué.
subStatus ActivitySubstatus ActivitySubstatusValue
nomDeL'opération 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.
nomDuFournisseurDeRessources Fournisseur de ressources 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 :