Partager via


Résolution des problèmes de routage des messages

Cet article fournit des conseils de surveillance et de résolution des problèmes courants pour le routage des messages IoT Hub.

Surveillance du 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 obtenir un didacticiel, consultez Configurer et utiliser des métriques et des 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. Ces messages peuvent être conservés dans le point de terminaison intégré pendant 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, sélectionnez le problème pour obtenir des étapes détaillées.

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

Pour résoudre ce problème, analysez les informations suivantes.

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 de point de terminaison spécifique et une raison pour laquelle le message n’a pas été remis.

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

Observez les journaux des ressources 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 approprié pour mieux comprendre le problème. Par exemple, le nom de l’opération RouteEvaluationError dans le journal indique que nous n’avons pas pu évaluer l’itinéraire, car nous avons rencontré 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 le point de terminaison n’a plus d’espace.

L’intégrité du point de terminaison

Utilisez l’API REST Get Endpoint Health pour obtenir l’état d’intégrité des points de terminaison. Cette API fournit également des informations sur la dernière fois qu’un message a é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 l’atténuation possible fournie 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 informations suivantes.

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 les messages continuent de circuler vers le point de terminaison intégré si un nouvel itinéraire est ajouté, configurez un itinéraire vers le point de terminaison d’événements .

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

L’itinéraire de secours envoie tous les messages qui ne répondent à aucune des conditions de requête sur les 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. Si aucun itinéraire ne mène vers le point de terminaison intégré et qu’un itinéraire de secours est activé, seuls les messages qui ne correspondent à 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 et la dernière erreur connue, pour identifier la raison pour laquelle un point de terminaison n’est pas sain. Ce tableau 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 IoT Hub réessayera l’opération. Observez les journaux de ressources des routes.
Erreur Interne Une erreur s’est produite lors de la remise 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ée 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 elle a changé, envisagez une mise à jour sur votre IoT Hub. Si le point de terminaison utilise une identité managée, vérifiez que le principal IoT Hub dispose des autorisations requises sur la cible.
Accéléré IoT Hub est soumis à une limitation de débit pendant l’écriture de messages dans le point de terminaison. Passez en revue les limites de bande passante pour le point d'accès concerné. Modifiez les configurations du point de terminaison pour effectuer un scale-up si nécessaire.
Délai d'expiration Délai d’expiration de l’opération. Réessayez l’opération.
Introuvable La ressource cible n’existe pas. Vérifiez que la ressource cible existe.
Conteneur introuvable Le conteneur de stockage n’existe pas. Vérifiez que le conteneur de stockage existe.
Conteneur désactivé Le conteneur de stockage est désactivé. Vérifiez 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 routée a dépassé cette limite. Vérifiez si la taille des messages peut être réduite en utilisant moins de propriétés d’application ou moins d’enrichissements de messages.
PartitionnementetDuplicateDetectionNonSupported Le bus de service pourrait ne pas avoir la détection de doublons activée. Désactivez la détection des doublons dans Service Bus ou envisagez d’utiliser une entité sans détection des doublons.
SessionfulEntityNotSupported Service Bus n’a peut-être pas de sessions activées. Désactivez la session à partir de Service Bus ou envisagez d’utiliser une entité sans sessions.
NoMatchingSubscriptionsForMessage Il n’existe aucun abonnement pour écrire un message dans la rubrique Service Bus. Créez un abonnement pour que les messages IoT Hub soient routés vers.
EndpointExternallyDisabled Le point de terminaison n’est pas dans un état actif afin qu’IoT Hub puisse y envoyer des messages. Activez le point de terminaison pour le ramener à l’état actif.
DeviceMaximumQueueDepthExceeded La limite de taille de Service Bus a été atteinte. Envisagez de supprimer les messages des hubs d’événements cibles pour permettre l’ingestion de nouveaux messages dans Event Hubs.

Journaux de ressources des routes

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

Noms des opérations

Nom de l’opération Niveau Descriptif
UndefinedRouteEvaluation Informations Le message ne peut pas être évalué avec une condition d’octroi. 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 Erreur 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 enregistrée si l’encodage de contenu n’est pas spécifié ou si le type de contenu n’est pas valide dans le message. Celles-ci doivent être définies dans les propriétés système.
DroppedMessage Erreur 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 point de terminaison a été mort et le message n’a pas pu être remis après plusieurs nouvelles tentatives. Nous vous recommandons d'obtenir plus de détails sur l'état du point de terminaison en utilisant l'API REST get endpoint health.
Point de terminaison insalubre Erreur Le point de terminaison n’a pas accepté les messages d’IoT Hub et 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 Erreur Le point de terminaison n’a pas accepté les messages d’IoT Hub depuis 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.
EndpointSain Informations Le point de terminaison est sain et reçoit des messages à partir d’IoT Hub. Ce message n’est pas journalisé en continu, mais enregistré uniquement lorsque le point de terminaison devient sain à nouveau. Ce message signifie qu’IoT Hub n’a pas pu envoyer de messages au point de terminaison, mais que le point de terminaison est maintenant sain.
OrphelinMessage Informations Le message ne correspond à aucun des itinéraires.
Message invalide Erreur Le message n’est pas valide en raison de l’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 pas plus d’une fois par minute par IoT Hub.

Codes d’erreur courants

Code d’erreur Descriptif
401002 Accès non autorisé au Hub IoT
413001 Message trop volumineux
403004 Profondeur maximale de file d’attente du périphérique dépassée
503008 Lien de réception limité
500 000 Erreur du serveur générique
401 Non autorisée
503 Service indisponible
500001 Erreur du 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.