Мониторинг, диагностика и устранение неполадок подключения устройств к Центру Интернета вещей Azure
Иногда проблемы с подключением устройств Интернета вещей трудно устранить, так как существует множество возможных точек отказа. Логика приложения, физические сети, протоколы, оборудование, Центр Интернета и другие облачные службы вещей могут быть причиной проблем. Очень важно иметь возможность обнаруживать и выявлять источники проблем. Однако крупномасштабное решение Интернета вещей может включать тысячи устройств, поэтому проверка отдельных устройств вручную нецелесообразна. Центр Интернета вещей интегрируется с двумя службами Azure, которые помогают сделать следующее:
Azure Monitor. Azure Monitor позволяет собирать, анализировать и обрабатывать данные телеметрии из Центра Интернета вещей. Чтобы помочь в обнаружении, диагностике и устранении этих проблем в большом масштабе, используйте возможности мониторинга Центра Интернета вещей с помощью Azure Monitor. Сюда входит настройка оповещений для активации уведомлений и действий при возникновении отключений, а также настройка журналов, которые можно использовать для обнаружения причин, вызвавших отключение.
Сетка событий Azure Для критической инфраструктуры и отключений каждого из устройств используйте службу Сетка событий Azure для подписки на события подключения и отключения устройств, формируемые Центром Интернета вещей. Сетка событий Azure позволяет использовать любые из следующих обработчиков событий:
- Функции Azure
- Logic Apps
- Служба автоматизации Azure
- WebHooks
- Хранилище очередей
- Гибридные подключения
- Центры событий
Сетка событий и Azure Monitor
Сетка событий предоставляет решение для мониторинга каждого из устройств с низкой задержкой, которое можно использовать для отслеживания подключений критически важных устройств и инфраструктуры. Azure Monitor предоставляет метрику Подключенные устройства, которую можно использовать для отслеживания количества устройств, подключенных к Центр Интернета вещей, и активации оповещения, когда это число опускается ниже статического порога.
При принятии решения о том, следует ли использовать Сетку событий или Azure Monitor для конкретного сценария, учитывайте следующее.
Задержка оповещения. События подключения к Центру Интернета вещей доставляются гораздо быстрее с помощью службы Сетка событий. Поэтому Сетка событий является предпочтительным выбором для сценариев, в которых желательно быстрое уведомление.
Уведомления для каждого устройства. Сетка событий позволяет отслеживать подключения и отключать отдельные устройства. Поэтому Сетка событий лучше всего подходит для сценариев, в которых необходимо отслеживать подключения для критически важных устройств.
Упрощенная настройка. Оповещения метрик Azure Monitor поддерживают упрощенную процедуру установки, которая не требует интеграции с другими службами для доставки уведомлений по электронной почте, SMS, Голосовой связи и доставки других видов уведомлений. С помощью службы Сетка событий необходимо интегрироваться с другими службами Azure для доставки уведомлений. Обе службы могут интегрироваться с другими службами для активации более сложных действий.
Сетка событий. Мониторинг событий подключения и отключения
Чтобы отслеживать события подключения и отключения устройств в рабочей среде, рекомендуется подписаться на DeviceConnected и DeviceDisconnected и события в службе Сетка событий, чтобы активировать предупреждения и отслеживать состояние подключения устройства. Сетка событий обеспечивает более низкую задержку событий, чем Azure Monitor, и вы можете отслеживать события для каждого устройства. По этим причинам Сетка событий является предпочтительным методом для мониторинга критически важных устройств и инфраструктуры.
При использовании службы Сетка событий для мониторинга или активации оповещений при отключении устройств убедитесь, что при такой реализации фильтруются периодические отключения, возникающие из-за возобновления токена SAS на устройствах, использующих пакеты SDK для Интернета вещей Azure. Дополнительные сведения см. в разделе Поведение при отключении устройств MQTT, использующих пакеты SDK для Интернета вещей Azure.
Ознакомьтесь со следующими статьями, чтобы узнать больше о мониторинге событий подключения устройств с помощью Сетки событий:
Общие сведения об использовании Сетки событий с Центром Интернета вещей см. в статье Реагирование на события Центра Интернета вещей с помощью Сетки событий. Обратите особое внимание на раздел Ограничения для событий состояния подключения устройства .
Руководство по упорядочиванию событий подключения устройств см. в статье Порядок событий подключения устройств из Центра Интернета вещей Azure с помощью Azure Cosmos DB.
Руководство по отправке уведомлений по электронной почте см. в разделе Отправка уведомлений по электронной почте о событиях Центра Интернета вещей Azure с помощью Сетки событий и приложения Logic Apps в документации по службе Сетка событий.
Azure Monitor: перенаправление событий подключения в журналы
Центр Интернета вещей непрерывно передает записи в журналы ресурсов по нескольким категориям операций. В то же время, для получения этих данных из журнала необходимо создать параметр диагностики, чтобы перенаправить журнал в его место назначения, где его можно будет проанализировать или заархивировать. Одним из таких мест назначений являются журналы Azure Monitor через рабочую область Log Analytics (см. цены), где можно проанализировать данные с помощью запросов Kusto.
Центр Интернета вещей категория соединений с журналами ресурсов формирует записи об операциях и ошибках, относящихся к подключениям устройств. На следующем снимке экрана показан параметр диагностики для маршрутизации этих журналов в рабочую область Log Analytics:
Рекомендуется создать параметр диагностики как можно раньше после создания Центра Интернета вещей, и хотя Центр Интернета вещей всегда передает журналы ресурсов, они не собираются системой Azure Monitor, пока журналы не будут перенаправлены в место назначения.
Дополнительные сведения о маршрутизации журналов в место назначения см. в разделе Сбор и маршрутизация. Подробные инструкции по созданию параметров диагностики см. в разделе Руководство по использованию метрик и журналов.
Azure Monitor. Настройка оповещения о метриках отключения устройств
Можно настроить оповещения на основе метрик платформы, передаваемых Центром Интернета вещей. С помощью оповещений о метриках можно уведомлять пользователей о том, что возникло определенное состояние, а также активировать действия, которые могут автоматически реагировать на это состояние.
Метрика Подключенных устройств (предварительная версия) показывает, сколько устройств подключено к Центру Интернета вещей. Можно создать оповещения для активации, если метрика станет ниже порогового значения:
Можно использовать правила генерации оповещений метрик для мониторинга ошибок при масштабном отключении устройств. Таким образом используйте оповещения, чтобы определить неожиданное отключение значительного количества устройств. При обнаружении такой ситуации можно просмотреть журналы, чтобы помочь устранить проблему. Для наблюдения за отсоединением каждого устройства и критически важных устройств почти в реальном времени все же необходимо использовать Сетку событий.
Дополнительные сведения об оповещениях в Центре Интернета вещей см. в разделе Оповещения в мониторе Центра Интернета вещей. Пошаговое руководство по созданию оповещений в Центре Интернета вещей см. в руководстве Использование метрик и журналов. Более подробные сведения об оповещениях см. в разделе Обзор оповещений в Microsoft Azure в документации по Azure Monitor.
Azure Monitor. Использование журналов для разрешения ошибок подключения
При обнаружении отсоединения устройств с помощью оповещений о метриках Azure Monitor или Сетки событий можно использовать журналы для упрощения устранения причины. В этом разделе описано, как найти распространенные проблемы в журналах Azure Monitor. В описанных ниже действиях предполагается, что уже создан параметр диагностики для отправки журналов подключений Центра Интернета вещей в рабочую область Log Analytics.
После создания параметра диагностики для маршрутизации журналов ресурсов Центра Интернета вещей в журналы Azure Monitor, выполните следующие действия, чтобы просмотреть журналы на портале Azure.
Перейдите в Центр Интернета вещей на портале Azure.
В разделе Наблюдение в левой области Центра Интернета вещей выберите Журналы.
Чтобы выделить журналы ошибок подключения для Центра Интернета вещей, введите следующий запрос в редакторе запросов, а затем выберите Запустить:
AzureDiagnostics | where ( ResourceType == "IOTHUBS" and Category == "Connections" and Level == "Error")
В результатах (если они будут) найдите
OperationName
,ResultType
(код ошибки) иResultDescription
(сообщение об ошибке), чтобы получить более подробную информацию.
Сведения об устранении наиболее распространенных ошибок см. в следующих руководствах:
Azure Monitor. Использование журналов для наблюдения за подключением к конкретному устройству
Возможны ситуации, когда вы хотите использовать Azure Monitor для просмотра ошибок подключения по конкретному устройству, а также сведений об этом. Чтобы изолировать события подключения для устройства, можно выполнить те же действия, что и в предыдущем разделе, но ввести следующий запрос. Замените test-device на имя устройства.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend DeviceId = tostring(parse_json(properties_s).deviceId)
| where DeviceId == "test-device"
Запрос возвращает как события об ошибках, так и информационные события для целевого устройства. В следующем примере выходных данных показано информационное событие deviceConnect:
Поведение отключения устройства MQTT с помощью пакетов SDK для Интернета вещей Azure
Пакеты SDK для устройств Интернета вещей Azure отключаются от Центра Интернета вещей, а затем повторно подключаются при обновлении токенов SAS по протоколу MQTT (и MQTT через WebSockets). В журналах это отображается как события информационного отключения и подключения устройства, которые иногда сопровождаются событиями ошибок.
По умолчанию срок жизни токена составляет 60 минут для всех пакетов SDK, тем не менее, разработчики могут изменить это время в некоторых пакетах SDK. В следующей таблице приведены сведения о сроках существования токена, о продлении токена и о поведении при возобновлении токена для каждого из пакетов SDK.
SDK | Срок существования токена | Продление срока действия маркера | Поведение при возобновлении |
---|---|---|---|
.NET | 60 минут, настраивается | 85 % срока существования, настраивается | Пакет SDK отключается и повторно подключается в течение срока действия токена плюс 10-минутный льготный период. Информационные события и ошибки, созданные в журналах. |
Java | 60 минут, настраивается | 85 % срока существования, не настраивается | Пакет SDK отключается и повторно подключается в течение срока действия токена плюс 10-минутный льготный период. Информационные события и ошибки, созданные в журналах. |
Node.js | 60 минут, настраивается | настраивается | Пакет SDK отключается и повторно подключается при обновлении токена. В журналах создаются только информационные события. |
Python | 60 минут, настраивается | за 120 секунд до истечения срока действия | Пакет SDK отключается и повторно подключается в течение срока существования токена. |
На следующих снимках экрана показано поведение обновления токена в журналах Azure Monitor для разных пакетов SDK. Значения по умолчанию для срока существования и порога обновления токена были изменены, как указано.
Пакет SDK для устройств .NET с 1200-секундным сроком действия токена (20 минут) и продлением, заданным на выполнение при 90 % срока существования. отключение происходит каждые 30 минут:
Пакет SDK для Java с 300-секундным сроком существования токена (5 минут) и продлением заданным по умолчанию на выполнение при 85 % срока существования. отключение происходит каждые 15 минут:
Пакет SDK для Node со сроком действия токена 300 секунд (5 минут), а продление токена задано через 3 минуты. Происходит отключение при обновлении токена. Кроме того, не возникает ошибок, выдаются только информационные события о подключении и отключении:
Для накопления результатов использовался следующий запрос. Запрос извлекает имя и версию пакета SDK из контейнера свойств. Дополнительные сведения см. в разделе Версия пакета SDK в журналах Центра Интернета вещей.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend parsed_json = parse_json(properties_s)
| extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId) , Protocol = tostring(parsed_json.protocol)
| distinct TimeGenerated, OperationName, Level, ResultType, ResultDescription, DeviceId, Protocol, SDKVersion
В качестве разработчика или оператора решений Интернета вещей необходимо учитывать такое поведение, чтобы интерпретировать события подключения и отключения и связанные ошибки в журналах. Если требуется изменить время существования токена или возобновление действия для устройств, проверьте, реализует ли устройство параметр его сдвоенной настройки или метод устройства, который позволяет это сделать.
Если отслеживаются подключения устройств с помощью Центров событий, убедитесь, что сборка выполняется так, что производится фильтрация периодических отключений из-за возобновления действия маркера SAS. Например, не активируйте действия на основе отключений, если за событием отключения следует событие подключения в течение определенного промежутка времени.
Примечание
Центр Интернета вещей поддерживает только одно активное подключение MQTT на устройство. Любое новое подключение MQTT от имени того же идентификатора устройства приводит к тому, что Центр Интернета вещей разрывает существующее подключение.
В журнал Центра Интернета вещей будет записано 400027 ConnectionForcefullyClosedOnNewConnection
Предложенные шаги не помогли устранить проблему
Если предыдущие действия не помогли, попробуйте следующее.
Если у вас есть доступ к проблемным устройствам физически или удаленно (например, через SSH), выполните инструкции в руководстве по устранению неполадок на стороне устройства, чтобы устранить неполадки.
Убедитесь, что ваши устройства включены. На портале Azure выберите "Центр Интернета вещей > Устройства IoT".
Если устройство использует протокол MQTT, убедитесь, что порт 8883 открыт. Дополнительные сведения см. в разделе Подключение к Центру Интернета вещей (MQTT).
Получите помощь на странице вопросов Microsoft Q&A о Центре Интернета вещей, в Stack Overflow или поддержке Azure.
Дальнейшие действия
Дополнительные сведения об устранении временных проблем см. в статье Обработка временных сбоев.
Дополнительные сведения о пакетах SDK для устройств Azure IoT и управлении повторными попытками см. в статье Шаблоны повторных попыток.