Tutorial: Erfassen von Ereignissen aus Azure Event Hubs in Azure Monitor-Protokollen (Public Preview)

Azure Event Hubs ist eine Big Data-Streamingplattform, die Ereignisse aus mehreren Quellen sammelt, die von Azure und externen Diensten erfasst werden. In diesem Artikel wird erläutert, wie Sie Daten direkt aus einem Event Hub in einem Log Analytics-Arbeitsbereich erfassen.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer Zieltabelle für Event Hub-Daten in Ihrem Log Analytics-Arbeitsbereich
  • Erstellen eines Datensammlungsendpunkts
  • Erstellen einer Datensammlungsregel
  • Erteilen von Berechtigungen für die Datensammlungsregel für den Event Hub
  • Zuordnen der Datensammlungsregel zum Event Hub

Voraussetzungen

Um Ereignisse von Azure Event Hubs an Azure Monitor-Protokolle zu senden, benötigen Sie diese Ressourcen in derselben Region:

Unterstützte Regionen

Azure Monitor unterstützt derzeit die Erfassung von Event Hubs in diesen Regionen:

Amerika Europa Naher Osten Afrika Asien-Pazifik
Brasilien Süd Frankreich, Mitte Vereinigte Arabische Emirate, Norden Südafrika, Norden Australien, Mitte
Brasilien, Südosten Nordeuropa Australien (Osten)
Kanada, Mitte Norwegen, Osten Australien, Südosten
Kanada, Osten Schweiz, Norden Indien, Mitte
East US Schweiz, Westen Asien, Osten
USA (Ost) 2 UK, Süden Japan, Osten
USA Süd Mitte UK, Westen Jio Indien, Westen
USA (Westen) Europa, Westen Korea, Mitte
USA, Westen 3 Asien, Südosten

Erfassen der erforderlichen Informationen

In den folgenden Schritten benötigen Sie Ihre Abonnement-ID, den Ressourcennamen, den Arbeitsbereichsnamen, die Arbeitsbereichsressourcen-ID und die Event Hub-Instanzressourcen-ID:

  1. Navigieren Sie im Menü Log Analytics-Arbeitsbereiche zu Ihrem Arbeitsbereich, und wählen Sie Eigenschaften aus, und kopieren Sie Ihre Abonnement-ID, Ressourcengruppe und den Namen des Arbeitsbereichs. Sie benötigen diese Details, um Ressourcen in diesem Tutorial zu erstellen.

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

  2. Wählen Sie JSON aus, um den Bildschirm Ressourcen-JSON zu öffnen und die Ressourcen-ID des Arbeitsbereichs zu kopieren. Sie benötigen die Ressourcen-ID des Arbeitsbereichs, um eine Datensammlungsregel zu erstellen.

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

  3. Navigieren Sie zu Ihrer Event Hub-Instanz, wählen Sie JSON aus, um den Bildschirm Ressourcen-JSON zu öffnen, und kopieren Sie die Ressourcen-ID der Event Hub-Inst. Sie benötigen die Ressourcen-ID der Event Hub-Instanz, um die Datensammlungsregel dem Event Hub zuzuordnen.

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

Erstellen einer Zieltabelle in Ihrem Log Analytics-Arbeitsbereich

Bevor Sie Daten erfassen können, müssen Sie eine Zieltabelle einrichten. Sie können Daten in benutzerdefinierten Tabellen und unterstützten Azure-Tabellen erfassen.

So erstellen Sie eine benutzerdefinierte Tabelle, in der Ereignisse erfasst werden sollen, im Azure-Portal:

  1. Wählen Sie die Schaltfläche Cloud Shell aus, und achten Sie darauf, dass die Umgebung auf PowerShell festgelegt ist.

    Screenshot showing how to open Cloud Shell.

  2. Führen Sie diesen PowerShell-Befehl aus, um die Tabelle zu erstellen, geben Sie den Tabellennamen (<table_name>) im JSON-Code an (ebenfalls mit Suffix _CL im Falle einer benutzerdefinierten Tabelle), und legen Sie die Werte <subscription_id>, <resource_group_name>, <workspace_name> und <table_name> im Befehl Invoke-AzRestMethod -Path fest:

    $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
    

Wichtig

  • Spaltennamen müssen mit einem Buchstaben beginnen und können aus bis zu 45 alphanumerischen Zeichen und Unterstrichen (_) bestehen.
  • _ResourceId, id, _ResourceId, _SubscriptionId, TenantId, Type, UniqueId und Title sind reservierte Spaltennamen.
  • Bei Spaltennamen wird die Groß-/Kleinschreibung beachtet. Stellen Sie sicher, dass Sie in Ihrer Datensammlungsregel den richtigen Fall verwenden.

Erstellen eines Datensammlungsendpunkts

Zum Sammeln von Daten mit einer Datensammlungsregel benötigen Sie einen Datensammlungsendpunkt:

  1. Erstelle einen Datensammlungsendpunkt.

    Wichtig

    Erstellen Sie den Datensammlungsendpunkt in derselben Region, in der sich auch Ihr Log Analytics-Arbeitsbereich befindet.

  2. Wählen Sie auf dem Bildschirm „Übersicht“ des Datensammlungsendpunkts die Option JSON-Ansicht aus.

    Screenshot that shows the data collection endpoint Overview screen.

  3. Kopieren Sie die Ressourcen-ID für die Datensammlungsregel. Sie benötigen diese Informationen im nächsten Schritt.

    Screenshot that shows the data collection endpoint JSON view.

Erstellen einer Datensammlungsregel

Azure Monitor verwendet Datensammlungsregeln, um zu definieren, welche Daten gesammelt werden, wie diese Daten transformiert werden und wohin die Daten gesendet werden sollen.

So erstellen Sie eine Datensammlungsregel im Azure-Portal:

  1. Geben Sie im Suchfeld des Portals Vorlage ein, und wählen Sie dann Eine benutzerdefinierte Vorlage bereitstellen aus.

    Screenshot to deploy custom template.

  2. Wählen Sie Eigene Vorlage im Editor erstellen.

    Screenshot to build template in the editor.

  3. Fügen Sie die unten aufgeführte Resource Manager-Vorlage in den Editor ein, und wählen Sie dann Speichern aus.

    Screenshot to edit Resource Manager template.

    Beachten Sie die folgenden Details in der Datensammlungsregel unten:

    • identity – Definiert, welche Art von verwalteter Identität verwendet werden soll. In unserem Beispiel wird eine systemseitig zugewiesene Identität verwendet. Sie können auch ein benutzerseitig zugewiesene verwaltete Identitäten konfigurieren.

    • dataCollectionEndpointId – Ressourcen-ID des Datensammlungsendpunkts.

    • streamDeclarations – Definiert, welche Daten vom Event Hub erfasst werden sollen (eingehende Daten). Die Streamdeklaration kann nicht geändert werden.

      • TimeGenerated – Der Zeitpunkt, zu dem die Daten vom Event Hub in Azure Monitor-Protokollen erfasst wurden.
      • RawData – Der Text des Ereignisses. Weitere Informationen finden Sie unter Lesen von Ereignissen.
      • Properties – Benutzereigenschaften aus dem Ereignis. Weitere Informationen finden Sie unter Lesen von Ereignissen.
    • datasources – Gibt die Event Hub-Consumergruppe und den Stream an, in dem Sie die Daten erfassen.

    • destinations – Gibt alle Ziele an, an die die Daten gesendet werden. Sie können Daten in einem oder mehreren Log Analytics-Arbeitsbereichen erfassen.

    • dataFlows – Gleicht den Datenstrom mit dem Zielarbeitsbereich ab und gibt die Transformationsabfrage sowie die Zieltabelle an. In unserem Beispiel werden Daten in der benutzerdefinierten Tabelle, die wir zuvor erstellt haben, erfasst. Sie können auch in eine unterstützte Azure-Tabelle erfassen.

    • transformKql – Gibt eine Transformation an, die auf die eingehenden Daten (Streamdeklaration) angewendet werden soll, bevor diese an den Arbeitsbereich gesendet werden. In unserem Beispiel legen wir transformKql auf source fest, wodurch die Daten aus der Quelle in keiner Weise geändert werden, da wir eingehende Daten einer benutzerdefinierten Tabelle zuordnen, die wir speziell mit dem entsprechenden Schema erstellt haben. Wenn Sie Daten in einer Tabelle mit einem anderen Schema erfassen oder Daten vor der Erfassung filtern möchten, definieren Sie eine Datensammlungstransformation.

    {
        "$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. Geben Sie auf dem Bildschirm Benutzerdefinierte Bereitstellung ein Abonnement und eine Ressourcengruppe zum Speichern der Datensammlungsregel an, und geben Sie dann für die Parameter in der Vorlage definierte Werte an, einschließlich:

    • Region – Region für die Datensammlungsregel. Wird basierend auf der ausgewählten Ressourcengruppe automatisch aufgefüllt.
    • Name der Datensammlungsregel – Geben Sie der Regel einen Namen.
    • Ressourcen-ID des Arbeitsbereichs – Siehe Sammeln erforderlicher Informationen.
    • Endpunktressourcen-ID – Wird beim Erstellen des Datensammlungsendpunkts generiert.
    • Tabellenname – Gibt den Namen der Zieltabelle an. In unserem Beispiel und wenn Sie eine benutzerdefinierte Tabelle verwenden, muss der Tabellenname auf das Suffix _CL enden. Wenn Sie Daten in einer Azure-Tabelle erfassen, geben Sie den Tabellennamen ( z. B. Syslog ) ohne das Suffix ein.
    • Consumergruppe – Standardmäßig ist die Consumergruppe auf $Default festgelegt. Ändern Sie bei Bedarf den Wert in eine andere Event Hub-Consumergruppe.

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

  5. Wählen Sie Überprüfen und erstellen und dann Erstellen aus, nachdem Sie die Details überprüft haben.

  6. Erweitern Sie nach Abschluss der Bereitstellung das Feld Bereitstellungsdetails, und wählen Sie Ihre Datensammlungsregel aus, um ihre Details anzuzeigen. Wählen Sie JSON-Ansicht aus.

    Screenshot that shows the Data Collection Rule Overview screen.

  7. Kopieren Sie die Ressourcen-ID für die Datensammlungsregel. Sie benötigen diese Informationen im nächsten Schritt.

    Screenshot that shows the data collection rule JSON view.

Konfigurieren einer benutzerseitig zugewiesenen verwalteten Identität (optional)

Um Ihre Datensammlungsregel zur Unterstützung der benutzerseitig zugewiesenen Identität zu konfigurieren, ersetzen Sie im obigen Beispiel Folgendes:

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

Durch:

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

Um den Wert „<identity_resource_Id>“ zu finden, navigieren Sie im Azure-Portal zu Ihrer benutzerseitig zugewiesenen verwalteten Identitätsressource, wählen Sie JSON aus, um den Bildschirm Ressourcen-JSON zu öffnen und die Ressourcen-ID der verwalteten Identität zu kopieren.

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

Erfassen von Protokolldaten in einer Azure-Tabelle (optional)

So erfassen Sie Daten in einer unterstützten Azure-Tabelle:

  1. Ändern Sie in der Datensammlungsregel outputStream:

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

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

  2. Definieren Sie in transformKql eine Transformation, die die erfassten Daten in die Zielspalten in der Azure-Zieltabelle sendet.

Erteilen der Event Hub-Berechtigung für die Datensammlungsregel

Mit der verwalteten Identität können Sie jedem Event Hub oder Event Hubs-Namespace die Berechtigung zum Senden von Ereignissen an die von Ihnen erstellte Datensammlungsregel und den Datensammlungsendpunkt erteilen. Wenn Sie die Berechtigungen für den Event Hubs-Namespace erteilen, erben alle Event Hubs innerhalb des Namespaces die Berechtigungen.

  1. Wählen Sie im Event Hub- oder Event Hubs-Namespace im Azure-Portal Access Control (IAM)>Rollenzuweisung hinzufügen aus.

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

  2. Wählen Sie Azure Event Hubs-Datenempfänger und dann Weiter aus.

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

  3. Wählen Sie Verwaltete Identität für Zugriff zuweisen zu aus, und klicken Sie auf Mitglieder auswählen. Wählen Sie Datensammlungsregel aus, suchen Sie dem Namen nach nach Ihrer Datensammlungsregel und klicken Sie auf Auswählen.

    Screenshot that shows how to assign access to managed identity.

  4. Wählen Sie Überprüfen und zuweisen aus, und überprüfen Sie die Details, bevor Sie Ihre Rollenzuweisung speichern.

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

Zuordnen der Datensammlungsregel zum Event Hub

Der letzte Schritt besteht darin, die Datensammlungsregel dem Event Hub zuzuordnen, von dem Sie Ereignisse sammeln möchten.

Sie können eine einzelne Datensammlungsregel mehreren Event Hubs zuordnen, die dieselbe Consumergruppe nutzen und Daten im selben Stream erfassen. Alternativ können Sie jedem Event Hub eine eindeutige Datensammlungsregel zuordnen.

Wichtig

Sie müssen dem Event Hub mindestens eine Datensammlungsregel zuordnen, um Daten aus einem Event Hub zu erfassen. Wenn Sie alle Zuordnungen von Datensammlungsregeln im Zusammenhang mit dem Event Hub löschen, wird die Erfassung von Daten aus dem Event Hub beendet.

So erstellen Sie eine Zuordnung einer Datensammlungsregel im Azure-Portal:

  1. Geben Sie im Suchfeld des Azure-Portals Vorlage ein, und wählen Sie dann Benutzerdefinierte Vorlage bereitstellen aus.

  2. Wählen Sie Eigene Vorlage im Editor erstellen.

  3. Fügen Sie die unten aufgeführte Resource Manager-Vorlage in den Editor ein, und wählen Sie dann Speichern aus.

    {
      "$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. Geben Sie auf dem Bildschirm Benutzerdefinierte Bereitstellung ein Abonnement und eine Ressourcengruppe zum Speichern der Zuordnung der Datensammlungsregel an, und geben Sie dann für die Parameter in der Vorlage definierte Werte an, einschließlich:

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

  5. Wählen Sie Überprüfen und erstellen und dann Erstellen aus, nachdem Sie die Details überprüft haben.

Überprüfen der Zieltabelle auf erfasste Ereignisse

Nachdem Sie die Datensammlungsregel Ihrem Event Hub zugeordnet haben, erfasst Azure Monitor-Protokolle alle vorhandenen Ereignisse, deren Aufbewahrungszeitraum nicht abgelaufen ist, sowie alle neuen Ereignisse.

So überprüfen Sie Ihre Zieltabelle auf erfasste Ereignisse:

  1. Navigieren Sie zu Ihrem Arbeitsbereich, und wählen Sie Protokolle aus.

  2. Schreiben Sie eine einfache Abfrage im Abfrage-Editor, und wählen Sie Ausführen aus:

    <table_name>
    

    Sie sollten Ereignisse aus Ihrem Event Hub sehen.

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

Bereinigen von Ressourcen

In diesem Tutorial haben Sie die folgenden Ressourcen erstellt:

  • Benutzerdefinierte Tabelle
  • Datensammlungsendpunkt
  • Datensammlungsregel
  • Zuordnung zu Datensammlungsregel

Bewerten Sie, ob Sie diese Ressourcen noch benötigen. Löschen Sie die Ressourcen, die Sie nicht benötigen, einzeln, oder löschen Sie alle diese Ressourcen gleichzeitig, indem Sie die Ressourcengruppe löschen. Ressourcen, die Sie weiterhin ausführen, können Sie Geld kosten.

Um die Erfassung von Daten aus dem Event Hub zu beenden, löschen Sie alle Zuordnungen von Datensammlungsregeln im Zusammenhang mit dem Event Hub, oder löschen Sie die Datensammlungsregeln selbst. Diese Aktionen setzen auch die Event Hub-Prüfpunkte zurück.

Bekannte Probleme und Einschränkungen

Nächste Schritte

Weitere Informationen zu: