Прием данных журнала в Azure Data Explorer с помощью Fluentd

Прием журналов — это процесс сбора, преобразования и подготовки данных журнала из приложений, серверов, контейнеров и облачных служб, чтобы вы могли хранить, анализировать и отслеживать их. Журналы собирают такие сведения, как ошибки, предупреждения, шаблоны использования и производительность системы. Надежный прием журналов гарантирует, что операционные и данные безопасности доступны практически в режиме реального времени для устранения неполадок и анализа. В этой статье объясняется, как отправлять журналы из Fluentd в Azure Data Explorer (Kusto), включая инструкции по установке, настройке и проверке.

Обзор

Что такое Fluentd?

Fluentd — это сборщик данных с открытым кодом, который можно использовать для объединения сбора журналов и маршрутизации между несколькими системами. Он поддерживает более 1000 подключаемых модулей и предоставляет гибкие возможности фильтрации, буферизации и преобразования данных. Вы можете использовать Fluentd в облачных и корпоративных средах для централизованной агрегации и пересылки журналов.

Что такое Azure Data Explorer?

Azure Data Explorer (ADX) — это быстрая, полностью управляемая служба аналитики, оптимизированная для анализа больших объемов структурированных, полуструктурированных и неструктурированных данных. ADX использует язык запросов Kusto (KQL) и широко используется для телеметрии, мониторинга, диагностики и интерактивного изучения данных.

Предпосылки

  • Ruby установлен на узле, куда необходимо принимать лог-файлы. Чтобы установить зависимости Fluentd с помощью менеджера пакетов gem, см. инструкции по установке Ruby.
  • Доступ к кластеру и базе данных Azure Data Explorer.
  • Приложение Azure Active Directory с разрешениями на прием данных.

Начало работы с Fluentd и Azure Data Explorer

  1. Установите Fluentd с помощью RubyGems:

    gem install fluentd
    
  2. Установите плагин Fluentd Kusto:

    gem install fluent-plugin-kusto
    
  3. Настройте Fluentd , создав файл конфигурации (например, fluent.conf) со следующим содержимым. Замените заполнители значениями Azure и значениями плагина.

    <match <tag-from-source-logs>>
      @type kusto
      endpoint https://<your-cluster>.<region>.kusto.windows.net
      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 Data Explorer".

    2. Создайте приложение Azure Active Directory и предоставьте разрешения для приема данных в базу данных ADX. См . статью "Создание регистрации приложения Microsoft Entra" в Azure Data Explorer.

      Замечание

      Сохраните ключ приложения и идентификатор приложения для дальнейшего использования.

    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-колоночного формата по умолчанию в нужную вам схему. Чтобы узнать больше, см. Поддержка сопоставлений приёма данных.