Доступ к встроенным метрикам в Azure IoT Edge

Область применения:IoT Edge 1.5 проверка mark IoT Edge 1.5 IoT Edge 1.4 проверка mark IoT Edge 1.4

Внимание

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

Компоненты среды выполнения IoT Edge, центр IoT Edge и агент IoT Edge создают встроенные метрики в формате экспозиции Prometheus. Получайте удаленный доступ к этим метрикам для отслеживания и понимания работоспособности устройства IoT Edge.

Для доступа к этим метрикам вы можете использовать собственное решение. Кроме того, можно использовать модуль сборщика метрик, который обрабатывает сбор встроенных метрик и отправляет их в Azure Monitor или Центр Интернета вещей Azure. Дополнительные сведения см. в статье Сбор и транспортировка метрик.

Метрики автоматически предоставляются по умолчанию через порт 9600 модулей edgeHub и edgeAgent (http://edgeHub:9600/metricsиhttp://edgeAgent:9600/metrics). По умолчанию это не порт, сопоставленный с узлом.

Получайте доступ к метрикам с узла, предоставив и сопоставив порт метрик из createOptions модуля. Приведенный ниже пример сопоставляет порт метрик по умолчанию с портом 9601 на узле:

{
  "ExposedPorts": {
    "9600/tcp": {}
  },
  "HostConfig": {
    "PortBindings": {
      "9600/tcp": [
        {
          "HostPort": "9601"
        }
      ]
    }
  }
}

При сопоставлении конечных точек метрик edgeHub и edgeAgent выбирайте разные и уникальные номера портов узлов.

Примечание.

Переменная среды httpSettings__enabled не должна иметь значение false, чтобы встроенные метрики были доступны для коллекции.

Переменные среды, которые можно использовать для отключения метрик, перечислены в документации по репозиторию azure/iotedge.

Доступные метрики

Метрики содержат теги, помогающие определить природу собираемой метрики. Все метрики содержат следующие теги:

Тег Description
iothub Центр, с которым взаимодействует устройство
edge_device Идентификатор текущего устройства
instance_number Идентификатор GUID, представляющий текущую среду выполнения. При перезапуске все метрики сбрасываются. Этот идентификатор GUID упрощает выверку перезапусков.

В формате Prometheus существует четыре основных типа метрик: счетчик, датчик, гистограмма и сводка. Дополнительные сведения о различных типах метрик см. в документации по типам метрик Prometheus.

Квантили, предоставляемые для встроенной гистограммы и сводных метрик, — 0,1, 0,5, 0,9 и 0,99.

Модуль edgeHub создает следующие метрики:

Имя. Измерения Description
edgehub_gettwin_total source (источник операции)
id (идентификатор модуля)
Тип: счетчик
Общее число вызовов GetTwin
edgehub_messages_received_total route_output (выходные данные отправленного сообщения)
id
Тип: счетчик
Общее количество сообщений, полученных с клиентов
edgehub_messages_sent_total from (источник сообщения)
to (назначение сообщения)
from_route_output
to_route_input (входные данные назначения сообщения)
priority (приоритет сообщения в назначении)
Тип: счетчик
Общее число сообщений, отправленных клиентам или в восходящий поток
to_route_input имеет пустое значение, если to — $upstream
edgehub_reported_properties_total target (целевой объект обновления)
id
Тип: счетчик
Общее число вызовов для обновления передаваемого свойства
edgehub_message_size_bytes id
Тип: сводка
Размер сообщения от клиентов
Значения могут сообщаться так, как NaN если бы новые измерения не сообщались в течение определенного периода времени (в настоящее время 10 минут); для summary типа, соответствующего _count и _sum счетчиков, создаются.
edgehub_gettwin_duration_seconds source
id
Тип: сводка
Время, затраченное на операции получения двойника
edgehub_message_send_duration_seconds from
to
from_route_output
to_route_input
Тип: сводка
Время, затраченное на отправку сообщения
edgehub_message_process_duration_seconds from
to
priority
Тип: сводка
Время, затраченное на обработку сообщения из очереди
edgehub_reported_properties_update_duration_seconds target
id
Тип: сводка
Время, затраченное на обновление передаваемых свойств
edgehub_direct_method_duration_seconds from (вызывающий объект)
to (получатель)
Тип: сводка
Время, затраченное на разрешение прямого сообщения
edgehub_direct_methods_total from
to
Тип: счетчик
Общее число отправленных прямых сообщений
edgehub_queue_length endpoint (источник сообщения)
priority (приоритет очереди)
Тип: датчик
Текущая длина очереди edgeHub для заданного приоритета
edgehub_messages_dropped_total reason (no_route, ttl_expiry)
from
from_route_output
Тип: счетчик
Общее число сообщений, удаленных по этой причине
edgehub_messages_unack_total reason (storage_failure)
from
from_route_output
Тип: счетчик
Общее число сообщений, неподтвержденных из-за сбоя хранилища
edgehub_offline_count_total id Тип: счетчик
Общее количество раз, когда edgeHub перешел в автономный режим
edgehub_offline_duration_seconds id Тип: сводка
Время, когда edgeHub находился в автономном режиме
edgehub_operation_retry_total id
operation (имя операции)
Тип: счетчик
Общее число повторных попыток выполнения операций edgeHub
edgehub_client_connect_failed_total id
reason (проверка подлинности не пройдена)
Тип: счетчик
Общее число раз, когда клиентам не удалось подключиться к edgeHub

Модуль edgeAgent создает следующие метрики:

Имя. Измерения Description
edgeAgent_total_time_running_correctly_seconds module_name Тип: датчик
Время, в течение которого модуль был указан в развертывании и был в состоянии выполнения
edgeAgent_total_time_expected_running_seconds module_name Тип: датчик
Время, в течение которого модуль был указан в развертывании
edgeAgent_module_start_total module_name, module_version Тип: счетчик
Число раз, когда edgeAgent запрашивал у Docker запустить модуль
edgeAgent_module_stop_total module_name, module_version Тип: счетчик
Число раз, когда edgeAgent запрашивал у Docker остановить модуль
edgeAgent_command_latency_seconds command Тип: датчик
Время, затраченное на выполнение данной команды Docker. Возможные команды: создание, обновление, удаление, запуск, остановка и перезапуск
edgeAgent_iothub_syncs_total Тип: счетчик
Количество попыток, предпринятых edgeAgent, чтобы синхронизировать двойника с iotHub; как успешных, так и неудачных. Это число включает случаи, когда агент запрашивал двойник и центр уведомлял об обновлении двойника
edgeAgent_unsuccessful_iothub_syncs_total Тип: счетчик
Количество раз, когда edgeAgent не удалось синхронизировать двойника с iotHub.
edgeAgent_deployment_time_seconds Тип: счетчик
Время, затраченное на завершение нового развертывания после получения изменений.
edgeagent_direct_method_invocations_count method_name Тип: счетчик
Количество раз, когда вызывался встроенный прямой метод edgeAgent, например ping или restart.
edgeAgent_host_uptime_seconds Тип: датчик
Время работы узла
edgeAgent_iotedged_uptime_seconds Тип: датчик
Время выполнения iotedged
edgeAgent_available_disk_space_bytes disk_name, , disk_filesystemdisk_filetype Тип: датчик
Объем свободного места на диске
edgeAgent_total_disk_space_bytes disk_name, , disk_filesystemdisk_filetype Тип: датчик
Размер диска
edgeAgent_used_memory_bytes module_name Тип: датчик
Объем ОЗУ, используемый всеми процессами
edgeAgent_total_memory_bytes module_name Тип: датчик
Доступное ОЗУ
edgeAgent_used_cpu_percent module_name Тип: гистограмма
Процент ЦП, используемый всеми процессами
edgeAgent_created_pids_total module_name Тип: датчик
Число процессов или потоков, созданных контейнером
edgeAgent_total_network_in_bytes module_name Тип: датчик
Число байтов, полученных из сети
edgeAgent_total_network_out_bytes module_name Тип: датчик
Число байтов, отправляемых в сеть
edgeAgent_total_disk_read_bytes module_name Тип: датчик
Число считанных с диска байтов
edgeAgent_total_disk_write_bytes module_name Тип: датчик
Число байтов, записанных на диск
edgeAgent_metadata edge_agent_version, , experimental_featureshost_information Тип: датчик
Общие метаданные об устройстве. Значение всегда равно 0, сведения кодируются в тегах. experimental_features и host_information являются объектами JSON. host_information выглядит как {"OperatingSystemType": "linux", "Architecture": "x86_64", "Version": "1.2.7", "Provisioning": {"Type": "dps.tpm", "DynamicReprovisioning": false, "AlwaysReprovisionOnStartup": false}, "ServerVersion": "20.10.11+azure-3", "KernelVersion": "5.11.0-1027-azure", "OperatingSystem": "Ubuntu 20.04.4 LTS", "NumCpus": 2, "Virtualized": "yes"}. ServerVersion — это версия Docker, а Version — версия управляющей программы безопасности IoT Edge.

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