Partager via


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 d’Azure Event Hubs vers Azure Monitor Logs, vous avez besoin des ressources suivantes :

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

Vous devez créer votre association de règles de collecte de données (DCRA) dans la même région que Event Hub. L'espace de travail Log Analytics peut se trouver dans n'importe quelle région, mais la règle de collecte de données (DCR) et le point de terminaison de collecte de données (DCE) doivent se trouver dans la même région que l'espace de travail Log Analytics.

Pour une latence minimale, nous vous recommandons de placer toutes les ressources dans la même région.

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.

    Capture d’écran montrant une vue d’ensemble de l’espace de travail Log Analytics avec l’ID d’abonnement, le nom du groupe de ressources et le nom de l’espace de travail mis en surbrillance.

  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.

    Capture d’écran affichant l’écran de la ressource JSON avec l’ID de ressource de l’espace de travail mis en surbrillance.

  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.

    Capture d’écran affichant l’écran de la ressource JSON avec l’ID de ressource du Event Hub mis en surbrillance.

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.

    Capture d’écran montrant comment ouvrir 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.

    Capture d’écran montrant l’écran Vue d’ensemble du point de terminaison de collecte de données.

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

    Capture d’écran montrant la vue JSON du point de terminaison de collecte de données.

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

    Capture d’écran du déploiement d’un modèle personnalisé.

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

    Capture d'écran pour construire le modèle dans l'éditeur.

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

    Capture d'écran pour modifier le modèle de Resource Manager.

    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.

    Capture d’écran affichant la vue du déploiement de modèle personnalisé avec les valeurs du déploiement pour la règle de collecte de données configuré dans ce tutoriel.

  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.

    Capture d’écran montrant l’écran Vue d’ensemble de la règle de collecte de données.

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

    Capture d’écran présentant la destination de la règle de collecte de données.

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.

Capture d’écran affichant l’écran de la ressource JSON avec l’ID de ressource de l’idendité managée mis en surbrillance.

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.

    Capture d’écran de la page Access Control permettant de la règle de collecte de données.

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

    Capture d’écran montrant l’écran Ajouter une attribution de rôle pour Event Hub avec le rôle du récepteur de données Azure Event Hubs mis en surbrillance.

  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.

    Capture d’écran montrant comment attribuer une identité managée.

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

    Capture d’écran montrant l’onglet Révision et Attribution de la page d’ajout d’attribution de rôle.

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 :

    Capture d’écran affichant la vue du déploiement de modèle personnalisé avec les valeurs du déploiement pour la règle de collecte de données configuré associé dans ce tutoriel.

  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

Les journaux Azure Monitor ingèrent tous les événements qui existent dans Event Hub au moment de la création du DCRA, à condition que leur période de conservation n’ait 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.

Capture d’écran montrant les résultats d’une requête simple dans une table personnalisée. Les résultats sont des évènements ingérés d’un 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 :