Ingerir dados com o Fluent Bit no Azure Data Explorer
O 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
- Fluent Bit.
- Um cluster e um banco de dados do Azure Data Explorer. Criar um cluster e um banco de dados.
- Um ambiente de consulta. Para mais informações, confira a Visão geral de integrações de consulta.
- Seu URI do cluster Kusto para o valor do Ingestion_endpoint no formato https://ingest-<cluster>.<região>.kusto.windows.net. Para obter mais informações, consulte Adicionar uma conexão de cluster.
Criar uma entidade de serviço do Microsoft Entra
A entidade de serviço do 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.
Inicie sessão na sua assinatura do Azure com a CLI do Azure. Em seguida, autentique no navegador.
az login
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
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}
A partir dos dados JSON retornados, copie o
appId
,password
etenant
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:
Navegue até seu ambiente de consulta.
Selecione o banco de dados onde você quer criar a tabela.
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 em Criar uma entidade de serviço do Microsoft Entraingestor de banco de dados permissões de função 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. | ✔️ | |
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 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. | ||
log_key | Nome da chave do conteúdo do log. Por exemplo, log . |
log |
|
tag_key | O nome da chave da marca. Ignorado caso include_tag_key seja falso. |
tag |
|
include_time_key | Um carimbo de data/hora é acrescentado à saída, se habilitado. Usa a propriedade time_key . |
true |
|
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 endpoints do Kusto em segundos. | 60s |
|
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. | 3600 |
|
Trabalhadores | O número de operadores executar operações de liberação para essa saída. | 0 |
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]
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>
Confirmar ingestão de dados
Depois que os dados chegarem à tabela, confirme a transferência de dados, verificando a contagem de linhas:
FluentBitLogs | count
Para exibir um exemplo de dados de log, execute a seguinte consulta:
FluentBitLogs | take 100
Conteúdo relacionado
- Visão geral das integrações de dados
- Visão geral da KQL (Linguagem de Consulta Kusto)
- Gravar consultas