Мониторинг, диагностика и устранение неполадок подключения устройств к Центру Интернета вещей Azure

Иногда проблемы с подключением устройств Интернета вещей трудно устранить, так как существует множество возможных точек отказа. Логика приложения, физические сети, протоколы, оборудование, Центр Интернета и другие облачные службы вещей могут быть причиной проблем. Очень важно иметь возможность обнаруживать и выявлять источники проблем. Однако крупномасштабное решение Интернета вещей может включать тысячи устройств, поэтому проверка отдельных устройств вручную нецелесообразна. Центр Интернета вещей интегрируется с двумя службами Azure, которые помогают сделать следующее:

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

  • Сетка событий Azure Для критической инфраструктуры и отключений каждого из устройств используйте службу Сетка событий Azure для подписки на события подключения и отключения устройств, формируемые Центром Интернета вещей. Сетка событий Azure позволяет использовать любые из следующих обработчиков событий:

    • Функции Azure
    • Logic Apps
    • Azure Automation
    • Веб-перехватчики
    • Хранилище очередей
    • Гибридные подключения
    • Event Hubs

Сетка событий и Azure Monitor

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

При принятии решения о том, следует ли использовать Сетку событий или Azure Monitor для конкретного сценария, учитывайте следующее.

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

  • Уведомления для каждого устройства. Сетка событий позволяет отслеживать подключения и отключать отдельные устройства. Поэтому Сетка событий лучше всего подходит для сценариев, в которых необходимо отслеживать подключения для критически важных устройств.

  • Упрощенная настройка. Оповещения метрик Azure Monitor поддерживают упрощенную процедуру установки, которая не требует интеграции с другими службами для доставки уведомлений по электронной почте, SMS, Голосовой связи и доставки других видов уведомлений. С помощью службы Сетка событий необходимо интегрироваться с другими службами Azure для доставки уведомлений. Обе службы могут интегрироваться с другими службами для активации более сложных действий.

Сетка событий. Мониторинг событий подключения и отключения

Чтобы отслеживать события подключения и отключения устройств в рабочей среде, рекомендуется подписаться на DeviceConnected и DeviceDisconnected и события в службе Сетка событий, чтобы активировать предупреждения и отслеживать состояние подключения устройства. Сетка событий обеспечивает более низкую задержку событий, чем Azure Monitor, и вы можете отслеживать их на каждом устройстве. По этим причинам Сетка событий является предпочтительным методом для мониторинга критически важных устройств и инфраструктуры.

При использовании службы Сетка событий для мониторинга или активации оповещений при отключении устройств убедитесь, что при такой реализации фильтруются периодические отключения, возникающие из-за возобновления токена SAS на устройствах, использующих пакеты SDK для Интернета вещей Azure. Дополнительные сведения см. в разделе Поведение при отключении устройств MQTT, использующих пакеты SDK для Интернета вещей Azure.

Дополнительные сведения о событиях подключения устройства с помощью Сетки событий см. в следующих статьях:

Azure Monitor: перенаправление событий подключения в журналы

Центр Интернета вещей непрерывно передает записи в журналы ресурсов по нескольким категориям операций. В то же время, для получения этих данных из журнала необходимо создать параметр диагностики, чтобы перенаправить журнал в его место назначения, где его можно будет проанализировать или заархивировать. Одним из таких мест назначений являются журналы Azure Monitor через рабочую область Log Analytics (см. цены), где можно проанализировать данные с помощью запросов Kusto.

Центр Интернета вещей категория соединений с журналами ресурсов формирует записи об операциях и ошибках, относящихся к подключениям устройств. На следующем снимке экрана показан параметр диагностики для маршрутизации этих журналов в рабочую область Log Analytics:

Recommended setting to send connectivity logs to Log Analytics workspace.

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

Дополнительные сведения о маршрутизации журналов в место назначения см. в разделе Сбор и маршрутизация. Подробные инструкции по созданию параметров диагностики см. в разделе Руководство по использованию метрик и журналов.

Azure Monitor. Настройка оповещения о метриках отключения устройств

Можно настроить оповещения на основе метрик платформы, передаваемых Центром Интернета вещей. С помощью оповещений о метриках можно уведомлять пользователей о том, что возникло определенное состояние, а также активировать действия, которые могут автоматически реагировать на это состояние.

Метрика Подключенных устройств (предварительная версия) показывает, сколько устройств подключено к Центру Интернета вещей. Можно создать оповещения для активации, если метрика станет ниже порогового значения:

Alert logic settings for connected devices metric.

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

Дополнительные сведения об оповещениях в Центре Интернета вещей см. в разделе Оповещения в мониторе Центра Интернета вещей. Пошаговое руководство по созданию оповещений в Центре Интернета вещей см. в руководстве Использование метрик и журналов. Более подробные сведения об оповещениях см. в разделе Обзор оповещений в Microsoft Azure в документации по Azure Monitor.

Azure Monitor. Использование журналов для разрешения ошибок подключения

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

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

  1. Перейдите в Центр Интернета вещей на портале Azure.

  2. В разделе Наблюдение в левой области Центра Интернета вещей выберите Журналы.

  3. Чтобы выделить журналы ошибок подключения для Центра Интернета вещей, введите следующий запрос в редакторе запросов, а затем выберите Запустить:

    AzureDiagnostics
    | where ( ResourceType == "IOTHUBS" and Category == "Connections" and Level == "Error")
    
  4. В результатах (если они будут) найдите OperationName, ResultType (код ошибки) и ResultDescription (сообщение об ошибке), чтобы получить более подробную информацию.

    Example of error log

Сведения об устранении наиболее распространенных ошибок см. в следующих руководствах:

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:

Screenshot of deviceConnect event in logs.

Поведение отключения устройства 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 минут:

    Error behavior for token renewal over MQTT in Azure Monitor Logs with .NET SDK.

  • Пакет SDK для Java с 300-секундным сроком существования токена (5 минут) и продлением заданным по умолчанию на выполнение при 85 % срока существования. отключение происходит каждые 15 минут:

    Error behavior for token renewal over MQTT in Azure Monitor Logs with Java SDK.

  • Пакет SDK для Node со сроком действия токена 300 секунд (5 минут), а продление токена задано через 3 минуты. Происходит отключение при обновлении токена. Кроме того, не возникает ошибок, выдаются только информационные события о подключении и отключении:

    Error behavior for token renewal over MQTT in Azure Monitor Logs with Node SDK.

Для накопления результатов использовался следующий запрос. Запрос извлекает имя и версию пакета 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

Предложенные шаги не помогли устранить проблему

Если предыдущие действия не помогли, попробуйте следующее.

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