Compartilhar via


Ingerir dados com o Fluent Bit no Azure Data Explorer

Fluent Bit é um agente de código aberto que coleta logs, métricas e rastreamentos de várias fontes. Ele permite filtrar, modificar e agregar dados de eventos antes de enviá-los ao armazenamento. Este artigo orienta você pelo processo de uso do Fluent Bit para enviar dados ao banco de dados KQL.

Este artigo mostra como ingerir dados com o Fluent Bit.

Para obter uma lista completa de conectores de dados, consulte Visão geral dos conectores de dados.

Pré-requisitos

Crie uma entidade de serviço do Microsoft Entra.

A entidade de serviço Microsoft Entra pode ser criada por meio do portal do Azure ou programaticamente, como no exemplo a seguir.

Essa entidade de serviço é a identidade usada pelo conector para gravar dados na sua tabela no Kusto. Você concede permissões para que essa entidade de serviço acesse os recursos do Kusto.

  1. Inicie sessão na sua assinatura do Azure com a CLI do Azure. Em seguida, autentique no navegador.

    az login
    
  2. Escolha a assinatura para hospedar a entidade de segurança. Essa etapa é necessária quando você tem várias assinaturas.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Crie a entidade de serviço. Neste exemplo, a entidade de serviço é chamada my-service-principal.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. A partir dos dados JSON retornados, copie o appId, password e tenant para uso futuro.

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

Você criou o aplicativo do Microsoft Entra e a entidade de serviço.

Criar uma tabela de destino

O Fluent Bit encaminha logs no formato JSON com três propriedades: log (dynamic), tag (string) e timestamp (datetime).

Você pode criar uma tabela com colunas para cada uma dessas propriedades. Como alternativa, se tiver logs estruturados, você poderá criar uma tabela com propriedades de log mapeadas para colunas personalizadas. Para saber mais, selecione a guia relevante.

Para criar uma tabela para logs de entrada do Fluent Bit:

  1. Navegue até seu ambiente de consulta.

  2. Selecione o banco de dados onde você quer criar a tabela.

  3. Execute o seguinte comando .create table:

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

    As propriedades JSON de entrada são mapeadas automaticamente para a coluna correta.

Conceder permissões para a entidade de serviço

Conceda à entidade de serviço de Criar uma entidade de serviço do Microsoft Entra permissões de função de ingestor de banco de dados para trabalhar com o banco de dados. Para obter mais informações, consulte Exemplos. Substitua o espaço reservado DatabaseName pelo nome do banco de dados de destino e ApplicationID pelo valor AppId que você salvou ao criar uma entidade de serviço do Microsoft Entra.

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

Configure o Fluent Bit para enviar logs à tabela

Para configurar o Fluent Bit para enviar logs para sua tabela no Kusto, crie um arquivo de configuração no modo clássico ou no modo YAML com as seguintes propriedades de saída:

Campo Descrição Necessário Padrão
Nome O nome do pipeline. azure_kusto
identificador_do_inquilino A ID do locatário de Criar uma entidade de serviço do Microsoft Entra. ✔️
identificador_do_cliente A ID do aplicativo de Criar uma entidade de serviço do Microsoft Entra. ✔️
segredo_do_cliente O valor da chave secreta do cliente (senha) de Criar uma entidade de serviço do Microsoft Entra. ✔️
managed_identity_client_id A ID do cliente da identidade gerenciada a ser usada para autenticação. ✔️
ingestion_endpoint Insira o valor conforme descrito para Ingestion_Endpoint. ✔️
nome_do_banco_de_dados O nome do banco de dados que contém a nova tabela de logs. ✔️
nome_da_tabela O nome da sua tabela de Criar uma tabela de destino. ✔️
ingestion_mapping_reference O nome do mapeamento de ingestão de Criar uma tabela de destino. Se você não criou um mapeamento de ingestão, remova a propriedade do arquivo de configuração.
chave_de_registro Nome da chave do conteúdo do log. Por exemplo, log. log
include_tag_key Se ativada, uma etiqueta será acrescentada à saída. On
chave_de_etiqueta O nome da chave da marcação. Ignorado caso include_tag_key seja falso. tag
include_time_key Um carimbo de data/hora é acrescentado à saída, se habilitado. Use a propriedade time_key em vez disso. On
time_key O nome da chave do carimbo de data/hora nos registros de log. Ignorado se include_time_key falso. timestamp
ingestion_endpoint_connect_timeout O tempo limite de conexão de vários pontos de extremidade do Kusto em segundos. 60
compressão_ativada Envia conteúdo HTTP compactado (gzip) para o Kusto, se habilitado. true
ingestion_resources_refresh_interval O intervalo de atualização de recursos de ingestão do ponto de extremidade Kusto em segundos.
Trabalhadores O número de operadores para executar operações de liberação para essa saída. 0
buffering_enabled Se habilitado, armazena dados em disco antes de ingerir no Kusto. Off
buffer_path Especifica o local do diretório em que os dados armazenados em buffer serão armazenados se buffering_enabled forem On. /tmp/fluent-bit/azure-kusto/
tempo_limite_de_upload Especifica o tempo limite para uploads se buffering_enabled for On. Arquivos mais antigos que esse são ingeridos mesmo que abaixo do limite de tamanho. 30m
tamanho_do_arquivo_de_upload Especifica o tamanho máximo de um arquivo a ser enviado se buffering_enabled for On. 200MB
azure_kusto_buffer_key Chave de buffer do Azure Kusto para identificar instâncias de plug-in quando buffering_enabled for On. Necessário para várias saídas do Azure Kusto com buffer. key
store_dir_limit_size O tamanho máximo do diretório em que os dados armazenados em buffer serão armazenados se buffering_enabled for On. 8GB
buffer_file_delete_early Quando buffering_enabled é On, determina se o arquivo em buffer deve ser excluído antecipadamente após a criação bem-sucedida do blob. Off
unify_tag Cria um único arquivo de buffer quando buffering_enabled é On. On
blob_uri_length Defina o comprimento do URI de blob gerado antes de ingerir no Kusto. 64
scheduler_max_retries Quando buffering_enabled for On, defina o número máximo de repetições para ingestão usando o agendador. 3
delete_on_max_upload_error Quando buffering_enabled for On, determina se o arquivo em buffer deve ser excluído ao atingir o máximo de erros de upload. Off
IO_timeout Configure o tempo limite de entrada/saída HTTP para uploads. 60s

Para ver um arquivo de configuração de exemplo, selecione a guia relevante:

[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

Confirmar ingestão de dados

  1. Depois que os dados chegarem à tabela, confirme a transferência de dados, verificando a contagem de linhas:

    FluentBitLogs
    | count
    
  2. Para exibir um exemplo de dados de log, execute a seguinte consulta:

    FluentBitLogs
    | take 100
    
  • Visão geral das integrações de dados
  • Visão geral da KQL (Linguagem de Consulta Kusto)
  • Gravar consultas