Tutoriel : Ingérer et interroger des données de supervision dans Azure Data Explorer

Ce tutoriel va vous apprendre à ingérer des données de journaux de diagnostic et d’activité dans un cluster Azure Data Explorer sans écrire de code. Avec cette méthode d’ingestion simple, vous pouvez commencer rapidement à interroger Azure Data Explorer pour l’analyse de données.

Ce didacticiel vous montre comment effectuer les opérations suivantes :

  • Créer des tables et un mappage d’ingestion dans une base de données Azure Data Explorer
  • Mettre en forme les données ingérées à l’aide d’une stratégie de mise à jour
  • Créer un hub d’événements et le connecter à Azure Data Explorer
  • Envoyer en streaming des données vers un hub d’événements à partir de métriques et journaux de diagnostic et de journaux d’activité Azure Monitor.
  • Interroger les données ingérées à l’aide d’Azure Data Explorer

Notes

Créez toutes les ressources dans le même emplacement ou la même région Azure.

Prérequis

Fournisseur de données Azure Monitor : métriques de diagnostic, journaux de diagnostic et journaux d’activité

Visualisez et interprétez les données fournies par les métriques de diagnostic, les journaux de diagnostic et les journaux d’activité Azure Monitor ci-dessous. Vous allez créer un pipeline d’ingestion basé sur ces schémas de données. Notez que chaque événement dans un journal a un tableau d’enregistrements. Ce tableau d’enregistrements sera fractionné plus tard dans le tutoriel.

Exemples de métriques de diagnostics, de journaux de diagnostics et de journaux d’activité

Les métriques et journaux de diagnostic Azure sont émis par un service Azure et fournissent des données sur le fonctionnement de ce service.

Exemple de métriques de diagnostic

Les métriques de diagnostic sont agrégées avec un fragment de temps de 1 minute. Voici un exemple de schéma d’événement de métrique Azure Data Explorer pour la durée d’une requête :

{
    "records": [
    {
        "count": 14,
        "total": 0,
        "minimum": 0,
        "maximum": 0,
        "average": 0,
        "resourceId": "/SUBSCRIPTIONS/<subscriptionID>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.KUSTO/CLUSTERS/<cluster-name>",
        "time": "2018-12-20T17:00:00.0000000Z",
        "metricName": "QueryDuration",
        "timeGrain": "PT1M"
    },
    {
        "count": 12,
        "total": 0,
        "minimum": 0,
        "maximum": 0,
        "average": 0,
        "resourceId": "/SUBSCRIPTIONS/<subscriptionID>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.KUSTO/CLUSTERS/<cluster-name>",
        "time": "2018-12-21T17:00:00.0000000Z",
        "metricName": "QueryDuration",
        "timeGrain": "PT1M"
    }
    ]
}

Configurer un pipeline d’ingestion dans Azure Data Explorer

La configuration d’un pipeline Azure Data Explorer implique plusieurs étapes, comme la création de tables et l’ingestion de données. Vous pouvez également manipuler, mapper et mettre à jour les données.

Se connecter à l’interface utilisateur web d’Azure Data Explorer

Dans votre base de données Azure Data Explorer TestDatabase, sélectionnez Requête pour ouvrir l’interface utilisateur web d’Azure Data Explorer.

Page de requête.

Créer les tables cibles

Les journaux Azure Monitor n’ont pas une structure tabulaire. Vous allez manipuler les données et développer chaque événement vers un ou plusieurs enregistrements. Les données brutes seront ingérées dans une table intermédiaire nommée ActivityLogsRawRecords pour les journaux d’activité et DiagnosticRawRecords pour les métriques et journaux de diagnostic. À ce moment-là, les données vont être manipulées et développées. Quand vous utilisez une stratégie de mise à jour, les données étendues sont ensuite ingérées dans la table ActivityLogs pour les journaux d’activité, dans la table DiagnosticMetrics pour les métriques de diagnostic et dans la table DiagnosticLogs pour les journaux de diagnostic. Vous devez donc créer deux tables distinctes pour l’ingestion des journaux d’activité et trois tables distinctes pour l’ingestion des métriques et journaux de diagnostic.

Utilisez l’interface utilisateur web d’Azure Data Explorer pour créer les tables cibles dans la base de données Azure Data Explorer.

Créer des tables pour les métriques de diagnostic

  1. Dans la base de données TestDatabase, créez une table nommée DiagnosticMetrics pour stocker les enregistrements des métriques de diagnostic. Utilisez la commande de gestion suivante .create table :

    .create table DiagnosticMetrics (Timestamp:datetime, ResourceId:string, MetricName:string, Count:int, Total:double, Minimum:double, Maximum:double, Average:double, TimeGrain:string)
    
  2. Sélectionnez Exécuter pour créer la table.

    Exécuter la requête.

  3. Créez la table de données intermédiaire nommée DiagnosticRawRecords dans la base de données TestDatabase pour la manipulation des données à l’aide de la requête suivante. Sélectionnez Exécuter pour créer la table.

    .create table DiagnosticRawRecords (Records:dynamic)
    
  4. Ne définissez aucune stratégie de conservation pour la table intermédiaire :

    .alter-merge table DiagnosticRawRecords policy retention softdelete = 0d
    

Créer des mappages de table

Comme le format des données est json, un mappage de données est nécessaire. Le mappage json mappe chaque chemin JSON à un nom de colonne de table. Les chemins JSON qui incluent des caractères spéciaux doivent être placés dans une séquence d’échappement en tant que [« Nom de propriété »]. Pour plus d’informations, consultez Syntaxe de JSONPath.

Mapper des métriques et journaux de diagnostics à la table

Pour mapper les données des métriques et journaux de diagnostic à la table, utilisez la requête suivante :

.create table DiagnosticRawRecords ingestion json mapping 'DiagnosticRawRecordsMapping' '[{"column":"Records","Properties":{"path":"$.records"}}]'

Créer la stratégie de mise à jour pour les données des métriques et journaux

Créer une stratégie de mise à jour des données pour les métriques de diagnostic

  1. Créez une fonction qui développe la collection des enregistrements de métriques de diagnostic pour que chaque valeur de la collection reçoive une ligne distincte. Utilisez l’opérateur mv-expand :

    .create function DiagnosticMetricsExpand() {
       DiagnosticRawRecords
       | mv-expand events = Records
       | where isnotempty(events.metricName)
       | project
           Timestamp = todatetime(events['time']),
           ResourceId = tostring(events.resourceId),
           MetricName = tostring(events.metricName),
           Count = toint(events['count']),
           Total = todouble(events.total),
           Minimum = todouble(events.minimum),
           Maximum = todouble(events.maximum),
           Average = todouble(events.average),
           TimeGrain = tostring(events.timeGrain)
    }
    
  2. Ajoutez la stratégie de mise à jour à la table cible. Cette stratégie exécute automatiquement la requête sur toutes les nouvelles données ingérées dans la table de données intermédiaire DiagnosticRawRecords, et ingère ses résultats dans la table DiagnosticMetrics :

    .alter table DiagnosticMetrics policy update @'[{"Source": "DiagnosticRawRecords", "Query": "DiagnosticMetricsExpand()", "IsEnabled": "True", "IsTransactional": true}]'
    

Créer un espace de noms Azure Event Hubs

Les paramètres de diagnostic Azure permettent d’exporter des métriques et des journaux vers un compte de stockage ou vers un hub d’événements. Dans ce tutoriel, nous allons router les métriques et les journaux par le biais d’un hub d’événements. Dans les étapes suivantes, vous allez créer un espace de noms Event Hubs ainsi qu’un hub d’événements pour les métriques et les journaux de diagnostic. Azure Monitor va créer le hub d’événements insights-operational-logs pour les journaux d’activité.

  1. Créez un hub d’événements à l’aide d’un modèle Azure Resource Manager dans le portail Azure. Pour suivre le reste des étapes de l’article, cliquez avec le bouton droit sur le bouton Déployer sur Azure, puis sélectionnez Ouvrir dans une nouvelle fenêtre. Le bouton Déployer sur Azure vous permet d’accéder au Portail Azure.

    Bouton Déployer sur Azure.

  2. Créez un espace de noms Event Hubs ainsi qu’un hub d’événements pour les journaux de diagnostic. Découvrez comment créer un espace de noms Event Hubs.

  3. Renseignez le formulaire avec les informations suivantes. Pour tous les paramètres non listés dans le tableau suivant, utilisez les valeurs par défaut.

    Paramètre Valeur suggérée Description
    Abonnement Votre abonnement Sélectionnez l’abonnement Azure que vous souhaitez utiliser pour votre hub d’événements.
    Groupe de ressources test-resource-group Créez un groupe de ressources.
    Lieu Sélectionnez la région qui répond le mieux à vos besoins. Créez l’espace de noms Event Hubs au même emplacement que les autres ressources.
    Nom de l’espace de noms AzureMonitoringData Choisissez un nom unique qui identifie votre espace de noms.
    Nom du hub d’événements DiagnosticData Le hub d’événements se trouve sous l’espace de noms, qui fournit un conteneur d’étendue unique.
    Nom du groupe de consommateurs adxpipeline Créez un nom de groupe de consommateurs. Les groupes de consommateurs permettent que chacune des applications de consommation ait une vue distincte du flux d’événements.

Connecter des métriques et journaux Azure Monitor à votre hub d’événements

Vous devez maintenant connecter vos métriques et journaux de diagnostic et vos journaux d’activité au hub d’événements.

Connecter des métriques et journaux de diagnostic à votre hub d’événements

Sélectionnez une ressource à partir de laquelle exporter les métriques. Plusieurs types de ressources prennent en charge l’exportation des données de diagnostic, notamment l’espace de noms Event Hubs, Azure Key Vault, Azure IoT Hub et les clusters Azure Data Explorer. Dans ce tutoriel, nous allons utiliser un cluster Azure Data Explorer comme ressource. Nous allons également examiner les métriques de performances des requêtes et les journaux de résultats de l’ingestion.

  1. Sélectionnez votre cluster Kusto dans le Portail Azure.

  2. Sélectionnez Paramètres de diagnostic, puis le lien Activer les diagnostics.

    Paramètres de diagnostic.

  3. Le volet Paramètres de diagnostic s’ouvre. Procédez comme suit :

    1. Donnez à vos données de journaux de diagnostic le nom ADXExportedData.

    2. Sous JOURNAL, cochez les deux cases SucceededIngestion et FailedIngestion.

    3. Sous MÉTRIQUE, cochez la case Performances de requête.

    4. Cochez la case Diffuser vers Event Hub.

    5. Sélectionnez Configurer.

      Volet Paramètres de diagnostic.

  4. Dans le volet Sélectionner un hub d’événements , configurez la façon d’exporter des données de journaux de diagnostic vers le hub d’événements que vous avez créé :

    1. Dans la liste Sélectionner l’espace de noms de Event Hub, sélectionnez AzureMonitoringData.
    2. Dans la liste Sélectionner un nom d’Event Hub, sélectionnez DiagnosticData.
    3. Dans la liste Sélectionner un nom de stratégie de hub d’événements, sélectionnez RootManagerSharedAccessKey.
    4. Sélectionnez OK.
  5. Sélectionnez Enregistrer.

Visualiser le flux des données vers vos hubs d’événements

  1. Attendez quelques minutes jusqu’à ce que la connexion soit définie et que l’exportation des journaux d’activité vers le hub d’événements soit terminée. Accédez à votre espace de noms Event Hubs pour voir les hubs d’événements que vous avez créés.

    Hubs d’événements créés.

  2. Visualisez le flux des données vers votre hub d’événements :

    Données du hub d’événements.

Connecter un hub d’événements à Azure Data Explorer

Vous devez maintenant créer les connexions de données pour vos métriques et journaux de diagnostic et pour vos journaux d’activité.

Créer les connexions de données pour les métriques et journaux de diagnostic et pour les journaux d’activité

  1. Dans votre cluster Azure Data Explorer nommé kustodocs, sélectionnez Bases de données dans le menu de gauche.

  2. Dans la fenêtre Bases de données, sélectionnez votre base de données TestDatabase.

  3. Dans le menu de gauche, sélectionnez Ingestion des données.

  4. Dans la fenêtre Ingestion des données, sélectionnez + Ajouter la connexion de données.

  5. Dans la fenêtre Connexion aux données, entrez les informations suivantes :

    Connexion de données event hub.

  1. Utilisez les paramètres suivants dans la fenêtre Connexion de données :

    Source de données :

    Paramètre Valeur suggérée Description du champ
    Nom de la connexion de données DiagnosticsLogsConnection Nom de la connexion que vous souhaitez créer dans l’Explorateur de données Azure.
    Espace de noms du hub d’événements AzureMonitoringData Nom choisi précédemment qui identifie votre espace de noms.
    Hub d’événements DiagnosticData Hub d’événements que vous avez créé.
    Groupe de consommateurs adxpipeline Groupe de consommateurs défini dans le hub d’événements que vous avez créé.

    Table cible :

    Deux options sont disponibles pour le routage : statique et dynamique. Pour ce tutoriel, vous allez utiliser le routage statique (valeur par défaut), où vous spécifiez le nom de table, le format des données et le mappage. Ne sélectionnez pas My data includes routing info (Mes données incluent des informations de routage).

    Paramètre Valeur suggérée Description du champ
    Table DiagnosticRawRecords Table que vous avez créée dans la base de données TestDatabase.
    Format de données JSON Format utilisé dans la table.
    Mappage de colonnes DiagnosticRawRecordsMapping Mappage que vous avez créé dans la base de données TestDatabase. Il mappe les données JSON entrantes aux noms de colonnes et aux types de données de la table DiagnosticRawRecords.
  2. Sélectionnez Créer.

Interroger les nouvelles tables

Vous avez maintenant un pipeline avec un flux de données. Par défaut, l’ingestion via le cluster prend 5 minutes. Vous devez donc laisser les données circuler quelques minutes avant de commencer l’exécution de requêtes.

Interroger la table de métriques de diagnostic

La requête suivante analyse les données de durée de requête à partir des enregistrements de métriques dans Azure Data Explorer :

DiagnosticMetrics
| where Timestamp > ago(15m) and MetricName == 'QueryDuration'
| summarize avg(Average)

Résultats de la requête :

avg_Average
00:06.156