Freigeben über


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. Dieser Artikel führt Sie durch den Prozess der Verwendung von Fluent Bit zum Senden von Daten an Ihre KQL-Datenbank.

In diesem Artikel wird gezeigt, wie Sie Daten mit Fluent Bit verarbeiten.

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

Voraussetzungen

Erstellen eines Microsoft Entra-Dienstprinzipals

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 Ihre Tabelle in Kusto verwendet wird. Sie erteilen diesem Dienstprinzipal 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": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "tenant": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
    

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

Zieltabelle erstellen

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.

Gewähren von Berechtigungen für Ihren Dienstprinzipal

Gewähren Sie dem Dienstprinzipal aus Erstellen eines Microsoft Entra-DienstprinzipalsDatenbankerfasser-Rollenberechtigungen für die Arbeit mit der Datenbank. Weitere Informationen finden Sie unter Beispiele. Ersetzen Sie DatabaseName durch den Namen der Zieldatenbank und ApplicationID durch den AppId Wert, den Sie beim Erstellen eines Microsoft Entra-Dienstprinzipals gespeichert haben.

.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>;<TenantID>')

Konfigurieren von Fluent Bit zum Senden von Protokollen an Ihre Tabelle

Um Fluent Bit so zu konfigurieren, dass Protokolle an Ihre Tabelle in Kusto gesendet werden, erstellen Sie einen Konfigurationsdatei im klassischen Modus oder YAML-Modus mit den folgenden Ausgabeeigenschaften:

Feld Beschreibung des Dataflows Erforderlich Standard
Name Der Pipeline-Name. azure_kusto
Mieter_ID Die Mandanten-ID aus Erstellen eines Microsoft Entra-Dienstprinzipals. ✔️
Kunden-ID Die Anwendungs-ID aus Erstellen eines Microsoft Entra-Dienstprinzipals. ✔️
client_secret (Kunden-Geheimnis) Der Schlüsselwert (Kennwort) des geheimen Clientschlüssels aus Erstellen eines Microsoft Entra-Dienstprinzipals. ✔️
verwaltete_Identität_Client_ID Die Client-ID der verwalteten Identität, die für die Authentifizierung verwendet werden soll. ✔️
Erfassungsendpunkt Geben Sie den Wert ein, wie für Ingestion_Endpointbeschrieben. ✔️
Datenbankname Der Name der Datenbank, die Ihre Protokolltabelle enthält. ✔️
Tabellenname Der Name der Tabelle aus Erstellen einer Zieltabelle. ✔️
Zuweisungsreferenz für die Datenaufnahme Der Name der Erfassungszuordnung aus Erstellen einer Zieltabelle. Wenn Sie keine Aufnahmezuordnung erstellt haben, entfernen Sie die Eigenschaft aus der Konfigurationsdatei.
Protokollschlüssel Schlüsselname des Protokollinhalts. Beispielsweise log. log
include_tag_key Wenn diese Option aktiviert ist, wird ein Tag an die Ausgabe angefügt. On
tag_key Der Schlüsselname des Tags. Wird ignoriert, wenn include_tag_key falsch ist. tag
include_time_key Wenn aktiviert, wird ein Zeitstempel an die Ausgabe angefügt. Verwendet die Eigenschaft time_key. On
Zeit_Schlüssel Der Schlüsselname für den Zeitstempel in den Protokolldatensätzen. Wird ignoriert, wenn include_time_key falsch ist. timestamp
Verbindungszeitüberschreitung des Ingestion-Endpunkts Das Verbindungstimeout verschiedener Kusto-Endpunkte in Sekunden. 60
Komprimierung_aktiviert Sendet komprimierte HTTP-Nutzdaten (gzip) an Kusto, falls aktiviert. true
ingestion_resources_refresh_interval Das Aktualisierungsintervall der Erfassungsressourcen des Kusto-Endpunkts in Sekunden.
Arbeiter Die Anzahl der Worker zum Ausführen von Leervorgängen für diese Ausgabe. 0
Puffern_aktiviert Wenn aktiviert, werden Daten vor dem Aufnehmen in Kusto in die Festplatte gepuffert. Off
buffer_path Gibt den Speicherort des Verzeichnisses an, in dem die gepufferten Daten gespeichert werden, wenn buffering_enabledOn ist. /tmp/fluent-bit/azure-kusto/
Upload-Timeout Gibt das Timeout für Uploads an, wenn buffering_enabledOn ist. Dateien, die älter als dies sind, werden auch dann aufgenommen, wenn sie unter dem Größenlimit liegen. 30m
Hochlade_Dateigröße Gibt die maximale Größe einer Datei an, die hochgeladen werden soll, wenn buffering_enabled gleich On ist. 200MB
azure_kusto_buffer_key Azure Kusto-Pufferschlüssel, um Plugin-Instanzen zu identifizieren, wenn buffering_enabledOn ist. Erforderlich für mehrere Azure Kusto-Ausgaben mit Pufferung. key
Speicherverzeichnisgrößenlimit Die maximale Größe des Verzeichnisses, in dem gepufferte Daten gespeichert werden, ist buffering_enabled, wenn On. 8GB
buffer_file_delete_early Wenn buffering_enabledOn ist, ob die gepufferte Datei direkt nach der erfolgreichen Blob-Erstellung gelöscht werden soll. Off
unify_tag Erstellt eine einzelne Pufferdatei, wenn buffering_enabledOn ist. On
Blob-URI-Länge Legen Sie die Länge der generierten BLOB-URI fest, bevor sie in Kusto aufgenommen wird. 64
Scheduler_Maximal-Wiederholungen Wenn buffering_enabledOn ist, legen Sie die maximale Anzahl von Wiederholungsversuchen für die Aufnahme mithilfe des Schedulers fest. 3
delete_on_max_upload_error Soll die Pufferdatei bei maximalen Uploadfehlern gelöscht werden, wenn buffering_enabledOn ist? Off
IO_timeout Konfigurieren Sie das HTTP-I/O-Timeout für Uploads. 60s

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]
    [OUTPUT]
    Match *
    Name azure_kusto
    Tenant_Id <app_tenant_id>
    Client_Id <app_client_id>
    Client_Secret <app_secret>
    Ingestion_Endpoint https://ingest-<cluster>.<region>.kusto.windows.net
    Database_Name <database_name>
    Table_Name <table_name>
    Ingestion_Mapping_Reference <mapping_name>
    ingestion_endpoint_connect_timeout <ingestion_endpoint_connect_timeout>
    compression_enabled <compression_enabled>
    ingestion_resources_refresh_interval <ingestion_resources_refresh_interval>
    buffering_enabled On
    upload_timeout 2m
    upload_file_size 125M
    azure_kusto_buffer_key kusto1
    buffer_file_delete_early Off
    unify_tag On
    buffer_dir /var/log/
    store_dir_limit_size 16GB
    blob_uri_length 128
    scheduler_max_retries 3
    delete_on_max_upload_error Off
    io_timeout 60s

Bestätigen der Datenerfassung

  1. Nachdem daten in der Tabelle eintreffen, bestätigen Sie die Übertragung von Daten, indem Sie die Zeilenanzahl überprüfen:

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

    FluentBitLogs
    | take 100