Journaux de ressources Azure

Les journaux de ressources Azure sont des journaux de plateforme qui fournissent des insights sur les opérations qui ont été effectuées au sein d’une ressource Azure. Le contenu des journaux de ressources varie en fonction du service Azure et du type de ressource. Les journaux d’activité de ressources ne sont pas collectées par défaut. Vous devez créer un paramètre de diagnostic pour chaque ressource Azure afin d’envoyer ses journaux de ressources vers un espace de travail Log Analytics pour les utiliser avec les journaux Azure Monitor, vers Azure Event Hubs pour les transférer à l’extérieur d’Azure ou vers un stockage Azure à des fins d’archivage.

Consultez Créer des paramètres de diagnostic pour envoyer des journaux et des métriques de plateforme à différentes destinations pour plus d’informations sur la création d’un paramètre de diagnostic et Déployer Azure Monitor à la bonne échelle à l’aide d’Azure Policy pour plus d’informations sur l’utilisation d’Azure Policy pour créer automatiquement un paramètre de diagnostic pour chaque ressource Azure que vous créez.

Envoyer à l’espace de travail Log Analytics

Envoyez des journaux de ressources à un espace de travail Log Analytics pour activer les fonctionnalités des journaux Azure Monitor, qui permettent notamment de :

  • Mettre en corrélation les données des journaux de ressources avec d’autres données de supervision collectées par Azure Monitor.
  • Consolider les entrées de journal de plusieurs ressources, 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 insights profonds sur les données de journal.
  • Utiliser des alertes de journal avec une logique d’alerte complexe.

Créez un paramètre de diagnostic pour envoyer des journaux de ressources à un espace de travail Log Analytics. Ces données sont stockées dans des tables comme décrit dans Structure des journaux Azure Monitor. Les tables utilisées par les journaux de ressources dépendent du type de collection que la ressource utilise :

  • Diagnostics Azure - Toutes les données sont écrites dans la table AzureDiagnostics.
  • Spécifique à la ressource - Les données sont écrites dans une table individuelle pour chaque catégorie de la ressource.

Mode Diagnostics Azure

Dans ce mode, toutes les données, quel que soit le paramètre de diagnostic, sont collectées dans la table AzureDiagnostics. Il s’agit de la méthode héritée qu'utilise aujourd’hui la plupart des services Azure. De nombreuses ressources envoyant des données à la même table, son schéma constitue le sur-ensemble des schémas des différents types de données collectés. Pour plus d’informations sur la structure de ce tableau et son fonctionnement avec un nombre potentiellement important de colonnes, consultez la référence AzureDiagnostics.

Prenons l’exemple suivant dans lequel les paramètres de diagnostic sont collectés dans le même espace de travail pour les types de données suivants :

  • Journaux d'audit du service 1 (schéma constitué des colonnes A, B et C)
  • Journaux des erreurs du service 1 (schéma constitué des colonnes D, E et F)
  • Journaux d'audit du service 2 (schéma constitué des colonnes G, H et I)

La table AzureDiagnostics se présente comme suit :

ResourceProvider Category Un B C D E F G H I
Microsoft.Service1 AuditLogs x1 y1 z1
Microsoft.Service1 ErrorLogs q1 w1 e1
Microsoft.Service2 AuditLogs j1 k1 l1
Microsoft.Service1 ErrorLogs q2 w2 e2
Microsoft.Service2 AuditLogs j3 k3 l3
Microsoft.Service1 AuditLogs x5 y5 z5
...

Spécifique à la ressource

Dans ce mode, les tables individuelles de l’espace de travail sélectionné sont créées pour chaque catégorie sélectionnée dans le paramètre de diagnostic. Cette méthode est recommandée, car elle facilite considérablement l’utilisation des données dans les requêtes de journal, offre une meilleure détectabilité des schémas et de leur structure, améliore les performances en termes de latence d’ingestion et de temps de requête, de même que la possibilité d’accorder des droits de contrôle d'accès en fonction du rôle (RBAC) Azure sur une table spécifique. À termes, tous les services Azure migreront vers le mode Spécifique à la ressource.

L’exemple ci-dessus se traduirait par la création de trois tables :

  • Table Service1AuditLogs comme suit :

    Fournisseur de ressources Category Un B C
    Service1 AuditLogs x1 y1 z1
    Service1 AuditLogs x5 y5 z5
    ...
  • Table Service1ErrorLogs comme suit :

    Fournisseur de ressources Category D E F
    Service1 ErrorLogs q1 w1 e1
    Service1 ErrorLogs q2 w2 e2
    ...
  • Table Service2AuditLogs comme suit :

    Fournisseur de ressources Category G H I
    Service2 AuditLogs j1 k1 l1
    Service2 AuditLogs j3 k3 l3
    ...

Sélectionner le mode de collecte

La plupart des ressources Azure écrivent des données dans l’espace de travail dans Diagnostics Azure ou le mode Spécifique à la ressource, sans vous laisser le choix. Pour plus d’informations sur le mode utilisé, consultez la documentation propre à chaque service. À terme, tous les services Azure utiliseront le mode Spécifique à la ressource. Dans le cadre de cette transition, certaines ressources vous permettront de sélectionner un mode dans le paramètre de diagnostic. Spécifiez le mode Spécifique à la ressource pour les nouveaux paramètres de diagnostic, car cela facilite la gestion des données et vous évitera peut-être des migrations complexes par la suite.

Diagnostic Settings mode selector

Notes

Consultez Exemples de modèle Resource Manager pour les paramètres de diagnostic dans Azure Monitor pour un exemple de paramétrage de diagnostic avec un modèle Resource Manager.

Vous pouvez modifier un paramètre de diagnostic existant sur le mode Spécifique à la ressource. Dans ce cas, les données déjà collectées sont conservées dans la table AzureDiagnostics jusqu’à leur suppression conformément au paramètre de conservation pour l'espace de travail. Les nouvelles données sont collectées dans la table dédiée. Utilisez l’opérateur union pour interroger les données dans les deux tables.

Consultez régulièrement le blog Mises à jour Azure pour vous tenir informé des annonces relatives aux services Azure prenant en charge le mode Spécifique à la ressource.

Envoyer à Azure Event Hubs

Envoyez les journaux de ressources à un hub d’événements pour les envoyer à l’extérieur d’Azure, par exemple à une solution SIEM ou à d’autres solutions analytiques de journaux. Les journaux de ressources en provenance de hubs d’événements sont consommés au format JSON avec un élément records contenant les enregistrements de chaque charge utile. Le schéma dépend du type de ressource, comme décrit dans Schéma commun et spécifique au service pour les journaux de ressources Azure.

Voici des exemples de données de sortie provenant d’Event Hubs pour un journal de ressource :

{
    "records": [
        {
            "time": "2019-07-15T18:00:22.6235064Z",
            "workflowId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA/RUNS/08587330013509921957/ACTIONS/SEND_EMAIL",
            "category": "WorkflowRuntime",
            "level": "Error",
            "operationName": "Microsoft.Logic/workflows/workflowActionCompleted",
            "properties": {
                "$schema": "2016-04-01-preview",
                "startTime": "2016-07-15T17:58:55.048482Z",
                "endTime": "2016-07-15T18:00:22.4109204Z",
                "status": "Failed",
                "code": "BadGateway",
                "resource": {
                    "subscriptionId": "00000000-0000-0000-0000-000000000000",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "243aac67fe904cf195d4a28297803785",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330013509921957",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "29a9862f-969b-4c70-90c4-dfbdc814e413",
                    "clientTrackingId": "08587330013509921958"
                }
            }
        },
        {
            "time": "2019-07-15T18:01:15.7532989Z",
            "workflowId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA",
            "resourceId": "/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/JOHNKEMTEST/PROVIDERS/MICROSOFT.LOGIC/WORKFLOWS/JOHNKEMTESTLA/RUNS/08587330012106702630/ACTIONS/SEND_EMAIL",
            "category": "WorkflowRuntime",
            "level": "Information",
            "operationName": "Microsoft.Logic/workflows/workflowActionStarted",
            "properties": {
                "$schema": "2016-04-01-preview",
                "startTime": "2016-07-15T18:01:15.5828115Z",
                "status": "Running",
                "resource": {
                    "subscriptionId": "00000000-0000-0000-0000-000000000000",
                    "resourceGroupName": "JohnKemTest",
                    "workflowId": "243aac67fe904cf195d4a28297803785",
                    "workflowName": "JohnKemTestLA",
                    "runId": "08587330012106702630",
                    "location": "westus",
                    "actionName": "Send_email"
                },
                "correlation": {
                    "actionTrackingId": "042fb72c-7bd4-439e-89eb-3cf4409d429e",
                    "clientTrackingId": "08587330012106702632"
                }
            }
        }
    ]
}

Envoyer à Stockage Azure

Envoyez les journaux de ressources à un stockage Azure pour les y conserver à des fins d’archivage. Une fois que vous avez créé le paramètre de diagnostic, un conteneur de stockage est créé dans le compte de stockage dès qu’un événement se produit dans les catégories de journaux activées. Les objets blob présents dans le conteneur utilisent la convention d’affectation de noms suivante :

insights-logs-{log category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/RESOURCEGROUPS/{resource group name}/PROVIDERS/{resource provider name}/{resource type}/{resource name}/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, l’objet blob d’un groupe de sécurité réseau peut être nommé de la façon suivante :

insights-logs-networksecuritygrouprulecounter/resourceId=/SUBSCRIPTIONS/00000000-0000-0000-0000-000000000000/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUP/TESTNSG/y=2016/m=08/d=22/h=18/m=00/PT1H.json

Chaque objet blob PT1H.json contient un objet blob d’événements JSON qui se sont produits pendant l’heure spécifiée dans l’URL de l’objet blob (par exemple, h=12). Pendant l’heure en cours, les événements sont ajoutés au fichier PT1H.json à mesure qu’ils se produisent. La valeur de minute (m=00) est toujours 00, car les événements du journal de ressource sont divisés en objets blob par heure.

Dans le fichier PT1H.json, chaque événement est stocké au format suivant. Il utilise un schéma de niveau supérieur courant mais est unique pour chaque service Azure comme décrit dans Schéma des journaux de ressource.

{"time": "2016-07-01T00:00:37.2040000Z","systemId": "46cdbb41-cb9c-4f3d-a5b4-1d458d827ff1","category": "NetworkSecurityGroupRuleCounter","resourceId": "/SUBSCRIPTIONS/s1id1234-5679-0123-4567-890123456789/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/TESTNSG","operationName": "NetworkSecurityGroupCounters","properties": {"vnetResourceGuid": "{12345678-9012-3456-7890-123456789012}","subnetPrefix": "10.3.0.0/24","macAddress": "000123456789","ruleName": "/subscriptions/ s1id1234-5679-0123-4567-890123456789/resourceGroups/testresourcegroup/providers/Microsoft.Network/networkSecurityGroups/testnsg/securityRules/default-allow-rdp","direction": "In","type": "allow","matchedConnections": 1988}}

Notes

Les journaux de plateforme sont écrits dans le stockage d’objets blob à l’aide de lignes JSON, où chaque événement correspond à une ligne et le caractère de nouvelle ligne indique un nouvel événement. Ce format a été implémenté en novembre 2018. Avant cette date, les journaux étaient écrits dans le stockage d’objets blob sous forme de tableau d’enregistrements json, comme décrit dans l’article Préparer le changement de format des journaux de plateforme Azure Monitor archivés dans un compte de stockage.

Étapes suivantes