Устранение неполадок устройства IoT Edge
Область применения: IoT Edge 1.5 IoT Edge 1.4
Внимание
Поддерживаются выпуски IoT Edge 1.5 LTS и IoT Edge 1.4 LTS. IoT Edge 1.4 LTS заканчивается жизнью 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.
Если при запуске Azure IoT Edge в вашей среде возникают проблемы, используйте эту статью как руководство для устранения неполадок и диагностики.
Выполните команду Check
Первым шагом при устранении неполадок в IoT Edge должно быть использование команды check
, которая запускает набор тестов конфигурации и подключения для решения распространенных проблем. Команда check
доступна в выпуске 1.0.7 и новее.
Примечание.
Средство устранения неполадок не может выполнить проверку подключения, если устройство IoT Edge находится за прокси-сервером.
Вы можете выполнить команду check
, как показано ниже, или включить флаг --help
, чтобы просмотреть полный список параметров:
sudo iotedge check
Средство устранения неполадок выполняет разные проверки, отсортированные по следующим трем категориям:
- Проверки конфигурации проверяют сведения, которые могут препятствовать подключению устройств IoT Edge к облаку, включая проблемы с файлом конфигурации и подсистемой контейнеров.
- Проверки подключения определяют, может ли среда выполнения IoT Edge обращаться к портам на устройстве узла и могут ли все компоненты IoT Edge подключаться к центру Интернета вещей Azure. Этот набор проверок возвращает ошибки, если устройство IoT Edge находится за прокси-сервером.
- Проверки готовности к работе выполняют поиск рекомендуемых практических рекомендаций, такие как состояние сертификатов центра сертификации устройств (ЦС) и конфигурация файла журнала модуля.
Средство проверки IoT Edge использует контейнер для выполнения диагностики. Образ контейнера mcr.microsoft.com/azureiotedge-diagnostics:latest
доступен в Microsoft Container Registry. Если необходимо выполнить проверку на устройстве без прямого доступа к Интернету, устройствам потребуется доступ к образу контейнера.
В сценарии с помощью вложенных устройств IoT Edge можно получить доступ к изображению диагностика на подчиненных устройствах путем маршрутизации изображения через родительские устройства.
sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:<port_for_api_proxy_module>/azureiotedge-diagnostics:1.2
Сведения о каждой из диагностических проверок, выполняемых этим средством, включая действия, выполняемые при получении ошибки или предупреждения, см. в разделе Проверки IoT Edge для устранения неполадок.
Сбор отладочной информации с помощью команды support-bundle
Если необходимо собрать журналы из устройства IoT Edge, удобнее всего использовать команду support-bundle
. По умолчанию эта команда собирает журналы модуля, диспетчера безопасности IoT Edge и подсистемы контейнеров, выходные данные JSON iotedge check
и другие полезные сведения об отладке. Она сжимает их в единый файл для облегчения совместного использования. Команда support-bundle
доступна в выпуске 1.0.9 и новее.
Выполните команду support-bundle
с флагом --since
, чтобы указать, за какой период требуется собрать журналы данных. Например, 6h
получает журналы с последних шести часов, начиная с последних шести дней, 6d
6m
с последних шести минут и т. д. Включите флаг --help
, чтобы просмотреть полный список параметров.
sudo iotedge support-bundle --since 6h
По умолчанию команда support-bundle
создает ZIP-файл с именем support_bundle.zip в каталоге, в котором вызвана команда. Используйте флаг --output
, чтобы указать другой путь или имя файла для выходных данных.
Дополнительные сведения о команде см. в соответствующей справке.
iotedge support-bundle --help
Вы также можете использовать встроенный вызов прямого метода UploadSupportBundle, чтобы передать выходные данные команды support-bundle в хранилище BLOB-объектов Azure.
Предупреждение
Выходные данные команды support-bundle
могут содержать имена узлов, устройств и модулей, сведения, регистрируемые модулями и т. д. Имейте это в виду при совместном использовании выходных данных на общедоступном форуме.
Проверка метрик, собранных в среде выполнения
Модули среды выполнения IoT Edge создают метрики, помогающие отслеживать и анализировать работоспособность устройств IoT Edge. Добавьте модуль metrics-collector в развертывания, чтобы собрать метрики и отправить их в облако для упрощения мониторинга.
Дополнительные сведения см. в статье Сбор и транспортировка метрик.
Проверьте версию IoT Edge
Если вы используете более раннюю версию IoT Edge, то проблему может устранить обновление. Средство iotedge check
проверяет, является ли управляющая программа безопасности IoT Edge последней версией, но не проверяет версии модулей центра IoT Edge и агентов. Чтобы проверить версию модулей среды выполнения на устройстве, выполните команды iotedge logs edgeAgent
и iotedge logs edgeHub
. При запуске модуля в журналах объявляется номер версии.
Инструкции по обновлению устройства см. в статье Обновление управляющей программы безопасности IOT Edge и среды выполнения.
Проверка установки IoT Edge на устройствах
Вы можете проверить установку IoT Edge на устройствах, выполнив мониторинг двойника модуля edgeAgent.
Чтобы получить последнюю версию двойника модуля edgeAgent, выполните следующую команду из Azure Cloud Shell:
az iot hub module-twin show --device-id <edge_device_id> --module-id '$edgeAgent' --hub-name <iot_hub_name>
Эта команда выводит все сообщаемые свойства edgeAgent. Ниже приведены некоторые полезные свойства для мониторинга состояния устройства:
- состояние среды выполнения
- время запуска среды выполнения
- время последнего выхода из среды выполнения
- счетчик перезапусков среды выполнения
Проверьте состояние диспетчера безопасности IoT Edge и его журналы
Диспетчер безопасности IoT Edge отвечает за такие операции, как инициализация системы IoT Edge при запуске и подготовке устройств. Если IoT Edge не запускается, полезную информацию можно найти в журналах диспетчера безопасности.
Просмотрите состояние системных служб IoT Edge:
sudo iotedge system status
Просмотрите журналы системных служб IoT Edge:
sudo iotedge system logs -- -f
Включите журналы уровня отладки, чтобы просмотреть более подробные журналы системных служб IoT Edge:
Включите журналы уровня отладки.
sudo iotedge system set-log-level debug sudo iotedge system restart
После отладки вернитесь к стандартным журналам информационного уровня.
sudo iotedge system set-log-level info sudo iotedge system restart
Проверка журналов контейнеров на наличие ошибок
После запуска управляющей программы безопасности IoT Edge проверьте журналы контейнеров на наличие ошибок. Начните с развернутых контейнеров, а затем просмотрите контейнеры, которые составляют среду выполнения edgeAgent и edgeHub. В журналах агента IoT Edge обычно содержатся сведения о жизненном цикле каждого контейнера. В журналах центра IoT Edge содержатся сведения об обмене сообщениями и маршрутизации.
Журналы контейнеров можно получить из нескольких мест:
На устройстве IoT Edge выполните следующую команду, чтобы просмотреть журналы:
iotedge logs <container name>
На портал Azure используйте встроенное средство устранения неполадок. Мониторинг и устранение неполадок устройств IoT Edge на портале Azure
Используйте прямой метод UploadModuleLogs для отправки журналов модуля в Хранилище BLOB-объектов Azure.
Очистка журналов контейнеров
По умолчанию подсистема контейнеров Moby не устанавливает ограничения размера журнала контейнеров. С течением времени обширные журналы могут привести к заполнению устройства журналами и превышению места на диске. Если большие журналы контейнеров влияют на производительность устройства IoT Edge, используйте следующую команду, чтобы принудительно удалить контейнер вместе с журналами.
Если вы еще не закончили устранение неполадок, перед выполнением этой операции завершите проверку журналов в контейнере.
Предупреждение
Если принудительно удалить контейнер edgeHub при наличии недоставленных сообщений и если хранилище узлов не настроено, недоставленные сообщения будут потеряны.
docker rm --force <container name>
Для текущих сценариев обслуживания журналов и рабочих сценариев настройте драйвер ведения журнала по умолчанию.
Просмотр сообщений, отправляемых через центр IoT Edge
Вы можете просматривать сообщения, отправляемые через центр IoT Edge, и собирать данные аналитики из подробных журналов контейнеров в среде выполнения. Чтобы включить ведение подробных журналов в этих контейнерах, задайте значение RuntimeLogLevel
для переменной среды в манифесте развертывания.
Чтобы просмотреть сообщения, отправляемые через центр IoT Edge, задайте для переменной среды RuntimeLogLevel
модуля edgeHub значение debug
.
В модулях edgeHub и edgeAgent для этой переменной среды журналов среды выполнения используется значение по умолчанию info
. Для этой переменной среды можно задавать следующие значения:
- fatal
- error
- предупреждений (не рекомендуется)
- info
- отладка
- verbose
Можно также проверить сообщения, передаваемые между центром Интернета вещей и устройствами IoT. Просмотрите эти сообщения с помощью расширения Центр Интернета вещей Azure для Visual Studio Code . Дополнительные сведения см. в записи блога об удобном средстве при разработке с помощью Центра Интернета вещей Azure.
Перезапуск контейнеров
После изучения журналов и сообщений можно попытаться перезапустить контейнеры.
На устройстве IoT Edge используйте следующие команды для перезапуска модулей:
iotedge restart <container name>
Перезапустите контейнеры среды выполнения IoT Edge:
iotedge restart edgeAgent && iotedge restart edgeHub
Также можно перезапустить модули удаленно на портале Azure. Дополнительные сведения см. в статье Мониторинг и устранение неполадок устройств IoT Edge на портале Azure.
Проверьте правила конфигурации брандмауэра и портов
Azure IoT Edge позволяет обмен данными с локального сервера в облако Azure с помощью поддерживаемых протоколов Центр Интернета вещей. Дополнительные сведения см. в разделе о выборе протокола связи. В целях дополнительной безопасности коммуникационные каналы между Azure IoT Edge и Центром Интернета вещей всегда настроены как исходящие. Эта конфигурация основана на модели связи с поддержкой служб, которая позволяет снизить контактную зону, изучаемую вредоносным объектом. Входящий трафик требуется только для определенных сценариев, в которых Центр Интернета вещей Azure необходимо отправлять сообщения на устройство Azure IoT Edge. Сообщения из облака на устройство защищаются с помощью безопасных каналов TLS и могут иметь дополнительную защиту при использовании сертификатов X.509 и модулей устройства TPM. Сведения об установке этой связи с помощью диспетчера безопасности Azure IoT Edge см. в этой статье.
Хотя IoT Edge обеспечивает расширенную конфигурацию для защиты среды выполнения Azure IoT Edge и развернутых модулей, она по-прежнему зависит от базовой конфигурации компьютера и сети. Поэтому необходимо обеспечить правильную настройку правил сети и брандмауэра для безопасного пограничного взаимодействия с облаком. Приведенную ниже таблицу можно использовать при настройке правил брандмауэра для основных серверов, на которых размещена среда выполнения Azure IoT Edge:
Протокол | Порт | Входящие | Исходящий | Руководство |
---|---|---|---|---|
MQTT | 8883 | ЗАБЛОКИРОВАННЫЕ (по умолчанию) | ЗАБЛОКИРОВАННЫЕ (по умолчанию) |
|
AMQP | 5671 | ЗАБЛОКИРОВАННЫЕ (по умолчанию) | ОТКРЫТЫЕ (по умолчанию) |
|
HTTPS | 443 | ЗАБЛОКИРОВАННЫЕ (по умолчанию) | ОТКРЫТЫЕ (по умолчанию) |
|
Последний вариант: остановка и повторное создание всех контейнеров
Иногда системе может потребоваться значительное специальное изменение для работы с существующими ограничениями сети или операционной системы. Например, системе может потребоваться другое подключение диска данных и параметры прокси-сервера. Если вы попытались выполнить все предыдущие шаги и по-прежнему получить сбои контейнера, системные кэши docker или сохраненные параметры сети могут не обновляться с последней перенастройкой. В этом случае последним вариантом является использование docker prune
чистого начала с нуля.
Следующая команда останавливает систему IoT Edge (и, следовательно, все контейнеры), использует параметр "все" и "том" для docker prune
удаления всех контейнеров и томов. Просмотрите предупреждение о том, что команда выдает проблемы и подтверждается y
при готовности.
sudo iotedge system stop
docker system prune --all --volumes
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all volumes not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N]
Запустите систему снова. Чтобы обеспечить безопасность, примените любую оставшуюся конфигурацию и запустите систему с одной командой.
sudo iotedge config apply
Подождите несколько минут и проверьте еще раз.
sudo iotedge list
Следующие шаги
Считаете, что обнаружили ошибку в платформе IoT Edge? Отправьте запрос, чтобы мы как можно скорее устранили неисправность.
Если у вас есть другие вопросы, создайте запрос в службу поддержки для получения справки.