Tutoriel : Ingérer des événements d'Azure Event Hubs dans les journaux Azure Monitor (préversion publique)

Azure Event Hubs est une plateforme de streaming Big Data qui collecte des événements provenant de plusieurs sources à ingérer par Azure et des services externes. Cet article explique comment ingérer des données directement à partir d’un Event Hub dans un espace de travail Log Analytics.

Dans ce tutoriel, vous allez apprendre à :

  • Créer une table de destination pour les données Event Hub dans votre espace de travail Log Analytics
  • Créer un point de terminaison de collecte de données
  • Créer une règle de collecte de données
  • Accorder des autorisations de règle de collecte de données à Event Hub
  • Associer la règle de collecte de données à Event Hub

Prérequis

Pour envoyer des événements de Azure Event Hubs aux journaux Azure Monitor, vous avez besoin de ces ressources, toutes dans la même région :

Régions prises en charge

Azure Monitor prend actuellement en charge l’ingestion à partir d’Event Hubs dans ces régions :

Amérique Europe Moyen-Orient Afrique Asie-Pacifique
Brésil Sud France Centre Émirats arabes unis Nord Afrique du Sud Nord Centre de l’Australie
Brésil Sud-Est Europe Nord Australie Est
Centre du Canada Norvège Est Sud-Australie Est
Est du Canada Suisse Nord Inde centrale
USA Est Suisse Ouest Asie Est
USA Est 2 Sud du Royaume-Uni Japon Est
États-Unis - partie centrale méridionale Ouest du Royaume-Uni Inde Ouest Jio
USA Ouest Europe Ouest Centre de la Corée
USA Ouest 3 Asie Sud-Est

Collecter les informations nécessaires

Vous avez besoin de votre ID d’abonnement, du nom du groupe de ressources, du nom de l’espace de travail, et des ID de ressource de l’espace de travail et de l’instance Event Hub dans les étapes suivantes :

  1. Accédez à votre espace de travail dans le menu Espaces de travail Log Analytics et sélectionnez Propriétés, puis copiez votre ID d’abonnement, groupe de ressources et nom de l’espace de travail. Vous aurez besoin de ces détails pour créer des ressources dans ce tutoriel.

    Screenshot showing Log Analytics workspace overview screen with subscription ID, resource group name, and workspace name highlighted.

  2. Sélectionnez JSON pour ouvrir l’écran de la ressource JSON et copier l’ID de ressource de l’espace de travail. Vous aurez besoin de l’ID de ressource de l’espace de travail pour créer une règle de collecte de données.

    Screenshot showing the Resource JSON screen with the workspace resource ID highlighted.

  3. Accédez à votre instance Event Hub, sélectionnez JSON pour ouvrir l’écran de la ressource JSON , puis copiez l’ID de ressource de l’instance Event Hub. Vous aurez besoin de l’ID de ressource de l’instance Event Hub pour associer la règle de collecte de données au Event Hub.

    Screenshot showing the Resource JSON screen with the event hub resource ID highlighted.

Créer une table de destination dans votre espace de travail Log Analytics

Avant de pouvoir ingérer des données, vous devez configurer une table de destination. Vous pouvez ingérer des données dans des tables personnalisées et des tables Azure prises en charge.

Pour créer une table personnalisée dans laquelle ingérer des événements, dans le Portail Azure :

  1. Sélectionnez le bouton Cloud Shell dans le portail Azure et vérifiez que l’environnement est défini sur PowerShell.

    Screenshot showing how to open Cloud Shell.

  2. Exécutez cette commande PowerShell pour créer la table, en fournissant le nom de la table (<table_name>) dans le JSON (également avec le suffixe _CL en cas de table personnalisée) et en définissant les valeurs <subscription_id>, <resource_group_name>, <workspace_name> et <table_name> dans la commande Invoke-AzRestMethod -Path :

    $tableParams = @'
    {
        "properties": {
            "schema": {
                "name": "<table_name>",
                "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "datetime",
                        "description": "The time at which the data was ingested."
                    },
                    {
                        "name": "RawData",
                        "type": "string",
                        "description": "Body of the event."
                    },
                    {
                        "name": "Properties",
                        "type": "dynamic",
                        "description": "Additional message properties."
                    }
                ]
            }
        }
    }
    '@
    
    Invoke-AzRestMethod -Path "/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/microsoft.operationalinsights/workspaces/<workspace_name>/tables/<table_name>?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
    

Important

  • Les noms de colonnes doivent commencer par une lettre et peuvent comporter jusqu’à 45 caractères alphanumériques et traits de soulignement (_).
  • _ResourceId, id, _ResourceId, _SubscriptionId, TenantId, Type, UniqueId et Title sont des noms de colonnes réservés.
  • Les noms de colonnes sont sensibles à la casse. Veillez à utiliser la casse correcte dans votre règle de collecte de données.

Créer un point de terminaison de collecte de données

Pour collecter des données avec une règle de collecte de données, vous avez besoin d’un point de terminaison de collecte de données :

  1. Créez un point de terminaison de collecte de données.

    Important

    Créez la règle de collecte de données dans la même région que celle où se trouve votre espace de travail Log Analytics.

  2. Dans l’écran Vue d’ensemble du point de terminaison de collecte de données, sélectionnez Vue JSON.

    Screenshot that shows the data collection endpoint Overview screen.

  3. Copiez l'ID de ressource pour la règle de collecte des données. Vous utiliserez ces informations à l’étape suivante.

    Screenshot that shows the data collection endpoint JSON view.

Créer une règle de collecte de données

Azure Monitor utilise des règles de collecte de données pour définir les données à collecter, comment transformer ces données et où envoyer les données.

Pour créer la règle de collecte de données dans le portail Azure :

  1. Dans le menu du Portail Azure, dans la zone de recherche, tapez modèle, puis sélectionnez Déployer un modèle personnalisé.

    Screenshot to deploy custom template.

  2. Sélectionnez Générer votre propre modèle dans l’éditeur.

    Screenshot to build template in the editor.

  3. Collez le modèle Resource Manager ci-dessous dans l’éditeur, puis cliquez sur Enregistrer.

    Screenshot to edit Resource Manager template.

    Notez les détails suivants dans la règle de collecte de données ci-dessous :

    • identity : Définit le type d’identité managée à utiliser. Dans notre exemple, nous utilisons une identité affectée par le système. Vous pouvez également configurer une identité managée affectée par l’utilisateur.

    • dataCollectionEndpointId : ID de ressource du point de terminaison de collecte de données.

    • streamDeclarations : Définit les données à ingérer à partir du Event Hub (données entrantes). La déclaration de flux de données ne peut pas être modifiée.

      • TimeGenerated : Heure à laquelle les données ont été ingérées du Event Hub vers les journaux Azure Monitor.
      • RawData : Corps de l’événement. Pour plus d’informations, consultez Lire les événements.
      • Properties : Propriétés utilisateur de l’événement. Pour plus d’informations, consultez Lire les événements.
    • datasources : Spécifie le groupe de consommateurs event hub et le flux vers lequel vous ingérez les données.

    • destinations : Spécifie toutes les destinations où les données seront envoyées. Vous pouvez ingérer des données dans un ou plusieurs espaces de travail Log Analytics.

    • dataFlows: correspond au flux de travail avec l’espace de travail de destination et spécifie la requête de transformation et la table de destination. Dans notre exemple, nous ingérons des données dans la table personnalisée que nous avons créée précédemment. Vous pouvez également ingérer dans une table Azure prise en charge.

    • transformKql : spécifie la transformation à appliquer aux données entrantes (déclaration de flux de données) avant qu’elles ne soient envoyées à l’espace de travail. Dans notre exemple, nous définissons la valeur transformKql sur source, qui ne modifie en aucune façon les données de la source, car nous mappons les données entrantes à une table personnalisée que nous avons créée spécifiquement avec le schéma correspondant. Si vous ingérez des données dans une table avec un schéma différent ou pour filtrer des données avant l’ingestion, définissez une transformation de collecte de données.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "dataCollectionRuleName": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the name of the data collection Rule to create."
                }
            },
            "workspaceResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the Log Analytics workspace to use."
                }
            },
            "endpointResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the data collection endpoint to use."
                }
            },
            "tableName": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the name of the table in the workspace."
                }
            },
            "consumerGroup": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the consumer group of event hub."
                },
                "defaultValue": "$Default"
            }
        },
        "resources": [
            {
                "type": "Microsoft.Insights/dataCollectionRules",
                "name": "[parameters('dataCollectionRuleName')]",
                "location": "[resourceGroup().location]", 
                "apiVersion": "2022-06-01",
                "identity": {
                                 "type": "systemAssigned"
                  },
                "properties": {
                    "dataCollectionEndpointId": "[parameters('endpointResourceId')]",
                    "streamDeclarations": {
                        "Custom-MyEventHubStream": {
                            "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "datetime"
                    },
                    {
                        "name": "RawData",
                        "type": "string"
                    },
                    {
                        "name": "Properties",
                        "type": "dynamic"
                    }
                ]
                        }
                    },
                    "dataSources": {
                        "dataImports": {
                             "eventHub": {
                                        "consumerGroup": "[parameters('consumerGroup')]",
                                        "stream": "Custom-MyEventHubStream",
                                        "name": "myEventHubDataSource1"
                                                              }
                                               }
                   },
                    "destinations": {
                        "logAnalytics": [
                            {
                                "workspaceResourceId": "[parameters('workspaceResourceId')]",
                                "name": "MyDestination"
                            }
                        ]
                    },
                    "dataFlows": [
                        {
                            "streams": [
                                "Custom-MyEventHubStream"
                            ],
                            "destinations": [
                                "MyDestination"
                            ],
                            "transformKql": "source",
                            "outputStream": "[concat('Custom-', parameters('tableName'))]"
                        }
                    ]
                }
            }
        ]
    }
    
  4. Dans l’écran Déploiement personnalisé, spécifiez un Abonnement et un Groupe de ressources pour stocker la règle de collecte de données, puis fournissez des valeurs pour les paramètres définis dans le modèle, notamment :

    • Région : région pour la règle de collecte de données. Rempli automatiquement en fonction du groupe de ressources que vous sélectionnez.
    • Nom de la règle de collecte de données : donnez un nom à la règle.
    • ID de ressource de l’espace de travail : consultez Collecter les informations requises.
    • ID de ressource de point de terminaison : généré lorsque vous créez le point de terminaison de collecte de données.
    • Nom de la table : spécifie le nom de la table de destination. Dans notre exemple, et chaque fois que vous utilisez une table personnalisée, le nom de la table doit se terminer par le suffixe _CL. Si vous ingérez des données dans une table Azure, entrez le nom de la table ( par exemple, Syslog) sans le suffixe.
    • Groupe de consommateurs : par défaut, le groupe de consommateurs est défini sur $Default. Si nécessaire, remplacez la valeur par un autre groupe de consommateurs Event Hub.

    Screenshot showing the Custom Template Deployment screen with the deployment values for the data collection rule set up in this tutorial.

  5. Sélectionnez Vérifier + créer, puis Créer quand vous passez en revue les détails.

  6. Une fois le déploiement terminé, développez la zone Détails du déploiement et sélectionnez votre règle de collecte de données pour en afficher les détails. Sélectionnez Vue JSON.

    Screenshot that shows the Data Collection Rule Overview screen.

  7. Copiez l'ID de ressource pour la règle de collecte des données. Vous utiliserez ces informations à l’étape suivante.

    Screenshot that shows the data collection rule JSON view.

Configurer des identités managées affectées par l’utilisateur (facultatif)

Pour configurer votre règle de collecte de données afin de prendre en charge l’identité affectée par l’utilisateur, dans l’exemple ci-dessus, remplacez :

    "identity": {
                        "type": "systemAssigned"
        },

par :

    "identity": {
            "type": "userAssigned",
            "userAssignedIdentities": {
                "<identity_resource_Id>": {
                }
            }
        },

Pour trouver la <identity_resource_Id> valeur, accédez à votre ressource d’identité managée affectée par l’utilisateur dans le Portail Azure, sélectionnez JSON pour ouvrir l’écran JSON de la ressource et copiez l’ID de ressource de l’identité managée.

Screenshot showing Resource JSON screen with the managed identity resource ID highlighted.

Ingérer des données de journal dans une table Azure (facultatif)

Pour ingérer des données dans une table Azure prise en charge :

  1. Dans la règle de collecte de données, modifiez outputStream :

    de : "outputStream": "[concat('Custom-', parameters('tableName'))]"

    À : "outputStream": "outputStream": "[concat(Microsoft-', parameters('tableName'))]"

  2. Dans transformKql, définissez une transformation qui envoie les données ingérées dans les colonnes cibles de la table Azure de destination.

Accorder des autorisations d’Event Hub à la règle de collecte de données

Avec l’identité managée, vous pouvez accorder à n’importe quel hub d’événements ou espace de noms Event Hubs l’autorisation d’envoyer des événements à la règle de collecte de données et au point de terminaison de collecte de données que vous avez créés. Lorsque vous accordez les autorisations à l’espace de noms Event Hubs, tous les hubs d’événements au sein de l’espace de noms héritent des autorisations.

  1. Dans le hub d’événements ou l’espace de noms Event Hubs dans le Portail Azure, sélectionnez Access Control (IAM)>Ajouter une attribution de rôle.

    Screenshot that shows the Access control screen for the data collection rule.

  2. Sélectionnez Récepteur de données Azure Event Hubs, puis Suivant.

    Screenshot that shows the Add Role Assignment screen for the event hub with the Azure Event Hubs Data Receiver role highlighted.

  3. Pour Attribuer l’accès à, sélectionnez Identité managée, puis cliquez sur Sélectionner des membres. Sélectionnez Règle de collecte de données, recherchez votre règle par son nom, puis cliquez sur Sélectionner.

    Screenshot that shows how to assign access to managed identity.

  4. Cliquez sur Examiner et attribuer et examinez les détails avant d’enregistrer votre attribution de rôle.

    Screenshot that shows the Review and Assign tab of the Add Role Assignment screen.

Associer la règle de collecte de données à Event Hub

La dernière étape consiste à associer la règle de collecte de données au Event Hub à partir duquel vous souhaitez collecter des événements.

Vous pouvez associer une seule règle de collecte de données à plusieurs Event Hubs qui partagent le même groupe de consommateurs et ingèrent des données dans le même flux. Vous pouvez également associer une règle de collecte de données unique à chaque Event hub.

Important

Vous devez associer au moins une règle de collecte de données au Event Hub pour ingérer des données à partir d’un Event Hub. Lorsque vous supprimez toutes les associations de règles de collecte de données liées au Event Hub, vous arrêtez d’ingérer des données à partir du Event Hub.

Pour créer la règle de collecte de données dans le portail Azure :

  1. Dans le menu du Portail Azure, dans la zone de recherche, tapez modèle, puis sélectionnez Déployer un modèle personnalisé.

  2. Sélectionnez Générer votre propre modèle dans l’éditeur.

  3. Collez le modèle Resource Manager ci-dessous dans l’éditeur, puis cliquez sur Enregistrer.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "eventHubResourceID": {
          "type": "string",
          "metadata": {
            "description": "Specifies the Azure resource ID of the event hub to use."
          }
        },
        "associationName": {
          "type": "string",
          "metadata": {
            "description": "The name of the association."
          }
        },
        "dataCollectionRuleID": {
          "type": "string",
          "metadata": {
            "description": "The resource ID of the data collection rule."
          }
        }
      },
      "resources": [
        {
          "type": "Microsoft.Insights/dataCollectionRuleAssociations",
          "apiVersion": "2021-09-01-preview",
          "scope": "[parameters('eventHubResourceId')]",
          "name": "[parameters('associationName')]",
          "properties": {
            "description": "Association of data collection rule. Deleting this association will break the data collection for this event hub.",
            "dataCollectionRuleId": "[parameters('dataCollectionRuleId')]"
          }
        }
      ]
    }
    
  4. Dans l’écran Déploiement personnalisé, spécifiez un Abonnement et un Groupe de ressources pour stocker la règle de collecte de données, puis fournissez des valeurs pour les paramètres définis dans le modèle, notamment :

    Screenshot showing the Custom Template Deployment screen with the deployment values for the data collection rule association set up in this tutorial.

  5. Sélectionnez Vérifier + créer, puis Créer quand vous passez en revue les détails.

Vérifiez votre table de destination pour les événements ingérés

Maintenant que vous avez associé la règle de collecte de données à votre Event Hub, les journaux Azure Monitor ingèrent tous les événements existants dont la période de rétention n’a pas expiré, ainsi que tous les nouveaux événements.

Pour vérifiez votre table de destination pour les événements ingérés :

  1. Accédez à votre espace de travail, puis sélectionnez Journaux.

  2. Écrivez une requête simple dans l’éditeur de requête et sélectionnez Exécuter :

    <table_name>
    

    Vous devez voir les événements de votre Event Hub.

Screenshot showing the results of a simple query on a custom table. The results consist of events ingested from an event hub.

Nettoyer les ressources

Dans ce tutoriel, vous avez créé les ressources suivantes :

  • Table personnalisée
  • Point de terminaison de collecte de données
  • Règle de collecte de données
  • Associations de règles de collecte de données

Évaluez si vous avez toujours besoin de ces ressources. Supprimez les ressources dont vous n’avez pas besoin individuellement, ou supprimez toutes ces ressources à la fois en supprimant le groupe de ressources. Les ressources que vous laissez fonctionner peuvent vous coûter cher.

Pour arrêter d’ingérer des données à partir du Event Hub, supprimez toutes les associations de règles de collecte de données liées au Event Hub ou supprimez les règles de collecte de données elles-mêmes. Ces actions réinitialisent également les points de contrôle du Event Hub.

Problèmes connus et limitations

Étapes suivantes

En savoir plus sur :