Tutorial: Erfassen und Abfragen von Überwachungsdaten in Azure Data Explorer

In diesem Tutorial wird beschrieben, wie Sie Daten aus Diagnose- und Aktivitätsprotokolldaten in einem Azure Data Explorer-Cluster erfassen, ohne jeglichen Code schreiben zu müssen. Mit dieser einfachen Erfassungsmethode können Sie schnell damit beginnen, Azure Data Explorer zu Datenanalysezwecken abzufragen.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen von Tabellen und einer Erfassungszuordnung in einer Azure Data Explorer-Datenbank
  • Formatieren der erfassten Daten mit einer Updaterichtlinie
  • Erstellen eines Event Hub und Herstellen einer Verbindung mit Azure Data Explorer
  • Streamen von Daten an einen Event Hub aus Azure Monitor-Diagnosemetriken und -protokollen und Aktivitätsprotokollen.
  • Abfragen der erfassten Daten mit Azure Data Explorer

Hinweis

Erstellen aller Ressourcen an demselben Azure-Standort bzw. in derselben Region.

Voraussetzungen

Azure Monitor-Datenanbieter: Diagnosemetriken und -protokolle und Aktivitätsprotokolle

Unten können Sie die Daten anzeigen, die von den Diagnosemetriken und -protokollen und Aktivitätsprotokollen von Azure Monitor bereitgestellt werden, und sich damit vertraut machen. Basierend auf diesen Datenschemas erstellen Sie eine Erfassungspipeline. Beachten Sie, dass jedes Ereignis in einem Protokoll ein Array von Datensätzen enthält. Dieses Array von Datensätzen wird später im Tutorial aufgeteilt.

Beispiele für Diagnosemetriken und -protokolle und Aktivitätsprotokolle

Azure-Diagnosemetriken und -protokolle und Aktivitätsprotokolle werden von einem Azure-Dienst ausgegeben und liefern Daten zum Betrieb dieses Diensts.

Beispiel für Diagnosemetriken

Diagnosemetriken werden mit einem Aggregationsintervall von einer Minute aggregiert. Hier sehen ein Beispiel für ein Azure Data Explorer-Metrikereignisschema zur Abfragedauer:

{
    "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"
    }
    ]
}

Einrichten einer Erfassungspipeline in Azure Data Explorer

Das Einrichten einer Azure Data Explorer-Pipeline umfasst mehrere Schritte, z. B. die Tabellenerstellung und Datenerfassung. Sie können die Daten auch ändern, zuordnen und aktualisieren.

Herstellen einer Verbindung mit der Azure Data Explorer-Webbenutzeroberfläche

Wählen Sie in der Azure Data Explorer-Datenbank TestDatabase die Option Abfrage aus, um die Azure Data Explorer-Webbenutzeroberfläche zu öffnen.

Abfrageseite

Erstellen der Zieltabellen

Die Struktur der Azure Monitor-Protokolle ist nicht tabellarisch. Sie bearbeiten die Daten und erweitern jedes Ereignis auf einen oder mehrere Datensätze. Die Rohdaten werden in eine Zwischentabelle namens ActivityLogsRawRecords für Aktivitätsprotokolle und DiagnosticRawRecords für Diagnosemetriken und -protokolle aufgenommen. Die Daten werden nun bearbeitet und erweitert. Mithilfe einer Updaterichtlinie werden die erweiterten Daten dann in die Tabelle ActivityLogs für Aktivitätsprotokolle, DiagnosticMetrics für Diagnosemetriken und DiagnosticLogs für Diagnoseprotokolle aufgenommen. Das bedeutet, dass Sie zwei separate Tabellen für das Erfassen von Aktivitätsprotokollen und drei separate Tabellen für das Erfassen von Diagnosemetriken und -protokollen erstellen müssen.

Verwenden Sie die Azure Data Explorer-Webbenutzeroberfläche, um die Zieltabellen in der Azure Data Explorer-Datenbank zu erstellen.

Erstellen von Tabellen für die Diagnosemetriken

  1. Erstellen Sie in der Datenbank TestDatabase eine Tabelle mit dem Namen DiagnosticMetrics, um die Diagnosemetrik-Datensätze zu speichern. Verwenden Sie den folgenden .create table Verwaltungsbefehl:

    .create table DiagnosticMetrics (Timestamp:datetime, ResourceId:string, MetricName:string, Count:int, Total:double, Minimum:double, Maximum:double, Average:double, TimeGrain:string)
    
  2. Wählen Sie Ausführen, um die Tabelle zu erstellen.

    Führen Sie die Abfrage aus.

  3. Erstellen Sie die Zwischendatentabelle DiagnosticRawRecords in der TestDatabase-Datenbank für die Datenbearbeitung mit der folgenden Abfrage. Wählen Sie Ausführen, um die Tabelle zu erstellen.

    .create table DiagnosticRawRecords (Records:dynamic)
    
  4. Legen Sie für die Zwischentabelle die NULL-Beibehaltungsrichtlinie fest:

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

Erstellen von Tabellenzuordnungen

Da das Datenformat json lautet, ist eine Datenzuordnung erforderlich. Mit der json-Zuordnung wird jeder JSON-Pfad einem Tabellenspaltennamen zugeordnet. JSON-Pfade, die Sonderzeichen enthalten, müssen wie folgt mit Escapezeichen versehen werden: ['Eigenschaftenname']. Weitere Informationen finden Sie unter JSONPath-Syntax.

Zuordnen von Diagnosemetriken und -protokollen zur Tabelle

Verwenden Sie die folgende Abfrage, um die Daten der Diagnosemetrik- und -protokolldaten der Tabelle zuzuordnen:

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

Erstellen der Updaterichtlinie für Metrik- und Protokolldaten

Erstellen einer Datenaktualisierungsrichtlinie für Diagnosemetriken

  1. Erstellen Sie eine Funktion, mit der die Sammlung an Diagnosemetrikdatensätzen so erweitert wird, dass jeder Wert der Sammlung in einer separaten Zeile angeordnet wird. Verwenden Sie den Operator 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. Fügen Sie die Updaterichtlinie der Zieltabelle hinzu. Mit dieser Richtlinie wird die Abfrage automatisch für alle neu erfassten Daten in der Zwischentabelle DiagnosticRawRecords ausgeführt, und die Ergebnisse werden in der Tabelle DiagnosticMetrics erfasst:

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

Erstellen eines Azure Event Hubs-Namespace

Mit Azure-Diagnoseeinstellungen können Metriken und Protokolle in ein Speicherkonto oder einen Event Hub exportiert werden. In diesem Tutorial leiten wir die Metriken und Protokolle über einen Event Hub weiter. Sie erstellen mit den folgenden Schritten einen Event Hubs-Namespace und einen Event Hub für die Diagnosemetriken und -protokolle. Azure Monitor erstellt den Event Hub insights-operational-logs für die Aktivitätsprotokolle.

  1. Erstellen Sie einen Event Hub, indem Sie im Azure-Portal eine Azure Resource Manager-Vorlage verwenden. Klicken Sie zum Ausführen der restlichen Schritte dieses Artikels mit der rechten Maustaste auf die Schaltfläche In Azure bereitstellen, und wählen Sie die Option In neuem Fenster öffnen. Mit der Schaltfläche In Azure bereitstellen gelangen Sie zum Azure-Portal.

    Schaltfläche „In Azure bereitstellen“.

  2. Erstellen Sie einen Event Hubs-Namespace und einen Event Hub für die Diagnoseprotokolle. Weitere Informationen finden Sie unter Schnellstart: Erstellen eines Event Hubs mithilfe des Azure-Portals.

  3. Füllen Sie das Formular mit den folgenden Informationen aus. Verwenden Sie für alle Einstellungen, die nicht in der folgenden Tabelle aufgeführt sind, die jeweiligen Standardwerte.

    Einstellung Empfohlener Wert Beschreibung
    Abonnement Ihr Abonnement Wählen Sie das Azure-Abonnement aus, das Sie für Ihren Event Hub verwenden möchten.
    Ressourcengruppe test-resource-group Erstellen Sie eine neue Ressourcengruppe.
    Location Wählen Sie die Region aus, die Ihre Anforderungen am besten erfüllt. Erstellen Sie den Event Hub-Namespace an demselben Standort wie die anderen Ressourcen.
    Namespacename AzureMonitoringData Wählen Sie einen eindeutigen Namen, der Ihren Namespace identifiziert.
    Event Hub-Name DiagnosticData Der Event Hub befindet sich unter dem Namespace, der einen eindeutigen Bereichscontainer bereitstellt.
    Name der Consumergruppe adxpipeline Erstellen Sie einen Consumergruppennamen. Durch Consumergruppen können mehrere verarbeitende Anwendungen jeweils über eine separate Ansicht des Ereignisdatenstroms verfügen.

Verbinden von Azure Monitor-Metriken und -Protokollen mit Ihrem Event Hub

Jetzt müssen Sie für Ihre Diagnosemetriken und -protokolle und Aktivitätsprotokolle eine Verbindung mit dem Event Hub herstellen.

Verbinden von Diagnosemetriken und Protokollen mit Ihrem Event Hub

Wählen Sie eine Ressource aus, für die Metriken exportiert werden sollen. Mehrere Ressourcentypen unterstützen Diagnosedaten, z. B. Event Hubs-Namespace, Azure Key Vault, Azure IoT Hub und Azure Data Explorer-Cluster. In diesem Tutorial verwenden wir einen Azure Data Explorer-Cluster als Ressource. Wir überprüfen die Protokolle für Abfrageleistungsmetriken und Erfassungsergebnisse.

  1. Wählen Sie im Azure-Portal Ihren Kusto-Cluster aus.

  2. Wählen Sie Diagnoseeinstellungen und dann den Link Diagnose aktivieren.

    Diagnoseeinstellungen.

  3. Der Bereich Diagnoseeinstellungen wird geöffnet. Führen Sie die folgenden Schritte aus:

    1. Geben Sie den Diagnoseprotokolldaten den Namen ADXExportedData.

    2. Aktivieren Sie unter LOG die Kontrollkästchen SucceededIngestion und FailedIngestion.

    3. Aktivieren Sie unter METRIC das Kontrollkästchen Abfrageleistung.

    4. Aktivieren Sie das Kontrollkästchen An einen Event Hub streamen.

    5. Wählen Sie Konfigurierenaus.

      Bereich „Diagnoseeinstellungen“

  4. Konfigurieren Sie im Bereich Event Hub auswählen, wie Daten aus Diagnoseprotokollen auf den von Ihnen erstellten Event Hub exportiert werden sollen:

    1. Wählen Sie in der Liste Event Hub-Namespace auswählen die Option AzureMonitoringData.
    2. Wählen Sie in der Liste Event Hub-Name auswählen die Option DiagnosticData.
    3. Wählen Sie in der Liste Event Hub-Richtlinienname auswählen die Option RootManagerSharedAccessKey.
    4. Klicken Sie auf OK.
  5. Wählen Sie Speichern aus.

Verfolgen des Datenflusses zu Ihren Event Hubs

  1. Warten Sie einige Minuten, bis die Verbindung definiert und der Export des Aktivitätsprotokolls auf den Event Hub abgeschlossen wurde. Navigieren Sie zu Ihrem Event Hubs-Namespace, um die von Ihnen erstellten Event Hubs anzuzeigen.

    Erstellte Event Hubs

  2. Verfolgen Sie den Datenfluss zu Ihrem Event Hub:

    Event Hub-Daten

Herstellen einer Verbindung für einen Event Hub mit Azure Data Explorer

Nun müssen Sie die Datenverbindungen für Ihre Diagnosemetriken und -protokolle und Aktivitätsprotokolle herstellen.

Erstellen der Datenverbindung für Diagnosemetriken und -protokolle und Aktivitätsprotokolle

  1. Wählen Sie in Ihrem Azure Data Explorer-Cluster mit dem Namen kustodocs im Menü auf der linken Seite die Option Datenbanken.

  2. Wählen Sie im Fenster Datenbanken Ihre Datenbank TestDatabase aus.

  3. Wählen Sie im Menü auf der linken Seite die Option Datenerfassung.

  4. Wählen Sie im Fenster Datenerfassung die Option + Datenverbindung hinzufügen aus.

  5. Geben Sie im Fenster Datenverbindung die folgenden Informationen ein:

    Event Hub-Datenverbindung.

  1. Verwenden Sie im Fenster Datenverbindung die folgenden Einstellungen:

    Datenquelle:

    Einstellung Empfohlener Wert Feldbeschreibung
    Name der Datenverbindung DiagnosticsLogsConnection Der Name der Verbindung, die Sie im Azure-Daten-Explorer erstellen möchten.
    Event Hub-Namespace AzureMonitoringData Der von Ihnen zuvor ausgewählte Name, der Ihren Namespace identifiziert.
    Event Hub DiagnosticData Der von Ihnen erstellte Event Hub.
    Consumergruppe adxpipeline Die Consumergruppe, die in dem von Ihnen erstellten Event Hub definiert ist.

    Zieltabelle:

    Es stehen zwei Routingoptionen zur Verfügung: statisch und dynamisch. In diesem Tutorial verwenden Sie statisches Routing (Standardeinstellung), für das Sie den Tabellennamen, das Datenformat und die Zuordnung angeben. Lassen Sie das Kontrollkästchen My data includes routing info (Meine Daten enthalten Routinginformationen) deaktiviert.

    Einstellung Empfohlener Wert Feldbeschreibung
    Tabelle DiagnosticRawRecords Die Tabelle, die Sie in der Datenbank TestDatabase erstellt haben.
    Datenformat JSON Das Format, das in der Tabelle verwendet wird.
    Spaltenzuordnung DiagnosticRawRecordsMapping Die Zuordnung, die Sie in der Datenbank TestDatabase erstellt haben und mit der eingehende JSON-Daten den Spaltennamen und Datentypen der Tabelle DiagnosticRawRecords zugeordnet werden.
  2. Wählen Sie Erstellen aus.

Abfragen der neuen Tabellen

Sie verfügen nun über eine Pipeline, durch die Daten fließen. Da die Erfassung über den Cluster standardmäßig fünf Minuten dauert, sollten Sie den Datenfluss einige Minuten lang zulassen, bevor Sie mit dem Abfragen beginnen.

Abfragen der Tabelle für Diagnosemetriken

Mit der folgenden Abfrage werden Daten zur Abfragedauer aus den Datensätzen von Diagnosemetrikdaten in Azure Data Explorer analysiert:

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

Abfrageergebnisse:

avg_Average
00:06.156