Ingestování dat pomocí fluent Bitu do Azure Data Exploreru

Fluent Bit je opensourcový agent, který shromažďuje protokoly, metriky a trasování z různých zdrojů. Umožňuje filtrovat, upravovat a agregovat data událostí před jejich odesláním do úložiště. Tento článek vás provede procesem použití fluent Bit k odesílání dat do databáze KQL.

Tento článek popisuje, jak načíst data pomocí Fluent Bit.

Úplný seznam datových konektorů najdete v přehledu datových konektorů.

Požadavky

Vytvořit službu principal Microsoft Entra

Instanční objekt Microsoft Entra můžete vytvořit prostřednictvím webu Azure Portal nebo programově, jak je znázorněno v následujícím příkladu.

Konektor používá tento hlavní objekt služby jako identitu k zápisu dat do tabulky v Kusto. Udělíte tomuto instančnímu objektu oprávnění pro přístup k prostředkům Kusto.

  1. Přihlaste se ke svému předplatnému Azure prostřednictvím Azure CLI. Pak se ověřte v prohlížeči.

    az login
    
  2. Zvolte předplatné, které má být hostitelem objektu zabezpečení. Tento krok je potřeba v případě, že máte více předplatných.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Vytvořte instanční objekt. V tomto příkladu se instanční objekt nazývá my-service-principal.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. Z vrácených dat JSON zkopírujte appIdpasswordtenant a pro budoucí použití.

    {
      "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"
    }
    

Vytvořili jste aplikaci Microsoft Entra a instanční objekt.

Vytvoření cílové tabulky

Fluent Bit předává protokoly ve formátu JSON se třemi vlastnostmi: (dynamický), (řetězec) a log (datetime).tagtimestamp

Pro každou z těchto vlastností můžete vytvořit tabulku se sloupci. Pokud máte strukturované protokoly, můžete také vytvořit tabulku s vlastnostmi protokolu namapovanými na vlastní sloupce. Další informace získáte tak, že vyberete příslušnou kartu.

Vytvoření tabulky pro příchozí protokoly z fluent Bitu:

  1. Přejděte do prostředí dotazu.

  2. Vyberte databázi, ve které chcete tabulku vytvořit.

  3. Spusťte následující .create table příkaz:

    .create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
    

    Příchozí vlastnosti JSON se automaticky mapují do správného sloupce.

Udělení oprávnění instančnímu objektu

Udělte služebnímu hlavnímu objektu z části Vytvoření služebního hlavního objektu Microsoft Entraoprávnění role služby pro ingestování databáze pro práci s databází. Podívejte se na příkladypro více informací. Zástupný symbol DatabaseName nahraďte názvem cílové databáze a ApplicationID s hodnotou AppId, kterou jste uložili při vytváření servisního hlavního objektu Microsoft Entra.

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

Konfigurace fluent Bitu pro odesílání protokolů do tabulky

Pokud chcete nakonfigurovat Fluent Bit pro odesílání protokolů do tabulky v Kusto, vytvořte klasický režim nebo režimu YAML konfigurační soubor s následujícími výstupními vlastnostmi:

Pole Popis Povinný Výchozí
Název Název kanálu. azure_kusto
ID nájemce ID tenanta z Vytvoření aplikačního objektu Microsoft Entra. ✔️
identifikátor klienta ID aplikace z Vytvoření služebního principála Microsoft Entra. ✔️
tajný klíč klienta Hodnota tajného klíče klienta (heslo) z Vytvoření zástupce služby Microsoft Entra. ✔️
managed_identity_client_id (spravovaný identifikátor klienta identity) ID klienta spravované identity, které se má použít k ověřování. ✔️
koncový bod pro ingest Zadejte hodnotu popsanou pro Ingestion_Endpoint. ✔️
název databáze Název databáze, která obsahuje tabulku protokolů. ✔️
název tabulky Název tabulky z Vytvoření cílové tabulky. ✔️
referenční mapa pro ingestaci Název mapování příjmu dat z Vytvoření cílové tabulky. Pokud jste nevytvořili mapování příjmu dat, odeberte vlastnost z konfiguračního souboru.
klíč_logu Název klíče obsahu protokolu. Například log. log
Zahrnout_klíč značky Pokud je tato možnost povolená, přidá se značka k výstupu. On
značka_klíč Hlavní název značky. Ignorováno, pokud je include_tag_key false. tag
zahrnout_časový_klíč Časové razítko se připojí k výstupu, pokud je povoleno. Používá vlastnost time_key. On
časový klíč Název klíče pro časové razítko v záznamech protokolu. Ignorováno, pokud include_time_key false. timestamp
časový limit připojení k koncovému bodu pro příjem Časový limit připojení různých koncových bodů Kusto v sekundách. 60
komprese_povolena V případě povolení odešle komprimovanou datovou část HTTP (gzip) do Kusto. true
interval_aktualizace_zdrojů_ingesce Interval aktualizace prostředků příjmu dat koncového bodu Kusto v sekundách
dělníci Počet pracovníků k provádění operací vyprázdnění pro tento výstup. 0
povolené ukládání do vyrovnávací paměti Pokud je tato možnost povolena, před ingestováním do Kusto ukládá data na disk do vyrovnávací paměti. Off
buffer_path Určuje umístění adresáře, do kterého budou uložena uložená data ve vyrovnávací paměti, pokud buffering_enabled jsou On. /tmp/fluent-bit/azure-kusto/
časový limit nahrávání Určuje časový limit pro nahrání, pokud buffering_enabled je On. Soubory starší, než je tato hodnota, se ingestují i v případě, že jsou nižší než limit velikosti. 30m
upload_file_size Určuje maximální velikost souboru, který se má nahrát, pokud buffering_enabled je On. 200MB
azure_kusto_buffer_key Klíč vyrovnávací paměti Azure Kusto pro rozpoznání instancí pluginu, když buffering_enabled je On. Vyžaduje se pro více výstupů Azure Kusto s ukládáním do vyrovnávací paměti. key
omezení_velikosti_adresáře Maximální velikost adresáře, ve kterém jsou data ve vyrovnávací paměti uložena, pokud buffering_enabled je On. 8GB
předčasné_smazání_souboru_ze_zásobníku Když je buffering_enabledOn, zda se má odstranit soubor s vyrovnávací pamětí brzy po úspěšném vytvoření blobu. Off
unify_tag Vytvoří jeden soubor vyrovnávací paměti, pokud buffering_enabled je On. On
blob_uri_length Nastavte délku generovaného blob URI před jeho ingestováním do Kusto. 64
plánovač_max_pokusů Když je buffering_enabledOn, nastavte pomocí plánovače maximální počet pokusů pro příjem dat. 3
odstranit_při_max_chybě_nahrání Pokud buffering_enabled je On, jestli se má odstranit soubor vyrovnávací paměti při maximálním počtu chyb nahrávání. Off
časový limit IO Nakonfigurujte časový limit vstupně-výstupních operací HTTP pro nahrávání. 60s

Pokud chcete zobrazit ukázkový konfigurační soubor, vyberte příslušnou kartu:

[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

Potvrzení příjmu dat

  1. Jakmile data dorazí do tabulky, potvrďte přenos dat tak, že zkontrolujete počet řádků:

    FluentBitLogs
    | count
    
  2. Pokud chcete zobrazit ukázku dat protokolu, spusťte následující dotaz:

    FluentBitLogs
    | take 100