Compartir vía


Obtención de datos con Fluent Bit

Fluent Bit es un agente de código abierto que recopila registros, métricas y seguimientos de varios orígenes. Permite filtrar, modificar y agregar datos de eventos antes de enviarlos al almacenamiento. El Explorador de datos de Azure es un servicio de exploración de datos altamente escalable y rápido para datos de telemetría y registro. Este artículo le guía por el proceso de uso de Fluent Bit para enviar datos a la base de datos KQL.

En este artículo, aprenderá a:

Requisitos previos

Creación de una tabla para almacenar los registros

Fluent Bit reenvía los registros en formato JSON con tres propiedades: log (dynamic), tag (string) y timestamp (datetime).

Puede crear una tabla con columnas para cada una de estas propiedades. Como alternativa, si tiene registros estructurados, puede crear una tabla con propiedades de registro asignadas a columnas personalizadas. Para más información, seleccione la pestaña correspondiente.

Para crear una tabla para los registros entrantes de Fluent Bit:

  1. Vaya al entorno de consulta.

  2. Seleccione la base de datos donde desea crear la tabla.

  3. Ejecute el comando .create table siguiente:

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

    Las propiedades JSON entrantes se asignan automáticamente a la columna correcta.

Registro de una aplicación de Microsoft Entra con permisos para ingerir datos

La entidad de servicio de Microsoft Entra se puede crear mediante Azure Portal o mediante programación, como en el ejemplo siguiente.

Esta entidad de servicio es la identidad utilizada por el conector para escribir datos en la tabla de Kusto. Más adelante concederemos permisos para que esta entidad de servicio acceda a los recursos de Kusto.

  1. Inicie sesión en su suscripción de Azure a través de la CLI de Azure. A continuación, realice la autenticación en el explorador.

    az login
    
  2. Elija la suscripción para hospedar la entidad de servicio. Este paso es necesario si tiene varias suscripciones.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Cree la entidad de servicio. En este ejemplo, la entidad de servicio se llama my-service-principal.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. En los datos JSON devueltos, copie los valores appId, password y tenant para usarlos posteriormente.

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

Ha creado una aplicación de Microsoft Entra y una entidad de servicio.

Conceder permisos a la entidad de servicio

Ejecute el comando siguiente y reemplace <MyDatabase> por el nombre de la base de datos:

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

Este comando concede a la aplicación permisos para ingerir datos en la tabla. Para más información, vea Control de acceso basado en roles.

Configuración de Fluent Bit para enviar registros a la tabla

Para configurar Fluent Bit para enviar registros a la tabla de Azure Data Explorer, cree un archivo de configuración de modo clásico o modo YAML con las siguientes propiedades de salida:

Campo Descripción
Nombre azure_kusto
Coincidencia Un patrón que debe coincidir con las etiquetas de los registros entrantes. Distingue mayúsculas de minúsculas y admite el carácter de estrella (*) como carácter comodín.
Tenant_Id Id. de directorio (inquilino) de Registro de una aplicación de Microsoft Entra con permisos para ingerir datos.
Client_id Id. de aplicación (cliente) de Registro de una aplicación de Microsoft Entra con permisos para ingerir datos.
Client_secret Valor de clave secreta de cliente de Registro de una aplicación de Microsoft Entra con permisos para ingerir datos.
Ingestion_Endpoint Use el URI de ingesta que se encuentra en la página de detalles de la base de datos KQL. Para obtener más información, consulte Copia de identificador URI.
Database_name El nombre de la base de datos que contendrá la tabla de registro.
Table_Name Nombre de la tabla de Crear una tabla para almacenar los registros.
Ingestion_Mapping_Reference Nombre de la asignación de ingesta de Crear una tabla. Si no creó una asignación de ingesta, quite la propiedad del archivo de configuración.

Para ver un archivo de configuración de ejemplo, seleccione la pestaña correspondiente:

[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

Comprobación de que los datos han llegado a la tabla

Una vez completada la configuración, los registros deben llegar a la tabla.

  1. Para comprobar que los registros se ingieren, ejecute la siguiente consulta:

    FluentBitLogs
    | count
    
  2. Para ver un ejemplo de datos de registro, ejecute la consulta siguiente:

    FluentBitLogs
    | take 100