Problemen met berichtroutering oplossen

Dit artikel bevat richtlijnen voor bewaking en probleemoplossing voor veelvoorkomende problemen en oplossing voor ioT Hub-berichtroutering.

Berichtroutering bewaken

We raden u aan om metrische Gegevens van IoT Hub te controleren die betrekking hebben op berichtroutering en eindpunten , zodat u een overzicht krijgt van de verzonden berichten. U kunt ook een diagnostische instelling maken voor het verzenden van bewerkingen voor routes in IoT Hub-resourcelogboeken naar Azure Monitor-logboeken , Event Hubs of Azure Storage voor aangepaste verwerking. Zie IoT Hub bewaken voor meer informatie over het gebruik van metrische gegevens, resourcelogboeken en diagnostische instellingen. Zie Voor een zelfstudie metrische gegevens en resourcelogboeken instellen en gebruiken met een IoT-hub.

U wordt ook aangeraden de terugvalroute in te schakelen als u berichten wilt onderhouden die niet overeenkomen met de query op een van de routes. Deze kunnen worden bewaard in het ingebouwde eindpunt voor de hoeveelheid retentiedagen die zijn geconfigureerd.

Belangrijkste problemen

Hier volgen de meest voorkomende problemen met berichtroutering. Als u wilt beginnen met het oplossen van problemen, klikt u op het probleem voor gedetailleerde stappen.

Berichten van mijn apparaten worden niet gerouteerd zoals verwacht

Als u dit probleem wilt oplossen, analyseert u het volgende.

De metrische routeringsgegevens voor dit eindpunt

Alle metrische IoT Hub-gegevens met betrekking tot routering worden voorafgegaan door Routering. U kunt informatie uit meerdere metrische gegevens combineren om de hoofdoorzaak voor problemen te identificeren. Gebruik bijvoorbeeld metrische routeringsleveringen om het aantal berichten te identificeren dat aan een eindpunt is bezorgd of verwijderd wanneer ze niet overeenkomen met query's op een van de routes en terugvalroute is uitgeschakeld. Controleer de metrische gegevens voor routeringslatentie om te controleren of de latentie voor berichtbezorging stabiel is of toeneemt. Een groeiende latentie kan duiden op een probleem met een specifiek eindpunt en we raden u aan de status van het eindpunt te controleren. Deze metrische routeringsgegevens hebben ook dimensies die details bevatten over de metrische gegevens, zoals het eindpunttype, een specifieke eindpuntnaam en een reden waarom het bericht niet is bezorgd.

De resourcelogboeken voor operationele problemen

Bekijk de resourcelogboeken routes voor meer informatie over de routerings- en eindpuntbewerkingen of identificeer fouten en relevante foutcode om het probleem verder te begrijpen. De bewerkingsnaam RouteEvaluationError in het logboek geeft bijvoorbeeld aan dat de route niet kan worden geëvalueerd vanwege een probleem met de berichtindeling. Gebruik de tips voor de specifieke bewerkingsnamen om het probleem te verhelpen. Wanneer een gebeurtenis wordt geregistreerd als een fout, geeft het logboek ook meer informatie over waarom de evaluatie is mislukt. Als de naam van de bewerking bijvoorbeeld EndpointUnhealthy is, geeft een foutcode van 403004 aan dat het eindpunt onvoldoende ruimte heeft.

De status van het eindpunt

Gebruik de REST API Get Endpoint Health om de status van de eindpunten op te halen. De Get Endpoint Health-API biedt ook informatie over de laatste keer dat een bericht naar het eindpunt is verzonden, de laatst bekende fout, de laatst bekende fouttijd en de laatste keer dat er een verzendpoging is uitgevoerd voor dit eindpunt. Gebruik de mogelijke beperking die is opgegeven voor de specifieke laatst bekende fout.

Ik ben plotseling gestopt met het ontvangen van berichten op het ingebouwde eindpunt

Als u dit probleem wilt oplossen, analyseert u het volgende.

Is er een nieuwe route gemaakt?

Zodra een route is gemaakt, worden gegevens niet meer naar het ingebouwde eindpunt gestroomd, tenzij er een route naar dat eindpunt wordt gemaakt. Om ervoor te zorgen dat berichten blijven stromen naar het ingebouwde eindpunt als er een nieuwe route wordt toegevoegd, configureert u een route naar het eindpunt van de gebeurtenis .

Is de terugvalroute uitgeschakeld?

De terugvalroute verzendt alle berichten die niet voldoen aan een van de queryvoorwaarden op een van de bestaande routes naar de ingebouwde Event Hubs (berichten/gebeurtenissen), die compatibel zijn met Event Hubs. Als berichtroutering is ingeschakeld, kunt u de mogelijkheid voor terugvalroute inschakelen. Als er geen routes naar het ingebouwde eindpunt zijn en er een terugvalroute is ingeschakeld, worden alleen berichten die niet overeenkomen met queryvoorwaarden op routes verzonden naar het ingebouwde eindpunt. Als alle bestaande routes worden verwijderd, moet de terugvalroute ook worden ingeschakeld om alle gegevens op het ingebouwde eindpunt te ontvangen.

U kunt de terugvalroute in- of uitschakelen in Azure Portal met behulp van de blade Berichtroutering voor de IoT-hub. U kunt ook Azure Resource Manager voor FallbackRouteProperties gebruiken om een aangepast eindpunt te gebruiken voor een terugvalroute.

Laatst bekende fouten voor IoT Hub-routeringseindpunten

Eindpuntstatus ophalen in de REST API geeft de status van de eindpunten, evenals de laatst bekende fout, om te achterhalen waarom een eindpunt niet in orde is. De onderstaande tabel bevat de meest voorkomende fouten.

Laatst bekende fout Beschrijving/wanneer deze plaatsvindt Mogelijke beperking
Tijdelijk Er is een tijdelijke fout opgetreden en IoT Hub probeert de bewerking opnieuw uit te voeren. Bekijk resourcelogboeken voor routes.
InternalError Er is een fout opgetreden tijdens het bezorgen van een bericht aan een eindpunt. Dit is een interne uitzondering, maar bekijk ook de resourcelogboeken van routes.
Niet geautoriseerd IoT Hub is niet gemachtigd om berichten naar het opgegeven eindpunt te verzenden. Controleer of de verbindingsreeks up-to-date is voor het eindpunt. Als deze is gewijzigd, kunt u een update voor uw IoT Hub overwegen. Als het eindpunt beheerde identiteit gebruikt, controleert u of de IoT Hub-principal over de vereiste machtigingen voor het doel beschikt.
Beperkt IoT Hub wordt beperkt tijdens het schrijven van berichten naar het eindpunt. Controleer de beperkingslimieten voor het betrokken eindpunt. Wijzig zo nodig configuraties voor het eindpunt om omhoog te schalen.
Timeout Time-out voor bewerking. Voer de bewerking opnieuw uit.
Niet gevonden Doelresource bestaat niet. Zorg ervoor dat de doelresource bestaat.
Container niet gevonden Opslagcontainer bestaat niet. Zorg ervoor dat de opslagcontainer bestaat.
Container uitgeschakeld Opslagcontainer is uitgeschakeld. Zorg ervoor dat de opslagcontainer is ingeschakeld.
MaxMessageSizeExceeded Berichtroutering heeft een berichtgrootte van 256Kb. De berichtgrootte die wordt gerouteerd, heeft deze limiet overschreden. Controleer of de berichtgrootte kan worden verkleind door minder toepassingseigenschappen of minder berichtverrijkingen te gebruiken.
PartitioningAndDuplicateDetectionNotSupported Service Bus heeft mogelijk geen dubbele detectie ingeschakeld. Schakel dubbele detectie van Service Bus uit of overweeg om een entiteit te gebruiken zonder dubbele detectie.
SessionfulEntityNotSupported Service Bus heeft mogelijk geen sessies ingeschakeld. Schakel de sessie uit van Service Bus of overweeg het gebruik van een entiteit zonder sessies.
NoMatchingSubscriptionsForMessage Er is geen abonnement om een bericht te schrijven in het service bus-onderwerp. Maak een abonnement voor IoT Hub-berichten waarnaar moet worden gerouteerd.
EndpointExternallyDisabled Het eindpunt heeft geen actieve status, zodat IoT Hub berichten naar het eindpunt kan verzenden. Schakel het eindpunt in om het terug te brengen naar de actieve status.
DeviceMaximumQueueDepthExceeded De servicebusgroottelimiet is bereikt. Overweeg om berichten uit de doel-Event Hubs te verwijderen, zodat nieuwe berichten in de Event Hubs kunnen worden opgenomen.

Resourcelogboeken routeren

Hier volgen de bewerkingsnamen en foutcodes die zijn vastgelegd in de resourcelogboeken van de routes.

Bewerkingsnamen

Naam van bewerking Niveau Beschrijving
UndefinedRouteEvaluation Gegevens Het bericht kan niet worden geëvalueerd met een opgegeven voorwaarde. Als een eigenschap in de routequeryvoorwaarde bijvoorbeeld ontbreekt in het bericht. Meer informatie over de syntaxis van routeringsquery's.
RouteEvaluationError Error Er is een fout opgetreden bij het evalueren van het bericht vanwege een probleem met de berichtindeling. Deze fout wordt bijvoorbeeld geregistreerd als de inhoudscodering niet is opgegeven of het inhoudstype niet geldig is in het bericht. Deze moeten worden ingesteld in de systeemeigenschappen.
DroppedMessage Error Bericht is verwijderd en niet gerouteerd. Dit kan worden veroorzaakt door redenen als het bericht niet overeenkomt met een routeringsquery of eindpunt is dood en het bericht kan niet worden bezorgd na verschillende nieuwe pogingen. We raden u aan om meer informatie over het eindpunt te krijgen met behulp van de REST API voor eindpuntstatus.
EndpointUnhealthy Error Het eindpunt accepteert geen berichten van IoT Hub en IoT Hub probeert de berichten opnieuw te verzenden. U wordt aangeraden de laatst bekende fout te observeren via de REST API voor het ophalen van de eindpuntstatus.
EndpointDead Error Het eindpunt accepteert gedurende meer dan een uur geen berichten van IoT Hub. U wordt aangeraden de laatst bekende fout te observeren via de REST API voor het ophalen van de eindpuntstatus.
EndpointHealthy Gegevens Het eindpunt is in orde en ontvangt berichten van IoT Hub. Dit bericht wordt niet continu geregistreerd, maar wordt alleen geregistreerd wanneer het eindpunt weer in orde is. Dit bericht betekent dat IoT Hub geen berichten naar het eindpunt kan verzenden, maar dat het eindpunt nu in orde is.
OrphanedMessage Gegevens Het bericht komt niet overeen met een route.
InvalidMessage Error Bericht is ongeldig vanwege incompatibiliteit met het eindpunt. U wordt aangeraden de configuraties van het eindpunt te controleren.

De bewerkingen UndefinedRouteEvaluation, RouteEvaluationError en OrphanedMessage worden beperkt en niet meer dan één keer per minuut per IoT Hub geregistreerd.

Veelvoorkomende foutcodes

Foutcode Beschrijving
401002 Niet-geautoriseerde toegang via IoT Hub
413001 Bericht is te groot
403004 Maximale wachtrijdiepte van apparaat overschreden
503008 Koppeling ontvangen beperkt
500.000 Algemene serverfout
401 Niet geautoriseerd
503 Service niet beschikbaar
500001 Serverfout
400103 Ongeldige inhoudscodering of inhoudstype
404001 Apparaat niet gevonden

Volgende stappen

Als u meer hulp nodig hebt, kunt u contact opnemen met de Azure-experts op de Microsoft Q&A- en Stack Overflow-forums. U kunt ook een ondersteuning voor Azure incident indienen. Ga naar de ondersteuning voor Azure site en selecteer Ondersteuning krijgen.