Aufnehmen von Daten mit Fluent Bit in Azure Data Explorer

Fluent Bit ist ein Open Source-Agent, der Protokolle, Metriken und Ablaufverfolgungen aus verschiedenen Quellen sammelt. Es ermöglicht Ihnen, Ereignisdaten zu filtern, zu ändern und zu aggregieren, bevor Sie sie an den Speicher senden. Azure-Daten-Explorer ist ein schneller und hochgradig skalierbarer Dienst zur Untersuchung von Daten (Protokoll- und Telemetriedaten). Dieser Artikel führt Sie durch den Prozess der Verwendung von Fluent Bit zum Senden von Daten an Azure Data Explorer.

In diesem Artikel lernen Sie Folgendes:

Eine vollständige Liste der Datenconnectors finden Sie in der Übersicht über Datenconnectors.

Voraussetzungen

Sie können jedes der verfügbaren Abfragetools für Ihre Abfrageumgebung verwenden.

Erstellen einer Tabelle zum Speichern Ihrer Protokolle

Fluent Bit leitet Protokolle im JSON-Format mit drei Eigenschaften weiter: log (dynamisch), tag (Zeichenfolge) und timestamp (datetime).

Sie können eine Tabelle mit Spalten für jede dieser Eigenschaften erstellen. Alternativ können Sie bei strukturierten Protokollen eine Tabelle mit Protokolleigenschaften erstellen, die benutzerdefinierten Spalten zugeordnet sind. Um mehr zu erfahren, wählen Sie die relevante Registerkarte aus.

So erstellen Sie eine Tabelle für eingehende Protokolle aus Fluent Bit:

  1. Navigieren Sie zu Ihrer Abfrageumgebung.

  2. Wählen Sie die Datenbank aus, in der Sie die Tabelle erstellen möchten.

  3. Führen Sie den folgenden .create table Befehl aus:

    .create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
    

    Die eingehenden JSON-Eigenschaften werden automatisch der richtigen Spalte zugeordnet.

Registrieren einer Microsoft Entra-App mit Berechtigungen zum Erfassen von Daten

Der Microsoft Entra-Dienstprinzipal kann über das Azure-Portal oder programmgesteuert (wie im folgenden Beispiel) erstellt werden.

Dieser Dienstprinzipal ist die Identität, die vom Connector zum Schreiben von Daten in Kusto verwendet wird. Sie gewähren diesem Dienstprinzipal später noch Berechtigungen für den Zugriff auf Kusto-Ressourcen.

  1. Melden Sie sich per Azure CLI an Ihrem Azure-Abonnement an. Führen Sie anschließend im Browser die Authentifizierung durch.

    az login
    
  2. Wählen Sie das Abonnement aus, um den Prinzipal zu hosten. Dieser Schritt ist erforderlich, wenn Sie über mehrere Abonnements verfügen.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Erstellen Sie den Dienstprinzipal. In diesem Beispiel wird der Dienstprinzipal als my-service-principal bezeichnet.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. Kopieren Sie aus den zurückgegebenen JSON-Daten appId, password und tenant für die zukünftige Verwendung.

    {
      "appId": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn",
      "tenant": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn"
    }
    

Sie haben Ihre Microsoft Entra-Anwendung und den Dienstprinzipal erstellt.

Erteilen von Berechtigungen für den Dienstprinzipal

Führen Sie den folgenden Befehl aus, und ersetzen <MyDatabase> Sie den Namen der Datenbank:

.add database MyDatabase ingestors ('aadapp=<Application (client) ID>;<Directory (tenant) ID>')

Mit diesem Befehl werden die Anwendungsberechtigungen zum Aufnehmen von Daten in die Tabelle gewährt. Weitere Informationen finden Sie unter rollenbasierte Zugriffssteuerung.

Konfigurieren von Fluent Bit zum Senden von Protokollen an Ihre Tabelle

Um Fluent Bit so zu konfigurieren, dass Protokolle an Ihre Azure Data Explorer-Tabelle gesendet werden, erstellen Sie eine Konfigurationsdatei für den klassischen Modus oder yaML-Modus mit den folgenden Ausgabeeigenschaften:

Feld Beschreibung des Dataflows
Name azure_kusto
Übereinstimmung Ein Muster, das mit den Tags eingehender Datensätze abgeglichen werden soll. Die Groß-/Kleinschreibung wird beachtet und das Sternzeichen (*) als Wildcard unterstützt.
Tenant_Id Verzeichnis-ID (Mandant) aus der Registrierung einer Microsoft Entra-App mit Berechtigungen zum Erfassen von Daten.
Client_Id Anwendungs-ID (Client) aus der Registrierung einer Microsoft Entra-App mit Berechtigungen zum Erfassen von Daten.
Client_Secret Der Schlüsselwert des geheimen Clientschlüssels Registriert eine Microsoft Entra-App mit Berechtigungen zum Erfassen von Daten.
Ingestion_Endpoint Verwenden Sie den Datenaufnahme-URI im Azure-Portal unter Ihrer Clusterübersicht.
Database_Name Der Name der Datenbank, die Die Protokolltabelle enthält.
Table_Name Der Name der Tabelle aus " Tabelle erstellen", um Ihre Protokolle zu speichern.
Ingestion_Mapping_Reference Der Name der Aufnahmezuordnung aus "Tabelle erstellen". Wenn Sie keine Aufnahmezuordnung erstellt haben, entfernen Sie die Eigenschaft aus der Konfigurationsdatei.

Um eine Beispielkonfigurationsdatei anzuzeigen, wählen Sie die relevante Registerkarte aus:

[SERVICE]
    Daemon Off
    Flush 1
    Log_Level trace
    HTTP_Server On
    HTTP_Listen 0.0.0.0
    HTTP_Port 2020
    Health_Check On

[INPUT]
    Name tail
    Path /var/log/containers/*.log
    Tag kube.*
    Mem_Buf_Limit 1MB
    Skip_Long_Lines On
    Refresh_Interval 10

[OUTPUT]
    Name azure_kusto
    Match *
    Tenant_Id azure-tenant-id
    Client_Id azure-client-id
    Client_Secret azure-client-secret
    Ingestion_Endpoint azure-data-explorer-ingestion-endpoint
    Database_Name azure-data-explorer-database-name
    Table_Name azure-data-explorer-table-name

Vergewissern Sie sich, dass Die Daten in Ihrer Tabelle enthalten sind

Sobald die Konfiguration abgeschlossen ist, sollten Protokolle in Ihrer Tabelle eingehen.

  1. Führen Sie die folgende Abfrage aus, um zu überprüfen, ob Protokolle aufgenommen werden:

    FluentBitLogs
    | count
    
  2. Führen Sie die folgende Abfrage aus, um ein Beispiel für Protokolldaten anzuzeigen:

    FluentBitLogs
    | take 100