Udostępnij za pośrednictwem


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

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.

  1. Zaloguj się do subskrypcji platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure. Następnie uwierzytelnij się w przeglądarce.

    az login
    
  2. Wybierz subskrypcję do hostowania podmiotu zabezpieczeń. Ten krok jest wymagany, gdy masz wiele subskrypcji.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. 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}
    
  4. Z zwróconych danych JSON skopiuj wartości appId, passwordi tenant 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:

  1. Przejdź do środowiska zapytań.

  2. Wybierz bazę danych, w której chcesz utworzyć tabelę.

  3. 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

  1. Po nadejściu danych w tabeli potwierdź transfer danych, sprawdzając liczbę wierszy:

    FluentBitLogs
    | count
    
  2. Aby wyświetlić przykład danych dziennika, uruchom następujące zapytanie:

    FluentBitLogs
    | take 100