Поделиться через


Получение данных с помощью Fluent Bit

Fluent Bit — это агент с открытым исходным кодом, который собирает журналы, метрики и трассировки из различных источников. Он позволяет фильтровать, изменять и агрегировать данные событий перед отправкой в хранилище. Azure Data Explorer — это быстрая и высокомасштабируемая служба для изучения данных журналов и телеметрии. В этой статье описано, как использовать Fluent Bit для отправки данных в базу данных KQL.

В этой статье вы узнаете, как выполнять следующие задачи.

Необходимые компоненты

Создание таблицы для хранения журналов

Fluent Bit перенаправит журналы в формате JSON с тремя свойствами: log (динамическая), tag (строка) и timestamp (datetime).

Вы можете создать таблицу со столбцами для каждого из этих свойств. Кроме того, если у вас есть структурированные журналы, можно создать таблицу со свойствами журнала, сопоставленными с настраиваемыми столбцами. Чтобы узнать больше, выберите соответствующую вкладку.

Чтобы создать таблицу для входящих журналов из Fluent Bit, выполните приведенные ниже действия.

  1. Перейдите в среду запроса.

  2. Выберите базу данных, в которой вы хотите создать таблицу.

  3. Выполните следующую .create table команду:

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

    Входящие свойства JSON автоматически сопоставляются с правильным столбцом.

Регистрация приложения Microsoft Entra с разрешениями на прием данных

Субъект-служба Microsoft Entra можно создать с помощью портал Azure или программы, как показано в следующем примере.

Этот субъект-служба — это удостоверение, используемое соединителем для записи данных таблицы в Kusto. Позже вы предоставьте этому субъекту-службе разрешения для доступа к ресурсам Kusto.

  1. Войдите в подписку Azure с помощью Azure CLI. Затем авторизуйтесь в браузере.

    az login
    
  2. Выберите подписку для размещения субъекта. Этот шаг необходим, если у вас несколько подписок.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Создайте субъект-службу. В этом примере принципал службы называется my-service-principal.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. Из возвращаемых данных JSON скопируйте appIdpasswordданные и tenant для дальнейшего использования.

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

Вы создали приложение Microsoft Entra и субъект-службу.

Предоставление разрешений субъекту-службе

Выполните следующую команду, заменив <MyDatabase> имя базы данных:

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

Эта команда предоставляет приложению разрешения на прием данных в таблицу. Дополнительные сведения см. в разделе "Управление доступом на основе ролей".

Настройка Fluent Bit для отправки журналов в таблицу

Чтобы настроить Fluent Bit для отправки журналов в таблицу Azure Data Explorer, создайте классический режим или файл конфигурации режима YAML со следующими выходными свойствами:

Поле Описание:
Имя. azure_kusto
Поиск совпадений (Match) Шаблон, соответствующий тегам входящих записей. Он учитывает регистр и поддерживает символ звезды (*) в качестве подстановочного знака.
Tenant_Id Идентификатор каталога (клиента) из регистрации приложения Microsoft Entra с разрешениями на прием данных.
Client_Id Идентификатор приложения (клиента) из регистрации приложения Microsoft Entra с разрешениями на прием данных.
Client_Secret Значение ключа секрета клиента регистрирует приложение Microsoft Entra с разрешениями на прием данных.
Ingestion_Endpoint Используйте URI приема, найденный на странице сведений о базе данных KQL. Дополнительные сведения см. в разделе URI копирования.
Database_Name Имя базы данных, содержащей таблицу журналов.
Имя_таблицы Имя таблицы из создания таблицы для хранения журналов.
Ingestion_Mapping_Reference Имя сопоставления приема из таблицы. Если вы не создали сопоставление приема, удалите свойство из файла конфигурации.

Чтобы просмотреть пример файла конфигурации, выберите соответствующую вкладку:

[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

Убедитесь, что данные приземлились в таблице

После завершения настройки журналы должны поступать в таблицу.

  1. Чтобы проверить прием журналов, выполните следующий запрос:

    FluentBitLogs
    | count
    
  2. Чтобы просмотреть пример данных журнала, выполните следующий запрос:

    FluentBitLogs
    | take 100