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
- Fluent Bit.
- Schnellstart: Erstellen eines Azure Data Explorer-Clusters und einer Datenbank. Erstellen eines Clusters und einer Datenbank
- Eine Abfrageumgebung. Weitere Informationen finden Sie unter Übersicht über Abfrageintegrationen.
- Ihr Kusto-Cluster-URI für den Wert Ingestion_endpoint im Format https://ingest-<cluster>.<region>.kusto.windows.net. Weitere Informationen finden Sie unter Hinzufügen einer Clusterverbindung.
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.
Melden Sie sich per Azure CLI an Ihrem Azure-Abonnement an. Führen Sie anschließend im Browser die Authentifizierung durch.
az login
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
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}
Kopieren Sie aus den zurückgegebenen JSON-Daten
appId
,password
undtenant
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:
Navigieren Sie zu Ihrer Abfrageumgebung.
Wählen Sie die Datenbank aus, in der Sie die Tabelle erstellen möchten.
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 |
|
tenant_id | Die Mandanten-ID aus Erstellen eines Microsoft Entra-Dienstprinzipals. | ✔️ | |
Kunden-ID | Die Anwendungs-ID aus Erstellen eines Microsoft Entra-Dienstprinzipals. | ✔️ | |
client_secret | Der Schlüsselwert (Kennwort) des geheimen Clientschlüssels aus Erstellen eines Microsoft Entra-Dienstprinzipals. | ✔️ | |
ingestion_endpoint | Geben Sie den Wert ein, wie für Ingestion_Endpointbeschrieben. | ✔️ | |
database_name | Der Name der Datenbank, die Ihre Protokolltabelle enthält. | ✔️ | |
Tabellenname | Der Name der Tabelle aus Erstellen einer Zieltabelle. | ✔️ | |
ingestion_mapping_reference | 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 |
|
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 . |
true |
|
time_key | Der Schlüsselname für den Zeitstempel in den Protokolldatensätzen. Wird ignoriert, wenn include_time_key falsch ist. |
timestamp |
|
ingestion_endpoint_connect_timeout | Das Verbindungstimeout verschiedener Kusto-Endpunkte in Sekunden. | 60s |
|
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. | 3600 |
|
Arbeiter | Die Anzahl der Worker zum Ausführen von Leervorgängen für diese Ausgabe. | 0 |
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]
match *
name azure_kusto
tenant_id <TenantId>
client_id <ClientId>
client_secret <AppSecret>
ingestion_endpoint <IngestionEndpoint>
database_name <DatabaseName>
table_name <TableName>
ingestion_mapping_reference <MappingName>
ingestion_endpoint_connect_timeout <IngestionEndpointConnectTimeout>
compression_enabled <CompressionEnabled>
ingestion_resources_refresh_interval <IngestionResourcesRefreshInterval>
Bestätigen der Datenerfassung
Nachdem daten in der Tabelle eintreffen, bestätigen Sie die Übertragung von Daten, indem Sie die Zeilenanzahl überprüfen:
FluentBitLogs | count
Führen Sie die folgende Abfrage aus, um ein Beispiel für Protokolldaten anzuzeigen:
FluentBitLogs | take 100
Zugehöriger Inhalt
- Übersicht über Datenintegrationen
- Übersicht über Kusto Query Language (KQL)
- Write queries (Schreiben von Abfragen)