Pozyskiwanie danych za pomocą funkcji Fluent Bit w usłudze Azure Data Explorer
Fluent Bit to agent open source, który zbiera dzienniki, metryki i ślady z różnych źródeł. Umożliwia filtrowanie, modyfikowanie i agregowanie danych zdarzeń przed wysłaniem ich do magazynu. Ten artykuł przeprowadzi Cię przez proces wysyłania danych do bazy danych KQL przy użyciu języka Fluent Bit.
W tym artykule pokazano, jak pozyskiwać dane za pomocą Fluent Bit.
Aby uzyskać pełną listę łączników danych, zobacz Omówienie łączników danych.
Wymagania wstępne
- Fluent Bit.
- Baza danych i klaster usługi Azure Data Explorer. Utwórz klaster i bazę danych.
- Środowisko zapytań. Aby uzyskać więcej informacji, zobacz Integracja zapytań — omówienie.
- Identyfikator URI klastra Kusto dla wartości Ingestion_endpoint w formacie klastra https://ingest-<>.<region>.kusto.windows.net. Aby uzyskać więcej informacji, zobacz Dodawanie połączenia klastra.
Tworzenie jednostki usługi Entra firmy Microsoft
Jednostkę usługi Microsoft Entra można utworzyć za pomocą witryny Azure Portal lub programowo, jak w poniższym przykładzie.
Ta główna jednostka usługi to tożsamość używana przez łącznik do zapisywania danych w tabeli w Kusto. Przyznasz uprawnienia dla tej jednostki usługi w celu uzyskania dostępu do zasobów usługi Kusto.
Zaloguj się do subskrypcji platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure. Następnie uwierzytelnij się w przeglądarce.
az login
Wybierz subskrypcję do hostowania podmiotu zabezpieczeń. Ten krok jest wymagany, gdy masz wiele subskrypcji.
az account set --subscription YOUR_SUBSCRIPTION_GUID
Utwórz jednostkę usługi. W tym przykładzie jednostka usługi nosi nazwę
my-service-principal
.az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
Z zwróconych danych JSON skopiuj wartości
appId
,password
itenant
do użycia w przyszłości.{ "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" }
Utworzono aplikację Microsoft Entra i jednostkę usługi.
Tworzenie tabeli docelowej
Fluent Bit przekazuje dzienniki w formacie JSON z trzema właściwościami: log
(dynamiczny), tag
(ciąg) i timestamp
(datetime).
Możesz utworzyć tabelę z kolumnami dla każdej z tych właściwości. Alternatywnie, jeśli masz dzienniki ustrukturyzowane, możesz utworzyć tabelę z właściwościami dziennika zamapowanymi na kolumny niestandardowe. Aby dowiedzieć się więcej, wybierz odpowiednią kartę.
Aby utworzyć tabelę dla dzienników przychodzących z poziomu fluent bitu:
Przejdź do środowiska zapytań.
Wybierz bazę danych, w której chcesz utworzyć tabelę.
Uruchom następujące
.create table
polecenie:.create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
Przychodzące właściwości JSON są automatycznie mapowane na poprawną kolumnę.
Udzielanie uprawnień jednostce usługi
Udziel jednostce usługi z Utwórz jednostkę usługi Microsoft Entrauprawnienia roli ingestor bazy danych do pracy z bazą danych. Aby uzyskać więcej informacji, zobacz Przykłady. Zastąp symbol zastępczy DatabaseName nazwą docelowej bazy danych i symbol zastępczy ApplicationID wartością AppId
, którą zapisałeś podczas tworzenia inspektora usługi Microsoft Entra.
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>;<TenantID>')
Konfigurowanie usługi Fluent Bit w celu wysyłania dzienników do tabeli
Aby skonfigurować aplikację Fluent Bit do wysyłania dzienników do tabeli w usłudze Kusto, utwórz tryb klasyczny lub tryb YAML pliku konfiguracji z następującymi właściwościami wyjściowymi:
Pole | Opis | Wymagane | Domyślny |
---|---|---|---|
Nazwa/nazwisko | Nazwa rurociągu. | azure_kusto |
|
identyfikator_najemcy | Identyfikator dzierżawy z Utwórz jednostkę usługi Microsoft Entra. | ✔️ | |
identyfikator_klienta | Identyfikator aplikacji z Utworzenie jednostki usługi Microsoft Entra. | ✔️ | |
tajny_klucz_klienta | Wartość klucza tajnego klienta (hasło) z Utwórz podmiot usługi Microsoft Entra. | ✔️ | |
punkt odbioru danych | Wprowadź wartość zgodnie z opisem dla Ingestion_Endpoint. | ✔️ | |
nazwa_bazy_danych | Nazwa bazy danych zawierającej tabelę dzienników. | ✔️ | |
nazwa_tabeli | Nazwa tabeli z Utwórz tabelę docelową. | ✔️ | |
ingestion_mapping_reference | Nazwa mapowania pozyskiwania z Utwórz tabelę docelową. Jeśli nie utworzono mapowania pozyskiwania, usuń właściwość z pliku konfiguracji. | ||
klucz_logu | Kluczowa nazwa zawartości dziennika. Na przykład log . |
log |
|
klucz_tag | Kluczowa nazwa tagu. Ignorowane, jeśli include_tag_key ma wartość false. |
tag |
|
include_time_key | Znacznik czasu jest dołączany do danych wyjściowych, jeśli jest włączony. Używa właściwości time_key . |
true |
|
klucz_czasu | Nazwa klucza znacznika czasu w rekordach dziennika. Ignorowane, jeśli include_time_key jest fałszywe. |
timestamp |
|
czas oczekiwania na połączenie z punktem końcowym przyjmowania | Limit czasu oczekiwania na połączenie różnych punktów końcowych Kusto w sekundach. | 60s |
|
kompresja_włączona | Wysyła skompresowany ładunek HTTP (gzip) do usługi Kusto, jeśli jest włączony. | true |
|
interwał_odświeżania_zasobów_ingestion | Interwał odświeżania zasobów do pozyskiwania danych w punkcie końcowym usługi Kusto w sekundach. | 3600 |
|
Pracownicy | Liczba pracowników do wykonywania operacji czyszczenia dla tego wyniku. | 0 |
Aby wyświetlić przykładowy plik konfiguracji, wybierz odpowiednią kartę:
[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>
Potwierdzanie pozyskiwania danych
Po nadejściu danych w tabeli potwierdź transfer danych, sprawdzając liczbę wierszy:
FluentBitLogs | count
Aby wyświetlić przykład danych dziennika, uruchom następujące zapytanie:
FluentBitLogs | take 100
Powiązana zawartość
- omówienie integracji danych
- omówienie języka Kusto Query Language (KQL)
- Pisanie zapytań