Udostępnij za pośrednictwem


Pobieranie danych za pomocą interfejsu Fluent Bit

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. Azure Data Explorer to szybka i wysoce skalowalna usługa eksploracji danych na potrzeby danych dziennika i telemetrycznych. Ten artykuł przeprowadzi Cię przez proces wysyłania danych do bazy danych KQL przy użyciu języka Fluent Bit.

Ten artykuł obejmuje następujące zagadnienia:

Wymagania wstępne

Tworzenie tabeli do przechowywania dzienników

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

Rejestrowanie aplikacji Microsoft Entra z uprawnieniami do pozyskiwania danych

Jednostkę usługi Microsoft Entra można utworzyć za pomocą witryny Azure Portal lub programowo, jak w poniższym przykładzie.

Ta jednostka usługi jest tożsamością używaną przez łącznik do zapisywania danych w tabeli w usłudze Kusto. Później 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": "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"
    }
    

Utworzono aplikację Microsoft Entra i jednostkę usługi.

Udzielanie uprawnień jednostce usługi

Uruchom następujące polecenie, zastępując <MyDatabase> ciąg nazwą bazy danych:

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

To polecenie przyznaje aplikacji uprawnienia do pozyskiwania danych do tabeli. Aby uzyskać więcej informacji, zobacz Kontrola dostępu oparta na rolach.

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 usługi Azure Data Explorer, utwórz plik konfiguracji trybu klasycznego lub pliku konfiguracji trybu YAML z następującymi właściwościami wyjściowymi:

Pole Opis
Nazwa/nazwisko azure_kusto
Match Wzorzec zgodny z tagami rekordów przychodzących. Uwzględniana jest wielkość liter i obsługuje znak gwiazdki (*) jako symbol wieloznaczny.
Tenant_Id Identyfikator katalogu (dzierżawy) z rejestru aplikacji Microsoft Entra z uprawnieniami do pozyskiwania danych.
Client_Id Identyfikator aplikacji (klienta) z rejestru aplikacji Microsoft Entra z uprawnieniami do pozyskiwania danych.
Client_Secret Wartość klucza tajnego klienta Zarejestruj aplikację Microsoft Entra z uprawnieniami do pozyskiwania danych.
Ingestion_Endpoint Użyj identyfikatora URI pozyskiwania znalezionego na stronie szczegółów bazy danych KQL. Aby uzyskać więcej informacji, zobacz Kopiowanie identyfikatora URI.
Database_Name Nazwa bazy danych zawierającej tabelę dzienników.
Table_Name Nazwa tabeli z utwórz tabelę do przechowywania dzienników.
Ingestion_Mapping_Reference Nazwa mapowania pozyskiwania z utwórz tabelę. Jeśli nie utworzono mapowania pozyskiwania, usuń właściwość z pliku konfiguracji.

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]
    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

Sprawdź, czy dane wylądowały w tabeli

Po zakończeniu konfiguracji dzienniki powinny pojawić się w tabeli.

  1. Aby sprawdzić, czy dzienniki są pozyskiwane, uruchom następujące zapytanie:

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

    FluentBitLogs
    | take 100