使用 Fluent Bit 将数据引入到 Azure 数据资源管理器

Fluent Bit 是一种开源代理,用于从各种源收集日志、指标和跟踪。 使用它可以在将事件数据发送到存储之前对事件数据进行筛选、修改和聚合。 Azure 数据资源管理器是一项快速且高度可缩放的数据探索服务,适用于日志和遥测数据。 本文指导你完成使用 Fluent Bit 将数据发送到 Azure 数据资源管理器的过程。

本文将指导如何进行以下操作:

有关数据连接器的完整列表,请参阅数据连接器概述

先决条件

创建 Azure 数据资源管理器表来存储日志

Fluent Bit 以 JSON 格式将日志随以下三个属性转发到 Azure 数据资源管理器:log (dynamic)、tag (string) 和 timestamp (datetime)。

可以创建一个表,其中包含上述每个属性的列。 或者,如果你有结构化日志,则可以创建一个表,其中包含映射到自定义列的日志属性。 若要了解详细信息,请选择相关选项卡。

若要为来自 Fluent Bit 的传入日志创建表,请执行以下操作:

  1. 选择要在其中创建表的数据库。

  2. 运行以下 .create table 命令

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

    Azure 数据资源管理器会自动将传入的 JSON 属性映射到正确的列中。

注册有权引入数据的 Azure AD 应用

对于需要在未创建用户的情况下访问 Azure 数据资源管理器的应用程序,将使用 Azure Active Directory (Azure AD) 应用程序身份验证。 若要使用 Fluent Bit 引入数据,需要创建并注册一个 Azure AD 服务主体,然后授权此主体将数据引入到 Azure 数据资源管理器表。

  1. 创建 Azure AD 应用程序注册

  2. 保存应用程序(客户端)ID、目录(租户)ID 以及客户端密码值,以便在后面的步骤中使用。

  3. 运行以下命令(请将 <MyDatabase> 替换为数据库的名称):

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

    此命令授予应用程序将数据引入到表的权限。 有关详细信息,请参阅基于角色的访问控制

配置 Fluent Bit 以将日志发送到表

若要配置 Fluent Bit 以将日志发送到 Azure 数据资源管理器表,请创建经典模式YAML 模式配置文件,其中包含以下输出属性:

字段 说明
Name azure_kusto
匹配 一种模式,用于针对传入记录的标记进行匹配。 它区分大小写,并且支持星号 (*) 字符作为通配符。
Tenant_Id 注册有权引入数据的 Azure AD 应用中的目录(租户)ID。
Client_Id 注册有权引入数据的 Azure AD 应用中的应用程序(客户端)ID。
Client_Secret 注册有权引入数据的 Azure AD 应用中的客户端密码值。
Ingestion_Endpoint 使用在 Azure 门户中的群集概述下找到的“数据引入 URI”
Database_Name 包含日志表的数据库的名称。
Table_Name 创建 Azure 数据资源管理器表中的表的名称。
Ingestion_Mapping_Reference 创建 Azure 数据资源管理器表中的引入映射的名称。 如果未创建引入映射,请从配置文件中删除该属性。

若要查看示例配置文件,请选择相关选项卡:

[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

验证数据是否已引入 Azure 数据资源管理器

配置完成后,日志应到达 Azure 数据资源管理器表。

  1. 若要验证是否已引入日志,请运行以下查询:

    FluentBitLogs
    | count
    
  2. 若要查看日志数据示例,请运行以下查询:

    FluentBitLogs
    | take 100