Прием данных с помощью 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.
Войдите в подписку Azure с помощью Azure CLI. Затем авторизуйтесь в браузере.
az login
Выберите подписку для размещения субъекта. Этот шаг необходим, если у вас несколько подписок.
az account set --subscription YOUR_SUBSCRIPTION_GUID
Создайте субъект-службу. В этом примере принципал службы называется
my-service-principal
.az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
Из возвращаемых данных JSON скопируйте
appId
password
данные и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, выполните приведенные ниже действия.
Перейдите в среду запроса.
Выберите базу данных, в которой вы хотите создать таблицу.
Выполните следующую
.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>
Подтверждение приема данных
После поступления данных в таблицу подтвердите передачу данных, проверив количество строк:
FluentBitLogs | count
Чтобы просмотреть пример данных журнала, выполните следующий запрос:
FluentBitLogs | take 100
Связанный контент
- Обзор интеграции данных
- Язык запросов Kusto (KQL) Обзор
- Написание запросов