Поделиться через


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

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

Внимание

IoT Edge 1.5 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.

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