Partager via


Résoudre les problèmes de routage des messages

Cet article apporte des conseils de surveillance et de dépannage pour les problèmes courants et la résolution des problèmes liés au routage des messages IoT Hub.

Surveiller le routage des messages

Nous vous recommandons de surveiller les mesures IoT Hub relatives au routage des messages et aux points de terminaison pour obtenir une vue d’ensemble des messages envoyés. Vous pouvez également créer un paramètre de diagnostic pour envoyer des opérations pour des itinéraires dans des journaux de ressources IoT Hub aux journaux Azure Monitor, à Event Hubs ou au stockage Azure en vue d’un traitement personnalisé. Pour en savoir plus sur l’utilisation des métriques, des journaux de ressources et des paramètres de diagnostic, consultez Surveiller IoT Hub. Pour un didacticiel, consultez Configurer et utiliser les métriques et journaux de ressources avec un hub IoT.

Nous vous recommandons également d’activer l’itinéraire de secours si vous souhaitez conserver les messages qui ne correspondent pas à la requête sur l’une des routes. Celles-ci peuvent être conservées dans le point de terminaison intégré pour le nombre de jours de conservation des données configuré.

Problèmes principaux

Voici les problèmes les plus courants rencontrés avec le routage des messages. Pour commencer la résolution des problèmes, cliquez sur le problème afin d’obtenir des instructions détaillées.

Les messages de mes appareils ne sont pas routés comme prévu

Pour résoudre ce problème, analysez les éléments suivants.

Les métriques de routage pour ce point de terminaison

Toutes les métriques IoT Hub liées au routage sont précédées de Routage. Vous pouvez combiner les informations de plusieurs métriques pour identifier la cause racine des problèmes. Par exemple, utilisez la métrique Livraisons de routage pour identifier le nombre de messages qui ont été livrés à un point de terminaison, ou supprimés quand ils ne correspondaient pas aux requêtes sur aucune des routes et que la route de secours était désactivée. Vérifiez la métrique de latence du routage pour déterminer si la latence de la livraison des messages est stable ou en constante augmentation. Une latence croissante peut indiquer un problème avec un point de terminaison spécifique et nous vous recommandons de vérifier l’intégrité du point de terminaison. Ces métriques de routage ont également des dimensions qui fournissent des détails sur la métrique comme le type de point de terminaison, le nom du point de terminaison spécifique et la raison pour laquelle le message n’a pas été livré.

Les journaux de ressource pour les problèmes opérationnels

Observez les Journaux de ressources des routes pour obtenir plus d’informations sur les opérations de routage et de point de terminaison ou identifier les erreurs et le code d’erreur correspondant pour mieux comprendre le problème. Par exemple, le nom de l’opération RouteEvaluationError dans le journal indique que l’itinéraire n’a pas pu être évalué en raison d’un problème avec le format du message. Utilisez les conseils fournis pour les noms d’opération spécifiques pour résoudre le problème. Lorsqu’un événement est consigné comme une erreur, le journal fournit également plus d’informations sur la raison de l’échec de l’évaluation. Par exemple, si le nom de l’opération est EndpointUnhealthy, un code d’erreur de 403004 indique que l’espace du point de terminaison est insuffisant.

L’intégrité du point de terminaison

Utilisez l’API REST Obtenir l’intégrité du point de terminaison pour obtenir l’état d’intégrité des points de terminaison. L’API Obtenir l’intégrité du point de terminaison fournit également des informations sur la dernière fois qu’un message a bien été envoyé au point de terminaison, la dernière erreur connue, l’heure de la dernière erreur connue et la dernière fois qu’une tentative d’envoi a été effectuée pour ce point de terminaison. Utilisez la résolution possible proposée pour la dernière erreur connue spécifique.

J’ai soudainement cessé de recevoir des messages au point de terminaison intégré

Pour résoudre ce problème, analysez les éléments suivants.

Une nouvelle route a-t-elle été créée ?

Une fois qu’une route est créée, les données cessent de circuler vers le point de terminaison intégré, sauf si une route est créée vers ce point de terminaison. Pour garantir que la circulation des messages vers le point de terminaison intégré malgré l’ajout d’une nouvelle route, configurez une route vers le point de terminaison d’événements.

L’itinéraire de secours a-t-elle été désactivée ?

L’itinéraire de secours envoie tous les messages qui ne satisfont à aucune des conditions de la requête sur l’un des itinéraires existants vers les hubs d’événements intégrés (messages/événements) compatibles avec Event Hubs. Si le routage des messages est activé, vous pouvez activer la fonctionnalité de route de secours. S’il n’existe pas d’itinéraire vers le point de terminaison intégré et qu’un itinéraire de secours est activé, seuls les messages qui ne satisfont à aucune des conditions de la requête sur les itinéraires sont envoyés au point de terminaison intégré. Par ailleurs, si tous les itinéraires existants sont supprimés, l’itinéraire de secours doit être activé pour recevoir toutes les données sur le point de terminaison intégré.

L’itinéraire de secours peut être activé et désactivé sur le Portail Azure à l’aide du panneau Routage des messages du hub IoT. Vous pouvez également utiliser Azure Resource Manager afin que FallbackRouteProperties emploie un point de terminaison personnalisé pour un itinéraire de secours.

Les dernières erreurs connues pour les points de terminaison de routage IoT Hub

Obtenir l’intégrité du point de terminaison dans l’API REST donne l’état d’intégrité des points de terminaison, ainsi que la dernière erreur connue, afin d’identifier la raison pour laquelle un point de terminaison n’est pas sain. Le tableau ci-dessous répertorie les erreurs les plus courantes.

Dernière erreur connue Description/lorsqu’elle se produit Atténuation possible
Temporaire Une erreur temporaire s’est produite et l’IoT Hub retentera l’opération. Observez les journaux de ressources des routes.
InternalError Une erreur s’est produite lors de la transmission d’un message à un point de terminaison. Il s’agit d’une exception interne, mais observez également les journaux de ressources des itinéraires.
Non autorisé L’IoT Hub n’est pas autorisé à envoyer des messages au point de terminaison spécifié. Vérifiez que la chaîne de connexion est à jour pour le point de terminaison. Si une modification a été apportée, envisagez une mise à jour sur votre IoT Hub. Si le point de terminaison utilise l’identité managée, vérifiez que l’IoT Hub principal dispose des autorisations requises sur la cible.
Throttled L’IoT Hub est limité lors de l’écriture de messages dans le point de terminaison. Passez en revue les seuils de limitation pour le point de terminaison affecté. Modifiez les configurations pour que le point de terminaison soit mis à l’échelle si nécessaire.
Délai d'expiration Délai d’expiration de l’opération. Retentez l’opération.
Introuvable La ressource cible n’existe pas. Assurez-vous que la ressource cible existe.
Conteneur introuvable Le conteneur de stockage n’existe pas. Assurez-vous que le conteneur de stockage existe.
Conteneur désactivé Le conteneur de stockage est désactivé. Assurez-vous que le conteneur de stockage est activé.
MaxMessageSizeExceeded Le routage des messages a une limite de taille de message de 256 Ko. La taille du message en cours de routage a dépassé cette limite. Vérifiez si la taille des messages peut être réduite en utilisant moins de propriétés de l’application ou moins d’enrichissements de messages.
PartitioningAndDuplicateDetectionNotSupported La détection des doublons n’est peut-être pas activée pour service bus. Désactivez la détection des doublons de Service Bus ou utilisez une entité sans détection des doublons.
SessionfulEntityNotSupported Les sessions ne sont peut-être pas activées pour service bus. Désactivez la session de Service Bus ou utilisez une entité sans sessions.
NoMatchingSubscriptionsForMessage Il n’existe aucun abonnement pour écrire des messages dans la rubrique service bus. Créez un abonnement pour que les messages de l’IoT Hub y soient acheminés.
EndpointExternallyDisabled Le point de terminaison n’est pas dans un état actif, l’IoT Hub peut donc lui envoyer des messages. Activez le point de terminaison pour rétablir l’état actif.
DeviceMaximumQueueDepthExceeded La taille maximale de service bus a été atteinte. Envisagez de supprimer des messages de la cible Event Hubs pour permettre l’ingestion de nouveaux messages dans les Event Hubs.

Journaux de ressources des routes

Voici les noms des opérations et les codes d’erreur consignés dans les journaux des ressources de ressources.

Noms des opérations

Nom d’opération Level Description
UndefinedRouteEvaluation Information Le message ne peut pas être évalué avec une condition d’attribution. Par exemple, si une propriété de la condition de requête d’itinéraire est absente du message. En savoir plus sur la syntaxe de requête de routage.
RouteEvaluationError Error Une erreur s’est produite lors de l’évaluation du message en raison d’un problème avec le format du message. Par exemple, cette erreur est journalisée si l’encodage du contenu n’est pas spécifié ou si le type de contenu n’est pas valide dans le message. Cela doit être défini dans les propriétés du système.
DroppedMessage Error Le message a été supprimé et n’a pas été routé. Cela peut être dû à des raisons telles que le message ne correspond à aucune requête de routage ou que le point de terminaison était mort et que le message n’a pas pu être remis après plusieurs tentatives. Nous vous recommandons d’obtenir plus de détails sur le point de terminaison à l’aide de l’API REST Obtenir l’intégrité du point de terminaison.
EndpointUnhealthy Error Le point de terminaison n’a pas accepté les messages du IoT Hub et le IoT Hub tente de renvoyer les messages. Nous vous recommandons d’observer la dernière erreur connue via l’API REST Obtenir l’intégrité du point de terminaison.
EndpointDead Error Le point de terminaison n’a pas accepté les messages du IoT Hub pendant plus d’une heure. Nous vous recommandons d’observer la dernière erreur connue via l’API REST Obtenir l’intégrité du point de terminaison.
EndpointHealthy Information Le point de terminaison est sain et reçoit des messages du IoT Hub. Ce message n’est pas journalisé en continu, mais enregistré uniquement lorsque le point de terminaison redevient sain. Ce message signifie que le IoT Hub n’a pas pu envoyer des messages au point de terminaison, mais que le point de terminaison est maintenant sain.
OrphanedMessage Information Le message ne correspond à aucun itinéraire.
InvalidMessage Error Le message n’est pas valide en raison d’une incompatibilité avec le point de terminaison. Nous vous recommandons de vérifier les configurations du point de terminaison.

Les opérations UndefinedRouteEvaluation, RouteEvaluationError et OrphanedMessage sont limitées et enregistrées au plus une fois par minute par IoT Hub.

Common error codes (Codes d’erreur courants)

Code d'erreur Description
401002 Accès non autorisé au Hub IoT
413001 Message trop long
403004 Profondeur maximale de file d’attente du périphérique dépassée
503008 Lien de réception limité
500000 Erreur de serveur générique
401 Non autorisé
503 Service indisponible
500001 Erreur de serveur
400103 Encodage de contenu ou type de contenu non valide
404001 Appareil introuvable

Étapes suivantes

Si vous avez besoin d’aide supplémentaire, vous avez la possibilité de contacter les experts Azure sur les forums Microsoft Q&A et Stack Overflow. Vous pouvez également signaler un incident au support Azure. Accédez au site du support Azure , puis cliquez sur Obtenir un support.