Конвейер Azure Monitor — это конвейер приема данных, обеспечивающий согласованную и централизованную сбор данных для Azure Monitor.
Периферийный конвейер обеспечивает масштабируемую коллекцию и маршрутизацию данных телеметрии перед отправкой в облако. Он может кэшировать данные локально и синхронизироваться с облаком при восстановлении подключения и маршрутизации телеметрии в Azure Monitor в случаях, когда сеть сегментирована и данные не могут отправляться непосредственно в облако. В этой статье описывается, как включить и настроить конвейер на границе вашей среды.
Обзор
Конвейер Azure Monitor на периферии — это контейнерное решение, развернутое в кластере Kubernetes с поддержкой Arc и использующее коллектор OpenTelemetry в качестве основы. На следующей схеме показаны компоненты конвейера у края. Один или несколько потоков данных прослушивают входящие данные от клиентов, а расширение конвейера пересылает данные в облако, используя локальный кэш при необходимости.
Файл конфигурации конвейера определяет потоки данных и свойства кэша для конвейера на границе. DCR определяет схему данных, отправляемых в облачный конвейер, преобразование для фильтрации или изменения данных и назначения, в котором должны отправляться данные. Каждое определение потока данных для конфигурации конвейера указывает DCR и поток в этом DCR, который будет обрабатывать эти данные в облачном конвейере.
Замечание
Приватный канал поддерживается пограничным конвейером для подключения к облачному конвейеру.
Для включения пайплайна Azure Monitor на периферии требуются следующие компоненты и конфигурации. Если вы используете портал Azure для настройки конвейера на границе сети, то для вас создается каждый из этих компонентов. С другими методами необходимо настроить каждую из них.
Компонент |
Описание |
Расширение контроллера периферийного потока данных |
Добавлено расширение в ваш кластер Kubernetes с поддержкой Arc для обеспечения функциональности конвейера — microsoft.monitor.pipelinecontroller . |
Экземпляр контроллера граничного трубопровода |
Экземпляр периферийного конвейера, работающего на вашем кластере Kubernetes с поддержкой Arc. |
Поток данных |
Сочетание получателей и экспортеров, работающих на контроллере конвейера. Получатели принимают данные от клиентов и экспортеров для доставки данных в Azure Monitor. |
Конфигурация конвейера |
Файл конфигурации, определяющий потоки данных для экземпляра конвейера. Каждый поток данных включает приемника и экспортера. Получатель прослушивает входящие данные, а экспортер отправляет данные в место назначения. |
Конечная точка сбора данных (DCE) |
Конечная точка, в которой данные отправляются в конвейер Azure Monitor. Конфигурация конвейера содержит свойство для URL-адреса DCE, чтобы экземпляр конвейера знал, куда отправлять данные. |
Конфигурация |
Описание |
Правило сбора данных (DCR) |
Файл конфигурации, определяющий способ получения данных в облачном конвейере и место его отправки. DCR также может включать преобразование для фильтрации или изменения данных перед отправкой в место назначения. |
Конфигурация конвейера |
Конфигурация, определяющая потоки данных для экземпляра конвейера, включая потоки данных и кэш. |
Поддерживаемые конфигурации
Поддерживаемые дистрибутивы
Конвейер Azure Monitor на периферии поддерживается в следующих дистрибутивах Kubernetes:
- Канонический
- Поставщик API кластеров для Azure
- K3
- Подсистема Rancher Kubernetes
- Сетка VMware Tanzu Kubernetes
Поддерживаемые локации
Конвейер Azure Monitor на периферии поддерживается в следующих регионах Azure:
- Центральная Канада
- Восток США2
- Италия Север
- Западная часть США2
- Западная Европа
Дополнительные сведения см. в разделе "Доступность продуктов по регионам"
Предпосылки
Рабочий процесс
Вам не требуется подробное представление о различных шагах, выполняемых конвейером Azure Monitor, чтобы настроить его с помощью портал Azure. Возможно, вам потребуется более подробное представление об этом, если вы используете другой метод установки или если необходимо выполнить более расширенную конфигурацию, например, преобразование данных перед их хранением в месте назначения.
В следующих таблицах и схемах описаны подробные шаги и компоненты процесса сбора данных с помощью конвейера на границе и передачи его в облачный конвейер для хранения в Azure Monitor. Кроме того, в таблицах используется конфигурация, необходимая для каждого из этих компонентов.
Этап |
Действие |
Поддержка конфигурации |
1. |
Клиент отправляет данные в приемник периферийного конвейера. |
Клиент настраивается с IP-адресом и портом приемного устройства на краю сети и отправляет данные в требуемом формате для данного типа приемника. |
2. |
Получатель перенаправит данные экспортеру. |
Получатель и экспортер настроены в одном конвейере. |
3 |
Экспортер пытается отправить данные в облачный конвейер. |
Экспортер в конфигурации конвейера содержит URL-адрес DCE, уникальный идентификатор DCR и поток в DCR, определяющий способ обработки данных. |
3a. |
Экспортер сохраняет данные в локальном кэше, если он не может подключиться к DCE. |
Постоянный том для кэша и конфигурации локального кэша включен в настройках конвейера. |
Этап |
Действие |
Поддержка конфигурации |
4 |
Облачный конвейер принимает входящие данные. |
DCR содержит определение схемы для входящего потока, которая должна соответствовать схеме данных, поступающих из конвейерной системы на краю сети. |
5 |
Облачный конвейер применяет преобразование к данным. |
DCR включает преобразование, которое фильтрует или изменяет данные перед отправкой в место назначения. Преобразование может фильтровать данные, удалять или добавлять столбцы или полностью изменять ее схему. Выходные данные преобразования должны соответствовать схеме целевой таблицы. |
6. |
Облачный конвейер отправляет данные в место назначения. |
DCR включает назначение, указывающее рабочую область Log Analytics и таблицу, в которой будут храниться данные. |
Сегментированная сеть
Сегментация сети — это модель, в которой используются программные периметры для создания другой системы безопасности для разных частей сети. В этой модели может быть сегмент сети, который не может подключаться к Интернету или к другим сегментам сети. Конвейер на пограничном уровне можно использовать для сбора данных из этих сетевых сегментов и отправки его в облачный конвейер.
Чтобы использовать конвейер Azure Monitor в многоуровневой конфигурации сети, необходимо добавить следующие записи в список разрешений для кластера Kubernetes с поддержкой Arc. См. статью "Настройка предварительной версии управления сетями с уровнем Интернета вещей Azure" на уровне 4 кластера.
- destinationUrl: "*.ingest.monitor.azure.com"
destinationType: external
- destinationUrl: "login.windows.net"
destinationType: external
Создание таблицы в рабочей области Log Analytics
Перед настройкой процесса сбора данных для конвейера на границе необходимо создать таблицу в рабочей области Log Analytics для получения данных. Это должна быть настраиваемая таблица, так как встроенные таблицы в настоящее время не поддерживаются. Схема таблицы должна соответствовать получаемым данным, но в процессе сбора существует несколько шагов, в которых можно изменить входящие данные, поэтому схема таблицы не должна совпадать с исходными данными, которые вы собираете. Единственным требованием для таблицы в рабочей области Log Analytics является наличие столбца TimeGenerated
.
См. Добавление или удаление таблиц и столбцов в журналах Azure Monitor для получения подробной информации о различных методах создания таблицы. Например, используйте приведенную ниже команду CLI, чтобы создать таблицу с тремя столбцами, называемыми Body
, TimeGenerated
и SeverityText
.
az monitor log-analytics workspace table create --workspace-name my-workspace --resource-group my-resource-group --name my-table_CL --columns TimeGenerated=datetime Body=string SeverityText=string
Включение кэша
Устройства на периферии в некоторых средах могут испытывать периодические проблемы с подключением из-за различных факторов, таких как перегрузка сети, помехи сигналов, отключение питания или мобильность. В этих средах при настройке конвейера на уровне периферии можно кэшировать данные, создав постоянный том в кластере. Процесс для этого зависит от конкретной среды, но конфигурация должна соответствовать следующим требованиям:
- Пространство имен метаданных должно совпадать с указанным экземпляром конвейера Azure Monitor.
- Режим доступа должен поддерживать
ReadWriteMany
.
После создания тома в соответствующем пространстве имен настройте его с помощью параметров в файле конфигурации конвейера ниже.
Осторожность
Каждая реплика пограничного конвейера хранит данные в конкретном местоположении в постоянном томе, специфическом для этой реплики. Уменьшение количества реплик при отключении кластера от облака приведет к тому, что данные не будут восполнены при восстановлении подключения.
Данные извлекаются из кэша по принципу первым поступил — первым вышел (FIFO). Все данные старше 48 часов будут удалены.
Текущие параметры включения и настройки подробно описаны на вкладках ниже.
При использовании портал Azure для включения и настройки конвейера создаются все необходимые компоненты на основе выбранных элементов. Это экономит вас от сложности создания каждого компонента по отдельности, но вам потребуется использовать другие методы.
Выполните одно из следующих действий в портале Azure, чтобы запустить процесс установки конвейера Azure Monitor:
-
В меню конвейеров Azure Monitor (предварительная версия) нажмите кнопку "Создать".
- В меню для кластера Kubernetes с поддержкой Arc выберите расширения и добавьте расширение конвейера Azure Monitor (предварительная версия).
Во вкладке "Базовый" будет запрошена следующая информация для развертывания экземпляров расширения и конвейера в вашем кластере.
Параметры на этой вкладке описаны в следующей таблице.
Недвижимость |
Описание |
Имя экземпляра |
Имя экземпляра конвейера Azure Monitor. Должен быть уникальным для подписки. |
Подписка |
Подписка Azure для создания экземпляра конвейера. |
Группа ресурсов |
Группа ресурсов для создания экземпляра конвейера. |
Имя кластера |
Выберите кластер Kubernetes с поддержкой Arc, на котором будет установлен конвейер. |
Настраиваемое местоположение |
Настраиваемое местоположение для вашего кластера Kubernetes с поддержкой Arc. Это будет автоматически заполнено именем настраиваемого расположения, которое будет создано для кластера или вы можете выбрать другое пользовательское расположение в кластере. |
Вкладка "Поток данных" позволяет создавать и изменять потоки данных для экземпляра конвейера. Каждый поток данных содержит следующие сведения:
Параметры на этой вкладке описаны в следующей таблице.
Недвижимость |
Описание |
Имя |
Имя потока данных. Должен быть уникальным для этого конвейера. |
Тип источника |
Тип собираемых данных. В настоящее время поддерживаются следующие типы источников: — Системный журнал — OTLP |
Порт |
Порт, который конвейер прослушивает входящие данные. Если два потока данных используют один и тот же порт, они получают и обрабатывают данные. |
Рабочая область Log Analytics |
Рабочая область Log Analytics, в которую отправляются данные. |
Имя таблицы |
Имя таблицы в рабочей области Log Analytics для отправки данных. |
Ниже приведены действия, необходимые для создания и настройки компонентов, необходимых для конвейера Azure Monitor на границе с помощью Azure CLI.
Расширение пограничного конвейера
Следующая команда добавляет расширение edge pipeline в кластер Kubernetes, поддерживающий Arc.
az k8s-extension create --name <pipeline-extension-name> --extension-type microsoft.monitor.pipelinecontroller --scope cluster --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --release-train Preview
## Example
az k8s-extension create --name my-pipe --extension-type microsoft.monitor.pipelinecontroller --scope cluster --cluster-name my-cluster --resource-group my-resource-group --cluster-type connectedClusters --release-train Preview
Настраиваемое местоположение
Шаблон ARM, представленный ниже, создает пользовательское расположение для вашего кластера Kubernetes с поддержкой Arc.
az customlocation create --name <custom-location-name> --resource-group <resource-group-name> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionId>
## Example
az customlocation create --name my-cluster-custom-location --resource-group my-resource-group --namespace my-cluster-custom-location --host-resource-id /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/connectedClusters/my-cluster --cluster-extension-ids /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/connectedClusters/my-cluster/providers/Microsoft.KubernetesConfiguration/extensions/my-cluster
DCE
Следующий шаблон ARM создает конечную точку сбора данных (DCE), необходимую для конвейера на границе для подключения к облачному конвейеру. Вы можете использовать существующий DCE, если у вас уже есть один в одном регионе. Замените свойства в следующей таблице перед развертыванием шаблона.
az monitor data-collection endpoint create -g "myResourceGroup" -l "eastus2euap" --name "myCollectionEndpoint" --public-network-access "Enabled"
## Example
az monitor data-collection endpoint create --name strato-06-dce --resource-group strato --public-network-access "Enabled"
ДКР
DCR хранится в Azure Monitor и определяет способ обработки данных при получении их из канала на периметре. Трубопровод в конфигурации на границе указывает immutable ID
DCR и stream
в DCR, которые будут обрабатывать данные. Элемент immutable ID
автоматически создается при создании DCR.
Замените свойства в следующем шаблоне и сохраните их в json-файле перед выполнением команды CLI для создания DCR. См. раздел "Структура правила сбора данных в Azure Monitor" для получения подробной информации о структуре DCR.
Параметр |
Описание |
name |
Название DCR. Должен быть уникальным для подписки. |
location |
Расположение DCR. Должен соответствовать местоположению DCE. |
dataCollectionEndpointId |
Идентификатор ресурса DCE. |
streamDeclarations |
Схема полученных данных. Для каждого потока данных в конфигурации конвейера требуется один поток. Имя должно быть уникальным в DCR и должно начинаться с custom-. Разделы column в приведенных ниже примерах следует использовать для потоков данных OLTP и Syslog. Если схема целевой таблицы отличается, ее можно изменить с помощью преобразования, определенного в параметре transformKql . |
destinations |
Добавьте дополнительный раздел для отправки данных в несколько рабочих областей. |
- name |
Имя пункта назначения для использования в разделе dataFlows . Должен быть уникальным для DCR. |
- workspaceResourceId |
Идентификатор ресурса рабочей области Log Analytics. |
- workspaceId |
Идентификатор рабочей области Log Analytics. |
dataFlows |
Сопоставляет потоки и назначения. Одна запись для каждой комбинации потока и назначения. |
- streams |
Один или несколько потоков (определенных в streamDeclarations ). Можно включить несколько потоков, если они отправляются в одно и то же место назначения. |
- destinations |
Одно или несколько мест назначения (определённых в destinations ). Можно включить нескольких адресатов, если они отправляются в одно и то же место. |
- transformKql |
Преобразование, применяемое к данным перед отправкой в место назначения. Используйте source для отправки данных без каких-либо изменений. Выходные данные преобразования должны соответствовать схеме целевой таблицы. См. Преобразования сбора данных в Azure Monitor для получения дополнительных сведений о преобразованиях. |
- outputStream |
Указывает целевую таблицу в рабочей области Log Analytics. Таблица уже должна существовать в рабочей области. Для пользовательских таблиц добавьте к имени таблицы префикс Custom-. Встроенные таблицы в настоящее время не поддерживаются конвейером обработки данных на границе. |
{
"properties": {
"dataCollectionEndpointId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.Insights/dataCollectionEndpoints/my-dce",
"streamDeclarations": {
"Custom-OTLP": {
"columns": [
{
"name": "Body",
"type": "string"
},
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "SeverityText",
"type": "string"
}
]
},
"Custom-Syslog": {
"columns": [
{
"name": "Body",
"type": "string"
},
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "SeverityText",
"type": "string"
}
]
}
},
"dataSources": {},
"destinations": {
"logAnalytics": [
{
"name": "LogAnayticsWorkspace01",
"workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
}
]
},
"dataFlows": [
{
"streams": [
"Custom-OTLP"
],
"destinations": [
"LogAnayticsWorkspace01"
],
"transformKql": "source",
"outputStream": "Custom-OTelLogs_CL"
},
{
"streams": [
"Custom-Syslog"
],
"destinations": [
"LogAnayticsWorkspace01"
],
"transformKql": "source",
"outputStream": "Custom-Syslog_CL"
}
]
}
}
Установите DCR с помощью следующей команды:
az monitor data-collection rule create --name 'myDCRName' --location <location> --resource-group <resource-group> --rule-file '<dcr-file-path.json>'
## Example
az monitor data-collection rule create --name my-pipeline-dcr --location westus2 --resource-group 'my-resource-group' --rule-file 'C:\MyDCR.json'
Доступ к DCR
Кластер Kubernetes с поддержкой Arc должен иметь доступ к DCR для отправки данных в облачный конвейер. Чтобы получить идентификатор объекта системы назначенной идентичности для вашего кластера, используйте следующую команду.
az k8s-extension show --name <extension-name> --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --query "identity.principalId" -o tsv
## Example:
az k8s-extension show --name my-pipeline-extension --cluster-name my-cluster --resource-group my-resource-group --cluster-type connectedClusters --query "identity.principalId" -o tsv
Используйте выходные данные этой команды в качестве входных данных для следующей команды, чтобы предоставить конвейеру Azure Monitor полномочия для отправки телеметрии в DCR.
az role assignment create --assignee "<extension principal ID>" --role "Monitoring Metrics Publisher" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Insights/dataCollectionRules/<dcr-name>"
## Example:
az role assignment create --assignee "00000000-0000-0000-0000-000000000000" --role "Monitoring Metrics Publisher" --scope "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.Insights/dataCollectionRules/my-dcr"
Конфигурация конвейера Edge
Конфигурация пограничного конвейера определяет сведения о конвейере в пограничном экземпляре и развертывает потоки данных, необходимые для получения и отправки телеметрии в облако.
Замените свойства в следующей таблице перед развертыванием шаблона.
Недвижимость |
Описание |
Общие сведения |
|
name |
Имя экземпляра конвейера. Должен быть уникальным в подписке. |
location |
Расположение экземпляра конвейера. |
extendedLocation |
|
Приемники |
Одна запись для каждого получателя. Каждая запись указывает тип полученных данных, порт, который будет прослушиваться, и уникальное имя, которое будет использоваться в pipelines разделе конфигурации. |
type |
Тип полученных данных. Текущие параметры: OTLP и Syslog . |
name |
Имя получателя, упомянутое в разделе service . Должен быть уникальным для экземпляра конвейера. |
endpoint |
Адрес и порт, на которых работает приемник. Используйте 0.0.0.0 для всех адресов. |
Процессоры |
Зарезервировано для дальнейшего использования. |
Экспортёры |
Одна запись для каждого пункта назначения. |
type |
Поддерживается только текущий тип AzureMonitorWorkspaceLogs . |
name |
Должен быть уникальным для экземпляра конвейера. Имя используется в pipelines разделе конфигурации. |
dataCollectionEndpointUrl |
URL-адрес DCE, куда конвейер на границе сети будет отправлять данные. Это можно найти в портал Azure, перейдя к DCE и скопировав значение приема журналов. |
dataCollectionRule |
Неизменяемый идентификатор DCR, определяющий коллекцию данных в облачном конвейере. В представлении JSON вашего DCR в портале Azure скопируйте значение поля неизменяемый идентификатор в разделе Общие. |
- stream |
Имя потока в DCR, которое будет принимать данные. |
- maxStorageUsage |
Емкость кэша. Когда достигается 80 % этой емкости, старые данные удаляются, чтобы освободить место для получения дополнительных данных. |
- retentionPeriod |
Период хранения в минутах. Данные удаляются после этого периода времени. |
- schema |
Схема данных, отправляемых в облачный конвейер. Это должно соответствовать схеме, определенной в потоке в DCR. Схема, используемая в примере, допустима как для системного журнала, так и для OTLP. |
Служба |
Одна запись для каждого экземпляра конвейера. Рекомендуется использовать только один экземпляр для каждого расширения конвейера. |
Конвейеры |
Одна запись для каждого потока данных. Каждая запись соответствует элементу receiver и элементу exporter . |
name |
Уникальное имя конвейера. |
receivers |
Один или несколько получателей, которые будут прослушивать получение данных. |
processors |
Зарезервировано для дальнейшего использования. |
exporters |
Один или несколько экспортеров для отправки данных в облачный конвейер. |
persistence |
Имя постоянного тома, используемого для кэша. Удалите этот параметр, если вы не хотите включить кэш. |
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"description": "This template deploys an edge pipeline for azure monitor."
},
"resources": [
{
"type": "Microsoft.monitor/pipelineGroups",
"location": "eastus",
"apiVersion": "2023-10-01-preview",
"name": "my-pipeline-group-name",
"extendedLocation": {
"name": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.ExtendedLocation/customLocations/my-custom-location",
"type": "CustomLocation"
},
"properties": {
"receivers": [
{
"type": "OTLP",
"name": "receiver-OTLP",
"otlp": {
"endpoint": "0.0.0.0:4317"
}
},
{
"type": "Syslog",
"name": "receiver-Syslog",
"syslog": {
"endpoint": "0.0.0.0:514"
}
}
],
"processors": [],
"exporters": [
{
"type": "AzureMonitorWorkspaceLogs",
"name": "exporter-log-analytics-workspace",
"azureMonitorWorkspaceLogs": {
"api": {
"dataCollectionEndpointUrl": "https://my-dce-4agr.eastus-1.ingest.monitor.azure.com",
"dataCollectionRule": "dcr-00000000000000000000000000000000",
"stream": "Custom-OTLP",
"schema": {
"recordMap": [
{
"from": "body",
"to": "Body"
},
{
"from": "severity_text",
"to": "SeverityText"
},
{
"from": "time_unix_nano",
"to": "TimeGenerated"
}
]
}
},
"cache": {
"maxStorageUsage": 10000,
"retentionPeriod": 60
}
}
}
],
"service": {
"pipelines": [
{
"name": "DefaultOTLPLogs",
"receivers": [
"receiver-OTLP"
],
"processors": [],
"exporters": [
"exporter-log-analytics-workspace"
],
"type": "logs"
},
{
"name": "DefaultSyslogs",
"receivers": [
"receiver-Syslog"
],
"processors": [],
"exporters": [
"exporter-log-analytics-workspace"
],
"type": "logs"
}
],
"persistence": {
"persistentVolumeName": "my-persistent-volume"
}
},
"networkingConfigurations": [
{
"externalNetworkingMode": "LoadBalancerOnly",
"routes": [
{
"receiver": "receiver-OTLP"
},
{
"receiver": "receiver-Syslog"
}
]
}
]
}
}
]
}
Установите шаблон с помощью следующей команды:
az deployment group create --resource-group <resource-group-name> --template-file <path-to-template>
## Example
az deployment group create --resource-group my-resource-group --template-file C:\MyPipelineConfig.json
Вы можете развернуть все необходимые компоненты для конвейера Azure Monitor на периферии с помощью одного шаблона ARM, показанного ниже. Измените файл параметров с определенными значениями для вашей среды. Каждый раздел шаблона описан ниже, включая разделы, которые необходимо изменить перед его использованием.
Компонент |
Тип |
Описание |
Рабочая область Log Analytics |
Microsoft.OperationalInsights/workspaces |
Удалите этот раздел, если вы используете существующую рабочую область Log Analytics. Единственным параметром является имя рабочей области. Неизменяемый идентификатор рабочей области, который необходим для других компонентов, будет автоматически создан. |
Конечная точка сбора данных (DCE) |
Microsoft.Insights/dataCollectionEndpoints |
Удалите этот раздел, если вы используете существующий DCE. Единственным обязательным параметром является имя DCE. URL-адрес приема журналов для DCE, который необходим для других компонентов, будет автоматически создан. |
Расширение пограничного конвейера |
Microsoft.KubernetesConfiguration/extensions |
Единственный требуемый параметр — это имя расширения конвейера. |
Настраиваемое местоположение |
Microsoft.ExtendedLocation/customLocations |
Настраиваемое расположение кластера Kubernetes с поддержкой Arc для создания пользовательских конфигураций. |
Экземпляр пограничного конвейера |
Microsoft.monitor/pipelineGroups |
Экземпляр периферийного конвейера, включающий конфигурацию прослушивателя, экспортеров и потоков данных. Перед развертыванием шаблона необходимо изменить свойства экземпляра конвейера. |
Правило сбора данных (DCR) |
Microsoft.Insights/dataCollectionRules |
Единственным параметром является имя DCR, но перед развертыванием шаблона необходимо изменить свойства DCR. |
Файл шаблона
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string"
},
"clusterId": {
"type": "string"
},
"clusterExtensionIds": {
"type": "array"
},
"customLocationName": {
"type": "string"
},
"cachePersistentVolume": {
"type": "string"
},
"cacheMaxStorageUsage": {
"type": "int"
},
"cacheRetentionPeriod": {
"type": "int"
},
"dceName": {
"type": "string"
},
"dcrName": {
"type": "string"
},
"logAnalyticsWorkspaceName": {
"type": "string"
},
"pipelineExtensionName": {
"type": "string"
},
"pipelineGroupName": {
"type": "string"
},
"tagsByResource": {
"type": "object",
"defaultValue": {}
}
},
"resources": [
{
"type": "Microsoft.OperationalInsights/workspaces",
"name": "[parameters('logAnalyticsWorkspaceName')]",
"location": "[parameters('location')]",
"apiVersion": "2017-03-15-preview",
"tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.OperationalInsights/workspaces'), parameters('tagsByResource')['Microsoft.OperationalInsights/workspaces'], json('{}')) ]",
"properties": {
"sku": {
"name": "pergb2018"
}
}
},
{
"type": "Microsoft.Insights/dataCollectionEndpoints",
"name": "[parameters('dceName')]",
"location": "[parameters('location')]",
"apiVersion": "2021-04-01",
"tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Insights/dataCollectionEndpoints'), parameters('tagsByResource')['Microsoft.Insights/dataCollectionEndpoints'], json('{}')) ]",
"properties": {
"configurationAccess": {},
"logsIngestion": {},
"networkAcls": {
"publicNetworkAccess": "Enabled"
}
}
},
{
"type": "Microsoft.Insights/dataCollectionRules",
"name": "[parameters('dcrName')]",
"location": "[parameters('location')]",
"apiVersion": "2021-09-01-preview",
"dependsOn": [
"[resourceId('Microsoft.OperationalInsights/workspaces', 'DefaultWorkspace-westus2')]",
"[resourceId('Microsoft.Insights/dataCollectionEndpoints', 'Aep-mytestpl-ZZPXiU05tJ')]"
],
"tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Insights/dataCollectionRules'), parameters('tagsByResource')['Microsoft.Insights/dataCollectionRules'], json('{}')) ]",
"properties": {
"dataCollectionEndpointId": "[resourceId('Microsoft.Insights/dataCollectionEndpoints', 'Aep-mytestpl-ZZPXiU05tJ')]",
"streamDeclarations": {
"Custom-OTLP": {
"columns": [
{
"name": "Body",
"type": "string"
},
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "SeverityText",
"type": "string"
}
]
},
"Custom-Syslog": {
"columns": [
{
"name": "Body",
"type": "string"
},
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "SeverityText",
"type": "string"
}
]
}
},
"dataSources": {},
"destinations": {
"logAnalytics": [
{
"name": "DefaultWorkspace-westus2",
"workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces', 'DefaultWorkspace-westus2')]",
"workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces', 'DefaultWorkspace-westus2'))].customerId"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-OTLP"
],
"destinations": [
"localDest-DefaultWorkspace-westus2"
],
"transformKql": "source",
"outputStream": "Custom-OTelLogs_CL"
},
{
"streams": [
"Custom-Syslog"
],
"destinations": [
"DefaultWorkspace-westus2"
],
"transformKql": "source",
"outputStream": "Custom-Syslog_CL"
}
]
}
},
{
"type": "Microsoft.KubernetesConfiguration/extensions",
"apiVersion": "2022-11-01",
"name": "[parameters('pipelineExtensionName')]",
"scope": "[parameters('clusterId')]",
"tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.KubernetesConfiguration/extensions'), parameters('tagsByResource')['Microsoft.KubernetesConfiguration/extensions'], json('{}')) ]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"aksAssignedIdentity": {
"type": "SystemAssigned"
},
"autoUpgradeMinorVersion": false,
"extensionType": "microsoft.monitor.pipelinecontroller",
"releaseTrain": "preview",
"scope": {
"cluster": {
"releaseNamespace": "my-strato-ns"
}
},
"version": "0.37.3-privatepreview"
}
},
{
"type": "Microsoft.ExtendedLocation/customLocations",
"apiVersion": "2021-08-15",
"name": "[parameters('customLocationName')]",
"location": "[parameters('location')]",
"tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.ExtendedLocation/customLocations'), parameters('tagsByResource')['Microsoft.ExtendedLocation/customLocations'], json('{}')) ]",
"dependsOn": [
"[parameters('pipelineExtensionName')]"
],
"properties": {
"hostResourceId": "[parameters('clusterId')]",
"namespace": "[toLower(parameters('customLocationName'))]",
"clusterExtensionIds": "[parameters('clusterExtensionIds')]",
"hostType": "Kubernetes"
}
},
{
"type": "Microsoft.monitor/pipelineGroups",
"location": "[parameters('location')]",
"apiVersion": "2023-10-01-preview",
"name": "[parameters('pipelineGroupName')]",
"tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.monitor/pipelineGroups'), parameters('tagsByResource')['Microsoft.monitor/pipelineGroups'], json('{}')) ]",
"dependsOn": [
"[parameters('customLocationName')]",
"[resourceId('Microsoft.Insights/dataCollectionRules','Aep-mytestpl-ZZPXiU05tJ')]"
],
"extendedLocation": {
"name": "[resourceId('Microsoft.ExtendedLocation/customLocations', parameters('customLocationName'))]",
"type": "CustomLocation"
},
"properties": {
"receivers": [
{
"type": "OTLP",
"name": "receiver-OTLP-4317",
"otlp": {
"endpoint": "0.0.0.0:4317"
}
},
{
"type": "Syslog",
"name": "receiver-Syslog-514",
"syslog": {
"endpoint": "0.0.0.0:514"
}
}
],
"processors": [],
"exporters": [
{
"type": "AzureMonitorWorkspaceLogs",
"name": "exporter-lu7mbr90",
"azureMonitorWorkspaceLogs": {
"api": {
"dataCollectionEndpointUrl": "[reference(resourceId('Microsoft.Insights/dataCollectionEndpoints','Aep-mytestpl-ZZPXiU05tJ')).logsIngestion.endpoint]",
"stream": "Custom-DefaultAEPOTelLogs_CL-FqXSu6GfRF",
"dataCollectionRule": "[reference(resourceId('Microsoft.Insights/dataCollectionRules', 'Aep-mytestpl-ZZPXiU05tJ')).immutableId]",
"cache": {
"maxStorageUsage": "[parameters('cacheMaxStorageUsage')]",
"retentionPeriod": "[parameters('cacheRetentionPeriod')]"
},
"schema": {
"recordMap": [
{
"from": "body",
"to": "Body"
},
{
"from": "severity_text",
"to": "SeverityText"
},
{
"from": "time_unix_nano",
"to": "TimeGenerated"
}
]
}
}
}
}
],
"service": {
"pipelines": [
{
"name": "DefaultOTLPLogs",
"receivers": [
"receiver-OTLP"
],
"processors": [],
"exporters": [
"exporter-lu7mbr90"
]
}
],
"persistence": {
"persistentVolume": "[parameters('cachePersistentVolume')]"
}
}
}
}
],
"outputs": {}
}
Файл параметров выборки
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"value": "eastus"
},
"clusterId": {
"value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/connectedClusters/my-arc-cluster"
},
"clusterExtensionIds": {
"value": ["/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/extensions/my-pipeline-extension"]
},
"customLocationName": {
"value": "my-custom-location"
},
"dceName": {
"value": "my-dce"
},
"dcrName": {
"value": "my-dcr"
},
"logAnalyticsWorkspaceName": {
"value": "my-workspace"
},
"pipelineExtensionName": {
"value": "my-pipeline-extension"
},
"pipelineGroupName": {
"value": "my-pipeline-group"
},
"tagsByResource": {
"value": {}
}
}
}
Проверка конфигурации
Проверьте выполнение компонентов конвейера в кластере
В портал Azure перейдите в меню служб Kubernetes и выберите кластер Kubernetes с поддержкой Arc. Выберите службы и входящий трафик и убедитесь, что вы увидите следующие службы:
-
<имя конвейера> — внешняя служба
-
<Служба имен> конвейера
Щелкните запись о <pipeline> имени external-service и запишите IP-адрес и порт в столбце Endpoints. Это внешний IP-адрес и порт, в который клиенты будут отправлять данные. Сведения о получении этого адреса от клиента см. в статье "Получение конечной точки входящего трафика".
Проверка пульса
Каждый конвейер, настроенный в вашем экземпляре конвейера, будет отправлять запись сигнала активности в таблицу Heartbeat
в рабочей области Log Analytics каждую минуту. Содержимое столбца OSMajorVersion
должно соответствовать имени экземпляра конвейера. Если в экземпляре конвейера есть несколько рабочих областей, будет использоваться первая настроенная.
Извлеките записи пульса с помощью запроса журнала, как показано в следующем примере:
Конфигурация клиента
После того, как периферийное расширение и экземпляр конвейера установлены, следует настроить клиенты для отправки данных в конвейер.
Получение конечной точки входа
Для каждого клиента требуется внешний IP-адрес службы конвейера Azure Monitor. Используйте следующую команду, чтобы получить этот IP-адрес:
kubectl get services -n <namespace where azure monitor pipeline was installed>
- Если приложение, создающее журналы, является внешним для кластера, скопируйте значение external-ip для службы < или > с типом балансировщика нагрузки.
- Если приложение находится в pod в кластере, скопируйте cluster-ip.
Замечание
Если для поля внешнего IP-адреса задано ожидание, необходимо настроить внешний IP-адрес для этого входящего трафика вручную в соответствии с конфигурацией кластера.
Клиент |
Описание |
Системный журнал |
Обновите клиенты Syslog, чтобы они отправляли данные в конечную точку канала и порт передачи данных Syslog. |
OTLP |
Граничный конвейер Azure Monitor предоставляет конечную точку OTLP на основе gRPC через порт 4317. Настройка вашей инструментальной платформы для отправки данных в эту конечную точку OTLP будет зависеть от используемой библиотеки инструментирования. Смотрите документацию по конечной точке OTLP или сборщику для OpenTelemetry. Метод переменной среды задокументирован в конфигурации экспортера OTLP. |
Проверка данных
Заключительным шагом является проверка получения данных в рабочей области Log Analytics. Эту проверку можно сделать, выполнив запрос в рабочей области Log Analytics, чтобы получить данные из таблицы.
Дальнейшие действия