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


Прием данных с помощью Fluent Bit в Azure Data Explorer

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

В этой статье описывается, как загружать данные с помощью Fluent Bit.

Полный список соединителей данных см. в обзоре соединителей данных.

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

  • Fluent Bit.
  • Кластер и база данных Azure Data Explorer. Создайте кластер и базу данных.
  • Среда запроса. Для получения дополнительной информации см. обзор интеграции запросов .
  • URI кластера Kusto для параметра Ingestion_endpoint в формате https://ingest-<cluster>.<region>.kusto.windows.net. Дополнительные сведения см. в разделе Подключение к кластеру.

Создание представителя службы 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 и субъект-службу.

Создать целевую таблицу

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разрешениями роли ingestor для работы с базой данных. Дополнительные сведения см. в примерах . Замените заполнитель DatabaseName именем целевой базы данных, а ApplicationID значением AppId, сохраненным при создании учетной записи службы Microsoft Entra.

.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>;<TenantID>')

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

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

Поле Описание: Обязательно По умолчанию
Имя. Имя конвейера. azure_kusto
идентификатор арендатора Идентификатор арендатора из Создание субъекта-службы Microsoft Entra. ✔️
идентификатор_клиента Идентификатор приложения из Создание учетной записи службы Microsoft Entra. ✔️
client_secret Значение ключа секрета клиента (пароль) из создание субъекта-службы Microsoft Entra. ✔️
конечная точка приема данных Введите значение, как указано для Ingestion_Endpoint. ✔️
имя_базы_данных Имя базы данных, содержащей таблицу журналов. ✔️
table_name Имя таблицы из Создание целевой таблицы. ✔️
ссылка_на_схему_импорта Имя сопоставления приема из Создание целевой таблицы. Если вы не создали сопоставление приема, удалите свойство из файла конфигурации.
log_key Имя ключа содержимого журнала. Например, log. log
tag_key Ключевое название тега. Игнорируется, если include_tag_key имеет значение false. tag
include_time_key Метка времени добавляется к выходным данным, если он включен. Использует свойство time_key. true
ключ_времени Имя ключа метки времени в записях журнала. Игнорируется, если include_time_key false. timestamp
ingestion_endpoint_connect_timeout Время ожидания подключения различных конечных точек Kusto в секундах. 60s
сжатие_включено При включенной функции отправляет сжатые (gzip) HTTP-данные в Kusto. true
ingestion_resources_refresh_interval Интервал обновления ресурсов точки подключения Kusto в секундах. 3600
Работники Количество рабочих для выполнения операций очистки для этих выходных данных. 0

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

[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]
    match *
    name azure_kusto
    tenant_id <TenantId>
    client_id <ClientId>
    client_secret <AppSecret>
    ingestion_endpoint <IngestionEndpoint>
    database_name <DatabaseName>
    table_name <TableName>
    ingestion_mapping_reference <MappingName>
    ingestion_endpoint_connect_timeout <IngestionEndpointConnectTimeout>
    compression_enabled <CompressionEnabled>
    ingestion_resources_refresh_interval <IngestionResourcesRefreshInterval>

Подтверждение приема данных

  1. После поступления данных в таблицу подтвердите передачу данных, проверив количество строк:

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

    FluentBitLogs
    | take 100