使用 Fluentd 引入 Azure 数据资源管理器中的日志数据

日志引入是从应用程序、服务器、容器和云服务收集、转换和准备日志数据的过程,以便存储、分析和监视日志数据。 日志捕获错误、警告、使用模式和系统性能等信息。 可靠的日志引入可确保几乎实时地提供作和安全数据,以便进行故障排除和见解。 本文介绍如何将日志从 Fluentd 发送到 Azure 数据资源管理器(Kusto),包括安装、配置和验证步骤。

概述

什么是 Fluentd?

Fluentd 是一种开源数据收集器,可用于统一多个系统的日志收集和路由。 它支持 1,000 多个插件,并提供用于筛选、缓冲和转换数据的灵活选项。 可以在云原生和企业环境中使用 Fluentd 进行集中式日志聚合和转发。

什么是 Azure 数据资源管理器?

Azure 数据资源管理器(ADX)是一项快速、完全托管的分析服务,可针对大量结构化、半结构化和非结构化数据进行实时分析。 ADX 使用 Kusto 查询语言(KQL),通常用于遥测、监视、诊断和交互式数据探索。

先决条件

  • 在必须引入日志的节点上安装 Ruby。 若要使用 gem 包管理器安装 fluentd 依赖项,请参阅 Ruby 安装说明
  • 访问 Azure 数据资源管理器群集和数据库。
  • 有权引入数据的 Azure Active Directory 应用程序。

如何开始使用 Fluentd 和 Azure 数据资源管理器

  1. 使用 RubyGems 安装 Fluentd

    gem install fluentd
    
  2. 安装 Fluentd Kusto 插件

    gem install fluent-plugin-kusto
    
  3. 通过创建包含以下内容的配置文件(例如),fluent.conf。 将占位符替换为 Azure 和插件值:

    <match <tag-from-source-logs>>
      @type kusto
      endpoint https://<your-cluster>.<region>.kusto.chinacloudapi.cn
      database_name <your-database>
      table_name <your-table>
      logger_path <your-fluentd-log-file-path>
    
      # Authentication options
      auth_type <your-authentication-type>
    
      # AAD authentication
      tenant_id <your-tenant-id>
      client_id <your-client-id>
      client_secret <your-client-secret>
    
      # Managed identity authentication (optional)
      managed_identity_client_id <your-managed-identity-client-id>
    
      # Workload identity authentication (optional)
      workload_identity_tenant_id <your-workload-identity-tenant-id>
      workload_identity_client_id <your-workload-identity-client-id>
    
      # Non-buffered mode
      buffered false
      delayed false
    
      # Buffered mode
      # buffered true
      # delayed <true/false>
    
      <buffer>
        @type memory
        timekey 1m
        flush_interval 10s
      </buffer>
    </match>
    

有关更多配置和身份验证详细信息,请参阅 Fluentd Kusto 插件文档

  1. 为引入准备 Azure Data Explorer

    1. 创建 ADX 群集和数据库。 请参阅 创建 Azure 数据资源管理器群集和数据库

    2. 创建 Azure Active Directory 应用程序并授予将数据引入 ADX 数据库的权限。 请参阅 在 Azure 数据资源管理器中创建Microsoft Entra 应用程序注册

      注释

      保存应用密钥和应用程序 ID 以供将来使用。

    3. 创建用于日志引入的表。 例如:

    .create table LogTable (
      tag:string,
      timestamp:datetime,
      record:dynamic
    )
    
  2. 使用配置文件运行 Fluentd

    fluentd -c fluent.conf
    
  3. 通过以下方式验证日志引入

    1. 检查 Fluentd 日志文件,确认没有错误,并且已成功发送引入请求。

      Fluentd 日志文件的屏幕截图,其中显示了成功的引入请求

    2. 查询 ADX 表 以确保正确引入日志:

    LogTable
    | take 10
    
  4. 引入映射:使用 Kusto 中预定义的引入映射将数据默认的 3 列格式转换为所需的架构。 有关详细信息,请参阅 引入映射支持