Сбор и транспортировка метрик

Применимо к:IoT Edge 1.5 флажок IoT Edge 1.5

Внимание

IoT Edge 1.5 LTS — это поддерживаемый выпуск. IoT Edge 1.4 LTS достиг срока окончания службы 12 ноября 2024 года. Если вы используете более ранний выпуск, ознакомьтесь с Update IoT Edge.

Вы можете удаленно отслеживать парк IoT Edge с помощью Azure Monitor и встроенной интеграции метрик. Чтобы включить эту возможность на устройстве, добавьте модуль сборщика метрик в развертывание и настройте его для сбора и передачи метрик модуля в Azure Monitor.

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

Azure Monitor для IoT Edge(4:06)

Архитектура

Скриншот архитектуры мониторинга метрик с IoT Hub.

Примечание. Описание
1 Все модули должны выдавать метрики с помощью модели данных Prometheus. Хотя встроенные метрики обеспечивают широкую видимость рабочей нагрузки по умолчанию, пользовательские модули также могут выдавать метрики, относящиеся к сценариям, для улучшения решения мониторинга. Узнайте, как инструментировать пользовательские модули с помощью библиотек с открытым кодом в статье "Добавление пользовательских метрик ".
2️ Модуль сборщика метрик — это модуль, предоставленный корпорацией Майкрософт IoT Edge, который собирает метрики модуля рабочей нагрузки и переносит их вне устройства. Для сбора метрик используется пуллинговая модель. Можно настроить частоту сбора, конечные точки и фильтры для управления исходящими данными из модуля. Дополнительные сведения см. в разделе конфигурации сборщика метрик в этой статье.
3️ Отправлять метрики из модуля metrics-collector в облако можно двумя способами. Option 1 отправляет метрики в Log Analytics.1 Собранные метрики передаются в указанную рабочую область Log Analytics с помощью фиксированной, собственной таблицы с именем InsightsMetrics. Схема этой таблицы совместима с моделью данных метрик Prometheus.

Для этого варианта требуется доступ к рабочей области на исходящем порту 443. Идентификатор и ключ рабочей области Log Analytics должны быть указаны в рамках конфигурации модуля. Сведения о включении в ограниченных сетях см. в разделе "Включение в сценариях ограниченного доступа к сети " в этой статье.
4️ Каждая запись метрики содержит ResourceId, который вы указываете как часть конфигурации модуля. Эта связь автоматически связывает метрику с указанным ресурсом (например, IoT Hub). В результате курируемые шаблоны рабочих книг IoT Edge могут получать метрики, выдавая запросы к ресурсу.

Этот подход также позволяет нескольким центрам Интернета вещей безопасно совместно использовать одну рабочую область Log Analytics в качестве базы данных метрик.
5️ Option 2 отправляет метрики в IoT Hub.1 можно настроить модуль сборщика для отправки собранных метрик в кодировке UTF-8 в формате JSON как сообщения от устройства к облаку через модуль edgeHub. Этот параметр разблокирует мониторинг заблокированных IoT Edge устройств, которым разрешен внешний доступ только к конечной точке IoT Hub. Он также позволяет отслеживать дочерние IoT Edge устройства в вложенной конфигурации, где дочерние устройства могут получать доступ только к родительскому устройству.
6️ Когда метрики направляются через IoT Hub, необходимо один раз настроить облачный рабочий процесс. Рабочий процесс обрабатывает сообщения, поступающие из модуля сборщика метрик, и отправляет их в рабочую область Log Analytics. Рабочий процесс позволяет использовать функции курированных визуализаций и оповещений даже для метрик, поступающих через этот альтернативный маршрут. Дополнительные сведения о настройке этого облачного рабочего процесса см. в разделе "Метрики маршрутов " в этой статье.

1 В настоящее время использование option 1 для прямой передачи метрик в Log Analytics с устройства IoT Edge является более простым путем, требующим минимальной настройки. Первый вариант предпочтителен, если для конкретного сценария не требуется подход option 2, чтобы устройство IoT Edge взаимодействовать только с IoT Hub.

Модуль сборщика метрик

Модуль сборщика метрик майкрософт можно добавить в развертывание IoT Edge для сбора метрик модуля и отправки их в Azure Monitor. Код модуля open source доступен в репозитории IoT Edge GitHub.

Модуль сборщика метрик предоставляется как образ контейнера Docker с несколькими арками, поддерживающий Linux X64, ARM32, ARM64 и Windows X64 (версия 1809). Он доступен в общедоступном реестре артефактов Майкрософт по адресу mcr.microsoft.com/azureiotedge-metrics-collector.

Настройка сборщика данных

Настройте сборщик метрик с помощью переменных среды. Минимально необходимо указать переменные, помеченные как обязательные в этой таблице.

Имя переменной среды Описание
ResourceId Идентификатор ресурса центра Интернета вещей, с которым взаимодействует устройство. Дополнительные сведения см. в разделе "Идентификатор ресурса".

Required

Значение по умолчанию: нет
UploadTarget Определяет, отправляются ли метрики непосредственно в Azure Monitor по протоколу HTTPS или IoT Hub в виде сообщений D2C. Дополнительные сведения см. в разделе "Отправка целевого объекта".

Возможные значения — AzureMonitor или IoTMessage.

Не требуется

Значение по умолчанию: AzureMonitor
LogAnalyticsWorkspaceId Идентификатор рабочей области Log Analytics.

Требуется только в том случае, если UploadTargetAzureMonitor

Значение по умолчанию: нет
LogAnalyticsSharedKey Ключ рабочей области Log Analytics.

Требуется только в том случае, если UploadTargetAzureMonitor

Значение по умолчанию: нет
ScrapeFrequencyInSecs Повторяющийся интервал времени в секундах для сбора и транспорта метрик.

Пример: 600.

Не требуется

Значение по умолчанию: 300
MetricsEndpointsCSV Список конечных точек, разделенных запятыми, для сбора данных для Prometheus. В этом списке должны быть все конечные точки модуля для сбора метрик.

Пример: http://edgeAgent:9600/metrics, http://edgeHub:9600/metrics, http://MetricsSpewer:9417/metrics

Не требуется

Значение по умолчанию: http://edgeHub:9600/metrics, http://edgeAgent:9600/metrics
AllowedMetrics Список метрик, которые необходимо собирать; все остальные метрики игнорируются. Установите пустую строку, чтобы отключить. Дополнительные сведения см. в разделе "Разрешить и блокировать списки".

Пример: metricToScrape{quantile=0.99}[endpoint=http://MetricsSpewer:9417/metrics]

Не требуется

Значение по умолчанию: пустой
BlockedMetrics Список метрик, которые нужно игнорировать. Переопределяет разрешенные метрики, поэтому метрика не сообщается, если она включена в оба списка. Дополнительные сведения см. в разделе "Разрешить и блокировать списки".

Пример: metricToIgnore{quantile=0.5}[endpoint=http://VeryNoisyModule:9001/metrics], docker_container_disk_write_bytes

Не требуется

Значение по умолчанию: пустой
CompressForUpload Определяет, следует ли использовать сжатие при отправке метрик. Применяется ко всем целевым объектам загрузки.

Пример: true

Не требуется

Значение по умолчанию: true
AzureDomain Указывает домен верхнего уровня Azure, используемый при приеме метрик непосредственно в Log Analytics.

Пример: azure.us

Не требуется

Значение по умолчанию: azure.com

ИД ресурса

Модуль сборщика метрик должен иметь идентификатор Azure Resource Manager Центра Интернета вещей, к которому принадлежит устройство IoT Edge. Введите этот идентификатор в качестве значения переменной среды ResourceID .

Идентификатор ресурса использует следующий формат: /subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Devices/IoTHubs/<iot hub name> Идентификатор ресурса можно найти на странице Properties центра Интернета вещей на портале Azure.

Screenshot показывает, как получить идентификатор ресурса из свойства IoT Hub.

Кроме того, для получения идентификатора можно использовать команду az resource show :

az resource show -g <resource group> -n <hub name> --resource-type "Microsoft.Devices/IoTHubs"

Цель загрузки

Параметр конфигурации UploadTarget определяет, отправляются ли метрики непосредственно в Azure Monitor или в IoT Hub.

Если вы настроили UploadTarget значение IoTMessage, модуль публикует метрики в виде сообщений Интернета вещей. Конечная точка /messages/modules/<metrics collector module name>/outputs/metricOutput выдает эти сообщения в формате JSON в кодировке UTF8. Например, если модуль сборщика метрик IoT Edge называется IoTEdgeMetricsCollector, конечная точка /messages/modules/IoTEdgeMetricsCollector/outputs/metricOutput. Используется следующий формат:

[{
    "TimeGeneratedUtc": "<time generated>",
    "Name": "<prometheus metric name>",
    "Value": <decimal value>,
    "Label": {
        "<label name>": "<label value>"
    }
}, {
    "TimeGeneratedUtc": "2020-07-28T20:00:43.2770247Z",
    "Name": "docker_container_disk_write_bytes",
    "Value": 0.0,
    "Label": {
        "name": "AzureMonitorForIotEdgeModule"
    }
}]

Списки разрешённых и заблокированных

Параметры конфигурации AllowedMetrics и BlockedMetrics принимают списки селекторов метрик, разделенные пробелами или запятыми. Метрика соответствует списку и включается или исключается, если она соответствует одной или нескольким метрикам в любом списке.

Для селекторов метрик используется формат, аналогичный подмножеству языка запросов PromQL.

metricToSelect{quantile=0.5,otherLabel=~Re[ge]*|x}[http://VeryNoisyModule:9001/metrics]

Селекторы метрик состоят из трех элементов:

Имя метрики (metricToSelect).

  • В именах метрик можно использовать подстановочные знаки (любые символы * ) и ? (любой один символ). Например, *CPU совпадает с maxCPU и minCPU, но не с CPUMaximum. ???CPU совпадает с maxCPU и minCPU, но не с maximumCPU.
  • Этот компонент является обязательным в селекторе метрик.

Селекторы на основе меток ({quantile=0.5,otherLabel=~Re[ge]*|x}).

  • Включите несколько значений метрик в фигурные скобки. Значения должны быть разделены запятыми.
  • Метрика сопоставляется, если по крайней мере все метки в селекторе присутствуют, а также совпадают.
  • Как и в PromQL, допускаются указанные ниже операторы сопоставления.
    • = Метки, точно равные указанной строке (с учетом регистра).
    • != Нахождение меток, которые точно не соответствуют заданной строке.
    • =~ Сопоставьте метки с заданным регулярным выражением. Пример: label=~CPU|Mem|[0-9]*
    • !~ Исключать метки, которые не соответствуют предоставленному регулярному выражению.
    • Регулярное выражение полностью привязано (Якорь ^ и $ автоматически добавляются в начало и конец каждого регулярного выражения)
    • Этот компонент является необязательным в селекторе метрик.

Селектор конечных точек ([http://VeryNoisyModule:9001/metrics]).

  • URL-адрес должен точно соответствовать URL-адресу, указанному в параметре MetricsEndpointsCSV.
  • Этот компонент является необязательным в селекторе метрик.

Метрика должна соответствовать всем частям конкретного селектора, чтобы быть выбрана. Он должен соответствовать имени и иметь все те же метки с соответствующими значениями и поступать из данной конечной точки. Например, mem{quantile=0.5,otherLabel=foobar}[http://VeryNoisyModule:9001/metrics] не соответствует селектору mem{quantile=0.5,otherLabel=~foo|bar}[http://VeryNoisyModule:9001/metrics]. Используйте несколько селекторов для создания поведения ИЛИ, а не поведения AND.

Например, чтобы разрешить пользовательскую метрику mem с любой меткой из модуля module1, но разрешить эту же метрику из module2 только с меткой agg=p99, добавьте следующий селектор в AllowedMetrics:

mem{}[http://module1:9001/metrics] mem{agg="p99"}[http://module2:9001/metrics]

Чтобы разрешить пользовательские метрики, такие как mem и cpu, для любых меток или конечных точек, добавьте следующее в AllowedMetrics:

mem cpu

Включение в сценариях с ограниченным сетевым доступом

Если вы отправляете метрики непосредственно в рабочую область Log Analytics, разрешите исходящий доступ к следующим URL-адресам:

  • https://<LOG_ANALYTICS_WORKSPACE_ID>.ods.opinsights.azure.com/*
  • https://<LOG_ANALYTICS_WORKSPACE_ID>.oms.opinsights.azure.com/*

Соображения, связанные с использованием прокси-сервера

Модуль сборщика метрик записывается в .NET Core. Используйте те же рекомендации, что и системные модули, чтобы разрешить обмен данными через прокси-сервер.

Коллекция метрик из локальных модулей использует http протокол. Чтобы запретить локальные маршруты через прокси-сервер, задайте переменную среды NO_PROXY. Установите значение NO_PROXY как список имен узлов, которые следует исключить, разделенных запятой. Используйте в качестве имен узлов имена модулей. Например: edgeHub,edgeAgent,myCustomModule.

Метрики маршрутизации

Иногда необходимо получить метрики через IoT Hub вместо отправки их непосредственно в Log Analytics. Например, при мониторинге устройств IoT Edge в вложенной конфигурации где дочерние устройства имеют доступ только к центру IoT Edge родительского устройства. Другим примером является развертывание устройства IoT Edge с исходящим сетевым доступом только к IoT Hub.

Чтобы включить мониторинг в этом сценарии, настройте модуль сборщика метрик для отправки метрик в виде сообщений в облако (D2C) через модуль EdgeHub. Включите возможность, установив переменную UploadTarget среды в IoTMessage сборщика на .

Совет

Не забудьте добавить маршрут edgeHub для доставки сообщений метрик из модуля сборщика в IoT Hub. Маршрут выглядит следующим образом FROM /messages/modules/replace-with-collector-module-name/* INTO $upstream.

Для этого параметра требуется дополнительная настройка, настройка облачного рабочего процесса для доставки сообщений метрик, поступающих в IoT Hub в рабочую область Log Analytics. Без этой настройки другие части интеграции, такие как курированные визуализации и оповещения , не работают.

Примечание.

Помните о дополнительных затратах с этим вариантом. Сообщения с метриками учитываются в вашей квоте сообщений IoT Hub. Взимается также плата за сбор данных с помощью Log Analytics и ресурсы облачных рабочих процессов.

Пример облачного рабочего процесса

Облачный рабочий процесс, предоставляющий сообщения метрик из IoT Hub в Log Analytics, доступен в рамках примера IoT Edge ведения журнала и мониторинга. Пример можно развернуть в существующих облачных ресурсах или использовать в качестве справочника по рабочему развертыванию.

Следующие шаги

Изучите типы подобранных визуализаций, которые предоставляет Azure Monitor.