Получение данных с помощью Fluent Bit
Fluent Bit — это агент с открытым исходным кодом, который собирает журналы, метрики и трассировки из различных источников. Он позволяет фильтровать, изменять и агрегировать данные событий перед отправкой в хранилище. Azure Data Explorer — это быстрая и высокомасштабируемая служба для изучения данных журналов и телеметрии. В этой статье описано, как использовать Fluent Bit для отправки данных в базу данных KQL.
В этой статье вы узнаете, как выполнять следующие задачи.
Необходимые компоненты
- Fluent Bit.
- Рабочая область с емкостью с поддержкой Microsoft Fabric
- База данных KQL с разрешениями приема
- Набор запросов KQL, который будет называться позже вашей средой запроса.
Создание таблицы для хранения журналов
Fluent Bit перенаправит журналы в формате JSON с тремя свойствами: log
(динамическая), tag
(строка) и timestamp
(datetime).
Вы можете создать таблицу со столбцами для каждого из этих свойств. Кроме того, если у вас есть структурированные журналы, можно создать таблицу со свойствами журнала, сопоставленными с настраиваемыми столбцами. Чтобы узнать больше, выберите соответствующую вкладку.
Чтобы создать таблицу для входящих журналов из Fluent Bit, выполните приведенные ниже действия.
Перейдите в среду запроса.
Выберите базу данных, в которой вы хотите создать таблицу.
Выполните следующую
.create table
команду:.create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
Входящие свойства JSON автоматически сопоставляются с правильным столбцом.
Регистрация приложения 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 и субъект-службу.
Предоставление разрешений субъекту-службе
Выполните следующую команду, заменив <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
Убедитесь, что данные приземлились в таблице
После завершения настройки журналы должны поступать в таблицу.
Чтобы проверить прием журналов, выполните следующий запрос:
FluentBitLogs | count
Чтобы просмотреть пример данных журнала, выполните следующий запрос:
FluentBitLogs | take 100