Свойства агента IoT Edge и двойников модулей концентратора IoT Edge

Применимо к: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 и концентратор IoT Edge — это два модуля, составляющие среду выполнения IoT Edge. Дополнительные сведения об обязанностях каждого модуля среды выполнения см. в разделе понять среду выполнения Azure IoT Edge и ее архитектуру.

В этой статье представлены требуемые и отображаемые в отчете свойства двойников модулей для среды выполнения. Дополнительные сведения о развертывании модулей на устройствах IoT Edge см. в статье learn, как развертывать модули и устанавливать маршруты в IoT Edge.

Двойник модуля имеет следующие элементы:

  • Требуемые свойства. Серверная часть решения задает необходимые свойства, а модуль считывает их. Модуль также получает уведомления об изменениях в нужных свойствах. Используйте требуемые свойства вместе с указанными свойствами для синхронизации конфигурации модуля или условий.

  • Сообщаемые свойства. Модуль задает сообщаемые свойства, а серверная часть решения считывает и запрашивает их. Используйте сообщаемые свойства вместе с требуемыми свойствами для синхронизации конфигурации или условий модуля.

Требуемые свойства EdgeAgent

Двойник модуля для агента IoT Edge называется $edgeAgent. Он координирует обмен данными между агентом IoT Edge, работающим на устройстве, и Центр Интернета вещей. Задайте требуемые свойства при применении манифеста развертывания на конкретном устройстве в рамках развертывания для одного устройства или массового развертывания.

Свойство Описание: Обязательное поле
imagePullPolicy Указывает, когда нужно извлечь изображение: OnCreate или Никогда. Используйте Never, если изображение уже находится на устройстве. Да
restartPolicy Когда перезапускать модуль. Возможные значения: никогда: не перезапускать модуль, если он не запущен, при сбое: перезапускать модуль, если он завершился с ненулевым кодом выхода, при плохом состоянии: перезапускать модуль, если он находится в плохом состоянии (см. примечание), всегда: всегда перезапускать модуль, если он не запущен. Примечание: Политика on-failure перезапускает модули, завершающиеся с ненулевым кодом выхода. Политика on-unhealthy принимается схемой, но среда выполнения в настоящее время не выводит неработоспособное состояние из проверок работоспособности в Docker, поэтому политика не имеет практического эффекта. Дополнительные сведения см. в разделе ограничения и ограничения IoT Edge. Да
runtime.type Должен быть docker. Да
runtime.settings.minDockerVersion Указывает минимальную версию Docker, необходимую для этого манифеста развертывания. Да
runtime.settings.loggingOptions Задает строковый JSON с параметрами ведения журнала для контейнера агента IoT Edge. Дополнительные сведения о параметрах ведения журнала Docker. нет
runtime.settings.registryCredentials.{registryId}.username Указывает имя пользователя реестра контейнеров. Для Реестр контейнеров Azure имя пользователя обычно является именем реестра. Учетные данные реестра необходимы для образов частных модулей. нет
runtime.settings.registryCredentials.{registryId}.password Пароль для реестра контейнеров. нет
runtime.settings.registryCredentials.{registryId}.address Адрес реестра контейнеров. Для Реестр контейнеров Azure адрес обычно {registry name}.azurecr.io. нет
schemaVersion Указывает 1.0 или 1.1. Рекомендуется использовать версию 1.1, введённую с IoT Edge версии 1.0.10. Да
status Требуемое состояние модуля: выполнение или остановка. Обязательное поле
systemModules.edgeAgent.type Должен быть docker. Да
systemModules.edgeAgent.startupOrder Задает целое число для позиции модуля в порядке запуска. Значение 0 — первое, а максимальное целое число (4294967295) — последнее. Если значение не указано, значение по умолчанию — максимальное целое число. нет
systemModules.edgeAgent.settings.image Задает URI образа агента IoT Edge. Агент IoT Edge не может обновить себя. Да
systemModules.edgeAgent.settings.createOptions Задает строковый JSON с параметрами создания контейнера агента IoT Edge. Дополнительные сведения о параметрах создания Docker. нет
systemModules.edgeAgent.configuration.id Идентификатор развертывания, которое развернуло этот модуль. Центр Интернета вещей задает это свойство при применении манифеста с помощью развертывания. Не является частью манифеста развертывания.
systemModules.edgeHub.type Должен быть docker. Да
systemModules.edgeHub.status Должен выполняться. Да
systemModules.edgeHub.restartPolicy Всегда должен быть. Да
systemModules.edgeHub.startupOrder Целочисленное значение, обозначающее позицию этого модуля в порядке запуска. Значение 0 — первое, а максимальное целое число (4294967295) — последнее. Если значение не указано, значение по умолчанию — максимальное целое число. нет
systemModules.edgeHub.settings.image URI образа узла IoT Edge. Да
systemModules.edgeHub.settings.createOptions Строка JSON, содержащая параметры создания контейнера концентратора IoT Edge. Параметры создания Docker нет
systemModules.edgeHub.configuration.id Идентификатор развертывания, которое развернуло этот модуль. Центр Интернета вещей задает это свойство при применении манифеста с помощью развертывания. Не является частью манифеста развертывания.
modules.{moduleId}.version Определяемая пользователем строка, представляющая версию этого модуля. Да
modules.{moduleId}.type Должен быть docker. Да
modules.{moduleId}.status Запущено | Остановлено Да
modules.{moduleId}.restartPolicy никогда | в случае сбоя | в случае неисправности | всегда Да
modules.{moduleId}.startupOrder Целочисленное значение для расположения модуля в порядке запуска. Значение 0 — первое, а максимальное целое число (4294967295) — последнее. Если значение не указано, значение по умолчанию — максимальное целое число. нет
modules.{moduleId}.imagePullPolicy on-create | никогда нет
modules.{moduleId}.env Список переменных среды для передачи в модуль. Принимает формат "<name>": {"value": "<value>"}. нет
modules.{moduleId}.settings.image Универсальный код ресурса (URI) для изображения модуля. Да
modules.{moduleId}.settings.createOptions Преобразованный в строку JSON, содержащий параметры для создания контейнера модуля. Параметры создания Docker нет
modules.{moduleId}.configuration.id Идентификатор развертывания, которое развернуло этот модуль. Центр Интернета вещей задает это свойство при применении манифеста с помощью развертывания. Не является частью манифеста развертывания.
version Текущая итерация с версией, коммитом и сборкой. нет

Сообщенные свойства EdgeAgent

Свойства агента IoT Edge включают три основных компонента информации:

  • Состояние применения последних установленных желаемых свойств
  • Состояние модулей, работающих на устройстве, как сообщает агент IoT Edge, и
  • Копия требуемых свойств, которые в настоящий момент работают на устройстве.

Копия текущих требуемых свойств помогает определить, применило ли устройство последнее развертывание или по-прежнему работает на основе предыдущего манифеста развертывания.

Примечание.

Вы можете запрашивать сообщаемые свойства агента IoT Edge с помощью языка запросов Центр Интернета вещей, чтобы изучать состояние развертывания в масштабе. Сведения об использовании свойств агента IoT Edge для отображения состояния см. в разделе Понимание развертываний IoT Edge для отдельных устройств или в масштабе.

В следующей таблице не содержатся сведения, скопированные из требуемых свойств.

Свойство Описание:
lastDesiredStatus.code Код состояния для последних требуемых свойств, видимых агентом IoT Edge. Допустимые значения: 200 Успех, 400 Недопустимая конфигурация, 412 Недопустимая версия схемы, 417 Требуемые свойства пусты, 500 Сбой.
lastDesiredStatus.description Текстовое описание состояния.
lastDesiredVersion Это целое число относится к последней версии требуемых свойств, обрабатываемых агентом IoT Edge.
runtime.platform.OS Сообщает ОС, запущенную на устройстве.
runtime.platform.architecture Сообщает архитектуру ЦП на устройстве.
schemaVersion Версия схемы сообщаемых свойств.
systemModules.edgeAgent.runtimeStatus Состояние агента IoT Edge: { работает | в плохом состоянии }.
systemModules.edgeAgent.statusDescription Текстовое описание сообщаемого состояния агента IoT Edge.
systemModules.edgeAgent.exitCode Код выхода, сообщаемый контейнером агента IoT Edge, если контейнер завершает работу.
systemModules.edgeAgent.lastStartTimeUtc Время последнего запуска агента IoT Edge.
systemModules.edgeAgent.lastExitTimeUtc Время последнего выхода агента IoT Edge.
systemModules.edgeHub.runtimeStatus Состояние концентратора IoT Edge: { работает | остановлен | сбой | откат | нездоров }.
systemModules.edgeHub.statusDescription Текстовое описание состояния IoT Edge концентратора, если оно неработоспособно.
systemModules.edgeHub.exitCode Код завершения работы, сообщаемый контейнером узла IoT Edge, если он завершает работу.
systemModules.edgeHub.lastStartTimeUtc Время последнего запуска центра IoT Edge.
systemModules.edgeHub.lastExitTimeUtc Время последнего выхода из центра IoT Edge.
systemModules.edgeHub.lastRestartTimeUtc Время последнего перезапуска центра IoT Edge.
systemModules.edgeHub.restartCount Количество раз, когда этот модуль был перезагружен в рамках политики перезапуска.
modules.{moduleId}.runtimeStatus Состояние модуля: { работает | остановлено | не удалось | откат | нездоровый }.
modules.{moduleId}.statusDescription Текстовое описание состояния модуля, если оно неработоспособно.
modules.{moduleId}.exitCode Код выхода, сообщаемый контейнером модуля, если контейнер завершает выполнение.
modules.{moduleId}.lastStartTimeUtc Время последнего запуска модуля.
modules.{moduleId}.lastExitTimeUtc Время последнего выхода из модуля.
modules.{moduleId}.lastRestartTimeUtc Время последнего перезапуска модуля.
modules.{moduleId}.restartCount Количество раз, когда этот модуль был перезагружен в рамках политики перезапуска.
version Версия образа. Например: "version": { "version": "1.2.7", "build": "50979330", "commit": "d3ec971caa0af0fc39d2c1f91aef21e95bd0c03c" }.

Требуемые свойства EdgeHub

Двойник модуля для концентратора IoT Edge называется $edgeHub. Он координирует обмен данными между концентратором IoT Edge, работающим на устройстве, и Центр Интернета вещей. Задайте требуемые свойства при применении манифеста развертывания на конкретном устройстве в рамках развертывания для одного устройства или массового развертывания.

Свойство Описание: Требуется в манифесте развертывания
schemaVersion Либо 1.0, либо 1.1. Версия 1.1 была представлена в составе IoT Edge версии 1.0.10 и рекомендуется. Да
routes.{routeName} Строка, представляющая маршрут концентратора IoT Edge. Дополнительные сведения см. в разделе Объявление маршрутов. Элемент routes может присутствовать, но быть пустым.
storeAndForwardConfiguration.timeToLiveSecs IoT Edge концентратор сохраняет сообщения в течение определенного времени (в секундах), если они отключены от конечных точек маршрутизации, таких как Центр Интернета вещей или локальный модуль. Это состояние сохраняется при любых отключениях питания или перезапусках. Дополнительные сведения см. в статье Возможности автономной работы. Да

Сообщенные свойства EdgeHub

Свойство Описание:
lastDesiredVersion Это целое число относится к последней версии требуемых свойств, обрабатываемых центром IoT Edge.
lastDesiredStatus.code Код состояния, ссылающийся на последние требуемые свойства, видимые центром IoT Edge. Допустимые значения: 200 успешность, 400 недопустимая конфигурация, 500 сбой.
lastDesiredStatus.description Текстовое описание состояния.
clients Все клиенты, подключенные к EdgeHub, включая информацию о состоянии и времени последнего подключения. Пример: "clients": { "device2/SimulatedTemperatureSensor": { "status": "Connected", "lastConnectedTimeUtc": "2022-11-17T21:49:16.4781564Z" } }. Дополнительные сведения о том, какие подключения отображаются в этом свойстве, см. в разделе "Какие подключения отображаются".clients
clients.{device or moduleId}.status Состояние подключения этого устройства или модуля. Возможные значения: подключенные или отключенные. В отключенном состоянии могут находиться только идентификаторы модуля. Подчиненные устройства, подключающиеся к IoT Edge концентратору, отображаются только при подключении.
clients.{device or moduleId}.lastConnectTime Время последнего подключения модуля или устройства.
clients.{device or moduleId}.lastDisconnectTime Время последнего отключения модуля или устройства.
schemaVersion Версия схемы сообщаемых свойств.
version Версия образа. Например: "version": { "version": "1.2.7", "build": "50979330", "commit": "d3ec971caa0af0fc39d2c1f91aef21e95bd0c03c" }.

Какие подключения отображаются в clients

clients Сообщаемое свойство перечисляет каждое отдельное логическое подключение, которое обслуживает локальный edgeHub, за исключением его собственного идентификатора $edgeHub. Specifically:

  • Модули на том же пограничном устройстве отображаются как <deviceId>/<moduleName>. Это включает в себя $edgeAgent, так как локальный edgeAgent подключается через локальный edgeHub.
  • Дочерние устройства IoT Edge нижестоящего уровня отображаются как <childDeviceId>/$edgeHub и <childDeviceId>/$edgeAgent. Отдельной записи <childDeviceId> нет. Подключение дочернего $edgeHub объекта — это "собственное подключение устройства", на которое ссылается число подключенных клиентов в иерархии шлюза.
  • Нисходящие конечные устройства (устройства, не являющиеся устройствами IoT Edge) отображаются как <deviceId> без суффикса модуля.
  • Собственный идентификатор локального edgeHub (<deviceId>/$edgeHub) намеренно опущен, чтобы избежать самоссылки.

При отключении модуля его запись остается в clients со статусом Disconnected. При отключении нижестоящего устройства его запись удаляется из clients. Количество видимых записей равно количеству, заложенному для MaxConnectedClients. Нет скрытого дополнительного подключения.

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

Сведения об использовании этих свойств для создания манифестов развертывания см. в статье Understand, как можно использовать, настраивать и повторно использовать модули IoT Edge.