Envoyer les données du journal d’activité Azure Monitor

Le journal d’activité Azure Monitor est un journal de plateforme qui fournit des insights sur tous les événements de niveau abonnement. Le journal d’activité inclut des informations telles que le moment auquel une ressource a été modifiée ou une machine virtuelle démarrée. 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.

Pour obtenir des fonctionnalités supplémentaires, créez un paramètre de diagnostic pour envoyer le journal d’activité à un ou plusieurs des emplacements ci-dessous aux fins suivantes :

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.

Notes

  • 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.

Screenshot that shows exporting activity logs.

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": "c776f9f4-36e5-4e0e-809b-c9b3c3fb62a8",
            "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": "00000000-0000-0000-0000-000000000000",
                    "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": "c44b4083-3bq0-49c1-b47d-974e53cbdf3c",
                    "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 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-logs-networksecuritygrouprulecounter/resourceId=/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/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/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/MY-RESOURCE-GROUP/PROVIDERS/MICROSOFT.COMPUTE/VIRTUALMACHINES/MV-VM-01", "correlationId": "0f0cb6b4-804b-4129-b893-70aeeb63997e", "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 :

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 :

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

    Screenshot showing the configuration of the Data Sources - List By Workspace API.

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

    Screenshot showing the connection information you need to copy from the output of the Data Sources - List By Workspace API.

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

    Screenshot of the configuration of the Data Sources - Delete API.

Gestion des profils de journal hérités

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, envisagez de passer 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 journal. 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 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 ont été 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 :