Общие сведения об ошибках Центра Интернета вещей Azure и их устранении

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

400027 Подключение принудительно закрытое новое подключение

Вы можете увидеть ошибку 400027 Подключение ionForcefullyClosedOnNew Подключение ion, если устройство отключается и сообщает Communication_Error как Подключение ionStatusChangeReason с помощью пакета SDK для .NET и типа транспорта MQTT. Либо же двойная операция "с устройства в облако" (например, чтение или исправление сообщаемых свойств) или вызов прямого метода завершается ошибкой с кодом 400027.

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

Чтобы устранить эту ошибку, убедитесь, что каждый клиент подключается к центру Интернета вещей, используя свой собственный идентификатор.

401003 Центр Интернета вещей несанкционированный доступ

В журналах может отображаться закономерность: устройства отключаются с ошибкой 401003 IoTHubUnauthorized, затем возникает ошибка 404104 DeviceConnectionClosedRemotely, после чего устройства вскоре снова успешно подключаются.

Либо же запросы к Центру Интернета вещей завершаются с одним из следующих сообщений об ошибке:

  • Отсутствует заголовок авторизации
  • Центр Интернета вещей "*" не содержит указанное устройство "*".
  • Правило авторизации "*" не разрешает доступ для "*".
  • Сбой проверки подлинности для этого устройства, обновите маркер безопасности или сертификат и подключитесь повторно
  • Отпечаток не соответствует конфигурации: отпечаток: SHA1Hash=*, SHA2Hash=*; Configuration: PrimaryThumbprint=*, SecondaryThumbprint=*.
  • Участник user@example.com не имеет прав на операцию GET в /exampleOperation, так как назначенные разрешения отсутствуют.

Эта ошибка возникает из-за того, что для MQTT некоторые пакеты SDK используют Центр Интернета вещей для инициации отключения, чтобы получить сведения о необходимости обновления, если срок действия маркера SAS истек. Таким образом,

  1. Срок действия маркера SAS истекает
  2. Центр Интернета вещей обнаруживает истечение срока действия и отключает устройство с ошибкой 401003 IoTHubUnauthorized
  3. Устройство завершает отключение с ошибкой 404104 DeviceConnectionClosedRemotely
  4. Пакет SDK для Интернета вещей создает новый маркер SAS
  5. Устройство успешно повторно подключается к Центру Интернета вещей

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

Чтобы устранить эту ошибку, при использовании пакета SDK для Интернета вещей для подключения с помощью строки подключения устройства никаких действий не требуется. Пакет SDK для Интернета вещей повторно создает новый маркер для повторного подключения по истечении срока действия маркера SAS.

Время существования маркера безопасности в пакетах SDK по умолчанию составляет 60 минут, но для некоторых пакетов SDK время существования маркера и пороговое значение обновления маркера можно настроить. Кроме того, ошибки, создаваемые при отключении и повторном подключении устройства при обновлении токена, отличаются в разных пакетах SDK. Дополнительные сведения об определении пакета SDK, используемого устройством в журналах, см. в разделе Поведение при отключении устройства MQTT с использованием пакетов SDK для Интернета вещей Azure.

Если возникает проблема с количеством ошибок, разработчикам устройств рекомендуется переключиться на пакет SDK C, который обновляет маркер SAS до истечения срока его действия. Для AMQP маркер SAS может обновляться без отключения.

Как правило, представленное сообщение об ошибке должно содержать сведения о способе ее исправления. Если по какой-либо причине у вас нет доступа к сведениям сообщения об ошибке, убедитесь, что:

  • Срок действия маркера безопасности SAS или другого используемого маркера безопасности не истек.
  • В случае проверки подлинности сертификата X.509 срок действия сертификата устройства или сертификата ЦС, связанного с устройством, не истек. Сведения о регистрации сертификатов ЦС X.509 с помощью Центр Интернета вещей см. в руководстве по созданию и отправке сертификатов для тестирования.
  • В случае проверки подлинности отпечатка для сертификата X.509 отпечаток сертификата устройства зарегистрирован в Центре Интернета вещей.
  • Учетные данные авторизации правильно сформированы для используемого протокола. Дополнительные сведения см. в разделе Управление доступом к Центру Интернета вещей.
  • Используемое правило авторизации имеет разрешение для запрошенной операции.
  • Для последних сообщений об ошибках, начинающихся с "principal...", ошибку можно устранить, назначив пользователю правильный уровень разрешения RBAC Azure. Например, владелец в Центре Интернета вещей может назначить роль "владелец данных Центра Интернета вещей", которая предоставляет все разрешения. Попробуйте эту роль, чтобы решить проблему отсутствия разрешений.

Примечание.

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

Часто синхронизация времени с помощью NTP или перезагрузки устройства (которая может автоматически выполнять синхронизацию времени во время загрузки) исправляет проблему и позволяет устройству снова подключиться. Чтобы избежать этой ошибки, настройте устройство для периодической синхронизации времени с помощью NTP. Вы можете запланировать синхронизацию для ежедневной, еженедельной или ежемесячной в зависимости от объема смещения возможностей устройства. Если на устройстве не удается настроить периодическую синхронизацию NTP, запланируйте периодическую перезагрузку.

превышена квота 403002 Центр Интернета вещей

Запросы к Центру Интернета вещей могут завершаться ошибкой 403002 IoTHubQuotaExceeded. Кроме того, на портале Azure не загружается список устройств Центра Интернета вещей.

Эта ошибка обычно возникает, когда превышена ежедневная квота на сообщения для Центра Интернета вещей. Устранение ошибки

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

превышена максимальная глубина очереди устройства 403004

При попытке отправить сообщение из облака на устройство может произойти сбой запроса с ошибкой 403004 или DeviceMaximumQueueDepthExceeded.

Основная причина этой ошибки заключается в том, что количество сообщений в очереди для устройства превысило ограничение очереди.

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

Схема сообщений, передаваемых из облака на устройство с помощью HTTPS, может использоваться на периодически подключаемых устройствах, которые редко проверяют наличие новых сообщений (реже, чем раз в 25 минут). Чтобы снизить вероятность достижения ограничений очереди, переключитесь на механизм AMQP или MQTT для сообщений, отправляемых из облака на устройство.

Также вы можете оптимизировать логику на стороне устройства для быстрой обработки (завершения, отклонения или отмены) поставленных в очередь сообщений, сократить срок жизни этих сообщений или снизить число сообщений. См. о сроке жизни сообщений, отправляемых из облака на устройство.

Наконец, рекомендуем применять API очистки очереди для периодического удаления ожидающих сообщений до достижения ограничения.

403006 превышено максимальное ограничение на отправку файлов с устройством

Возможно, запрос на отправку файла завершается сбоем с кодом ошибки 403006 DeviceMaximumActiveFileUploadLimitExceed , а сообщение "Число активных запросов на отправку файлов не может превышать 10".

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

Чтобы устранить эту ошибку, убедитесь, что устройство может оперативно уведомлять о завершении отправки файлов в Центре Интернета вещей. Затем попробуйте уменьшить срок жизни маркера SAS для конфигурации отправки файла.

404001 устройство не найдено

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

Сбой операции, так как Центр Интернета вещей не удается найти устройство. Устройство не зарегистрировано или отключено.

Чтобы устранить эту ошибку, зарегистрируйте устройство с тем идентификатором, который вы использовали, и повторите попытку.

404103 устройство не подключено к сети

Прямой метод для устройства может завершиться ошибкой 404103 DeviceNotOnline, даже если устройство работает и подключено к сети.

Если вы уверены, что устройство находится в сети, но эта ошибка по-прежнему возникает, она может быть вызвана тем, что на устройстве не зарегистрирован обратный вызов прямого метода.

Чтобы правильно настроить на устройстве обратные вызовы прямых методов, воспользуйтесь статьей Обработка прямого метода на устройстве.

404104 удаленное подключение устройства

Устройства могут отключаться через равные промежутки времени (например, каждые 65 минут), а в журналах ресурсов Центра Интернета вещей появляются записи 404104 DeviceConnectionClosedRemotely. Иногда также можно увидеть запись 401003 IoTHubUnauthorized и событие успешного подключения устройства меньше, чем через минуту.

Либо же устройства отключаются случайным образом, а в журналах ресурсов Центра Интернета вещей появляются записи 404104 DeviceConnectionClosedRemotely.

Либо же отключается большое количество устройств одновременно, вы наблюдаете спад в метрике подключенных устройств (connectedDeviceCount), а в журналах Azure Monitor больше записей 404104 DeviceConnectionClosedRemotely и внутренних ошибок 500xxx, чем обычно.

Эта ошибка может возникнуть потому, что истек срок действия маркера SAS, используемого для подключения к Центру Интернета вещей, из-за чего Центр Интернета вещей отключается от устройства. Подключение восстанавливается после обновления маркера устройством. Например, срок действия маркера SAS истекает каждый час по умолчанию для пакета SDK C, что может привести к периодическим отключениям. Дополнительные сведения см. в разделе 401003 IoTHubUnauthorized.

Помимо прочих, возможны следующие варианты:

  • Устройство потеряло подключение к сети на время, превышающее значение проверки активности MQTT, что приводит к превышению тайм-аута простоя удаленного устройства. Параметр проверки активности MQTT может быть разным для каждого устройства.
  • Устройство отправило команду сброса на уровне TCP/IP, но не отправило MQTT DISCONNECT на уровне приложения. По сути, устройство внезапно прервало базовое подключение к сокету. Иногда эта проблема вызвана ошибками в более ранних версиях пакета SDK для Интернета вещей Azure.
  • Аварийное завершение работы приложения на стороне устройства.

Либо, возможно, в Центре Интернета вещей возникла временная проблема. См. раздел Внутренние ошибки 500xxx.

Устранение ошибки

  • См. раздел 401003 IoTHubUnauthorized.
  • Убедитесь в наличии стабильного подключения устройства к Центру Интернета вещей с помощью проверки подключения. Если сетевое подключение ненадежное или прерывистое, мы не рекомендуем увеличивать значение проверки активности, так как это может привести к задержке обнаружения (например, через оповещения Azure Monitor).
  • Используйте последние версии пакетов SDK для Интернета вещей.
  • См. раздел Внутренние ошибки 500xxx.

Для надежного управления подключениями рекомендуется использовать пакеты SDK для устройств Azure IoT. Дополнительные сведения см. в статье Управление возможностью подключения и надежным обменом сообщениями с помощью пакетов SDK для устройств Центра Интернета вещей Azure.

устройство 409001 уже существует

При попытке зарегистрировать устройство в центре Интернета вещей может произойти сбой запроса с ошибкой 409001 DeviceAlreadyExists.

Эта ошибка возникает из-за того, что в Центре Интернета вещей уже есть устройство с таким же идентификатором.

Чтобы устранить эту ошибку, укажите другой идентификатор устройства и повторите попытку.

В журналах может отображаться ошибка 409002 LinkCreationConflict наряду с другими ошибками, которые сообщают об отключении устройства или сбое передачи сообщений из облака на устройство.

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

В большинстве случаев отключение устройства происходит из-за другой ошибки (например, 404104 DeviceConnectionClosedRemotely). Сразу после этого устройство пытается возобновить подключение, но Центр Интернета вещей еще считает его подключенным. Центр Интернета вещей закрывает предыдущее подключение и записывает эту ошибку.

Либо же некорректная логика на стороне устройства приводит к тому, что устройство пытается установить подключение при наличии открытого подключения.

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

412002 блокировка сообщения устройства потеряла

При попытке отправить сообщение из облака на устройство может произойти сбой запроса и возвращается ошибка 412002 DeviceMessageLockLost.

Эта ошибка возникает из-за того, что, когда устройство получает из очереди сообщение, переданное из облака на устройство (например, с помощью ReceiveAsync()), это сообщение блокируется Центром Интернета вещей на одну минуту в соответствии с временем ожидания блокировки. Если устройство попытается продолжить обработку сообщения по истечении времени ожидания блокировки, Центр Интернета вещей создает такое исключение.

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

исключение регулирования 429001

Ваши запросы к Центру Интернета вещей могут завершиться сбоем с ошибкой 429001 ThrottlingException.

Эта ошибка возникает, если в Центре Интернета вещей превышены ограничения регулированиядля запрошенной операции.

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

Центр Интернета вещей возвращает ошибку 429 ThrottlingException только в том случае, если ограничение превышено в течение длительного времени. Это делается для того, чтобы ваши сообщения не удалялись при внезапном увеличении объема трафика к центру Интернета вещей. В то же время Центр Интернета вещей обрабатывает сообщения на скорости регулирования операций, которая может быть низкой, если не обработан слишком большой объем трафика. См. о формировании трафика Центра Интернета вещей.

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

Внутренние ошибки 500xxx

Вы можете увидеть, что запрос на Центр Интернета вещей завершается ошибкой, которая начинается с 500 и/или какой-то ошибки сервера. Ниже приведены некоторые возможности.

  • 500001 ServerError. В Центре Интернета вещей возникла ошибка на стороне сервера.

  • 500008 GenericTimeout. Центру Интернета вещей не удалось завершить запрос на подключение до истечения времени ожидания.

  • ServiceUnavailable (без кода ошибки). В Центре Интернета вещей произошла внутренняя ошибка.

  • InternalServerError (без кода ошибки). В Центре Интернета вещей произошла внутренняя ошибка.

Существует множество причин для ответа на ошибку 500xxx. Любая из них чаще всего является временной. Команда по работе с Центром Интернета вещей прикладывает все усилия, чтобы выполнять гарантии Соглашения об уровне обслуживания, но в работе небольших подмножеств узлов Центра Интернета вещей иногда могут возникать сбои. Если устройство пытается подключиться к узлу со сбоем, возникает эта ошибка.

Чтобы устранить ошибки с кодами 500xxx, выполните повторную попытку на устройстве. Чтобы автоматически управлять повторами, используйте последнюю версию пакетов SDK для Azure IoT. Рекомендации по исправлению временных ошибок и повторном подключении см. в этой статье.

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

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

Раздел 503003 не найден

Запросы в Центр Интернета вещей могут завершаться ошибкой 503003 PartitionNotFound.

Эта ошибка является внутренней для Центра Интернета вещей и чаще всего временной. См. раздел Внутренние ошибки 500xxx.

Чтобы устранить эту ошибку, см. раздел Внутренние ошибки 500xxx.

время ожидания шлюза 504101

При попытке вызвать прямой метод устройства из Центра Интернета вещей может произойти сбой запроса с ошибкой 504101 GatewayTimeout.

Эта ошибка возникает из-за того, что в Центре Интернета вещей произошла ошибка и не удалось подтвердить, завершилось ли выполнение прямого метода до истечения времени ожидания. Кроме того, при использовании более ранней версии пакета SDK Azure IoT для C# (<1.19.0) связь AMQP между устройством и Центром Интернета вещей может быть автоматически удалена из-за ошибки.

Чтобы устранить эту ошибку, повторите попытку или выполните обновление до последней версии пакета SDK Azure IoT для C#.