Felsöka meddelanderoutning
Den här artikeln innehåller vägledning för övervakning och felsökning för vanliga problem och lösningar för IoT Hub-meddelanderoutning.
Övervaka meddelanderoutning
Vi rekommenderar att du övervakar IoT Hub-mått som rör meddelanderoutning och slutpunkter för att ge dig en översikt över de meddelanden som skickas. Du kan också skapa en diagnostikinställning för att skicka åtgärder för vägar i IoT Hub-resursloggar till Azure Monitor-loggar, Event Hubs eller Azure Storage för anpassad bearbetning. Mer information om hur du använder mått, resursloggar och diagnostikinställningar finns i Övervaka IoT Hub. En självstudiekurs finns i Konfigurera och använda mått och resursloggar med en IoT-hubb.
Vi rekommenderar också att du aktiverar återställningsvägen om du vill underhålla meddelanden som inte matchar frågan på någon av vägarna. Dessa meddelanden kan behållas i den inbyggda slutpunkten under det antal kvarhållningsdagar som konfigurerats.
Vanligaste problemen
Följande är de vanligaste problemen som observerats med meddelanderoutning. Om du vill börja felsöka väljer du problemet för detaljerade steg.
- Meddelanden från mina enheter dirigeras inte som förväntat
- Jag slutade plötsligt få meddelanden på den inbyggda Event Hubs-slutpunkten
Meddelanden från mina enheter dirigeras inte som förväntat
Om du vill felsöka det här problemet analyserar du följande information.
Routningsmåtten för den här slutpunkten
Alla IoT Hub-mått som är relaterade till routning har prefixet Routing. Du kan kombinera information från flera mått för att identifiera rotorsaken till problem. Använd till exempel måttroutningsleveranser för att identifiera antalet meddelanden som levererades till en slutpunkt eller togs bort när de inte matchade frågor på någon av vägarna och återställningsvägen inaktiverades. Kontrollera måttet Routningssvarstid för att se om svarstiden för meddelandeleveransen är stabil eller ökar. En växande svarstid kan tyda på ett problem med en specifik slutpunkt och vi rekommenderar att du kontrollerar slutpunktens hälsotillstånd. Dessa routningsmått har också dimensioner som ger information om måttet som slutpunktstyp, specifikt slutpunktsnamn och en orsak till att meddelandet inte levererades.
Resursloggarna för eventuella driftproblem
Observera resursloggarna Vägar för att få mer information om routnings- och slutpunktsåtgärderna eller identifiera fel och relevant felkod för att förstå problemet ytterligare. Till exempel anger åtgärdsnamnet RouteEvaluationError i loggen att vägen inte kunde utvärderas på grund av ett problem med meddelandeformatet. Använd tipsen för de specifika åtgärdsnamnen för att åtgärda problemet. När en händelse loggas som ett fel innehåller loggen även mer information om varför utvärderingen misslyckades. Om åtgärdsnamnet till exempel är EndpointUnhealthy anger en felkod på 403004 att slutpunkten fick slut på utrymme.
Slutpunktens hälsa
Använd REST-API :et Get Endpoint Health för att hämta hälsostatus för slutpunkterna. Det här API:et innehåller också information om den senaste gången ett meddelande skickades till slutpunkten, det senaste kända felet, den senaste kända feltiden och senaste gången ett sändningsförsök gjordes för den här slutpunkten. Använd den möjliga åtgärd som tillhandahålls för det specifika senast kända felet.
Jag slutade plötsligt få meddelanden på den inbyggda slutpunkten
Om du vill felsöka det här problemet analyserar du följande information.
Skapades en ny väg?
När en väg har skapats slutar data att flöda till den inbyggda slutpunkten, såvida inte en väg skapas till slutpunkten. För att säkerställa att meddelanden fortsätter att flöda till den inbyggda slutpunkten om en ny väg läggs till konfigurerar du en väg till händelseslutpunkten .
Har återställningsvägen inaktiverats?
Återställningsvägen skickar alla meddelanden som inte uppfyller något av frågevillkoren på någon av de befintliga vägarna till de inbyggda händelsehubbarna (meddelanden/händelser) som är kompatibla med Event Hubs. Om meddelanderoutning är aktiverat kan du aktivera återställningsvägen. Om det inte finns några vägar till den inbyggda slutpunkten och en återställningsväg är aktiverad skickas endast meddelanden som inte matchar några frågevillkor på vägar till den inbyggda slutpunkten. Om alla befintliga vägar tas bort måste återställningsvägen också aktiveras för att ta emot alla data på den inbyggda slutpunkten.
Du kan aktivera eller inaktivera återställningsvägen i Azure-portalen med hjälp av bladet Meddelanderoutning för IoT-hubben. Du kan också använda Azure Resource Manager for FallbackRouteProperties för att använda en anpassad slutpunkt för en återställningsväg.
Senast kända fel för IoT Hub-routningsslutpunkter
Hämta Slutpunktshälsa i REST-API:et ger hälsostatusen för slutpunkterna och det senaste kända felet för att identifiera orsaken till att en slutpunkt inte är felfri. I den här tabellen visas de vanligaste felen.
Senast kända fel | Beskrivning/när det inträffar | Möjlig åtgärd |
---|---|---|
Tillfälligt | Ett tillfälligt fel uppstod och IoT Hub försöker utföra åtgärden igen. | Observera vägar för resursloggar. |
InternalError | Ett fel uppstod när ett meddelande levererades till en slutpunkt. | Det här felet är ett internt undantag men observera även vägarnas resursloggar. |
Behörighet saknas | IoT Hub har inte behörighet att skicka meddelanden till den angivna slutpunkten. | Kontrollera att niska veze är uppdaterad för slutpunkten. Om den ändras bör du överväga en uppdatering på din IoT Hub. Om slutpunkten använder hanterad identitet kontrollerar du att IoT Hub-huvudnamnet har de behörigheter som krävs för målet. |
Begränsad | IoT Hub begränsas när meddelanden skrivs till slutpunkten. | Granska begränsningsgränserna för den berörda slutpunkten. Ändra konfigurationer för slutpunkten för att skala upp om det behövs. |
Timeout | Tidsgräns för åtgärd. | Försök att utföra åtgärden igen. |
Hittades inte | Målresursen finns inte. | Kontrollera att målresursen finns. |
Det går inte att hitta containern | Lagringscontainern finns inte. | Kontrollera att lagringscontainern finns. |
Containern är inaktiverad | Lagringscontainern är inaktiverad. | Kontrollera att lagringscontainern är aktiverad. |
MaxMessageSizeExceededed | Meddelanderoutning har en storleksgräns på 256 kB. Meddelandestorleken som dirigeras överskred den här gränsen. | Kontrollera om meddelandestorleken kan minskas med hjälp av färre programegenskaper eller färre meddelande berikanden. |
PartitioningAndDuplicateDetectionNotSupported | Service Bus kanske inte har dubblettidentifiering aktiverat. | Inaktivera dubblettidentifiering från Service Bus eller överväg att använda en entitet utan dubblettidentifiering. |
SessionfulEntityNotSupported | Service Bus kanske inte har aktiverat sessioner. | Inaktivera session från Service Bus eller överväg att använda en entitet utan sessioner. |
NoMatchingSubscriptionsForMessage | Det finns ingen prenumeration för att skriva meddelande om Service Bus-ämnet. | Skapa en prenumeration för IoT Hub-meddelanden som ska dirigeras till. |
EndpointExternallyDisabled | Slutpunkten är inte i ett aktivt tillstånd så IoT Hub kan skicka meddelanden till den. | Aktivera slutpunkten för att återställa den till aktivt tillstånd. |
DeviceMaximumQueueDepthExceeded | Storleksgränsen för Service Bus har nåtts. | Överväg att ta bort meddelanden från målhändelsehubbar för att tillåta att nya meddelanden matas in i händelsehubbarna. |
Dirigerar resursloggar
Följande är åtgärdsnamnen och felkoderna som loggas i vägarnas resursloggar.
Åtgärdsnamn
Åtgärdsnamn | Nivå | beskrivning |
---|---|---|
UndefinedRouteEvaluation | Information | Meddelandet kan inte utvärderas med ett givande villkor. Om till exempel en egenskap i routningsfrågevillkoret saknas i meddelandet. Läs mer om routning av frågesyntax. |
RouteEvaluationError | Fel | Ett fel uppstod vid utvärdering av meddelandet på grund av ett problem med meddelandeformatet. Det här felet loggas till exempel om innehållskodningen inte har angetts eller innehållstypen inte är giltig i meddelandet. Dessa måste anges i systemegenskaperna. |
DroppedMessage | Fel | Meddelandet togs bort och dirigerades inte. Detta kan bero på orsaker som att meddelandet inte matchade någon routningsfråga eller att slutpunkten var död och att meddelandet inte kunde levereras efter flera återförsök. Vi rekommenderar att du får mer information om slutpunkten med hjälp av REST-API :et hämta slutpunktshälsa. |
EndpointUnhealthy | Fel | Slutpunkten har inte accepterat meddelanden från IoT Hub och IoT Hub försöker skicka meddelandena igen. Vi rekommenderar att du observerar det senaste kända felet via REST API :et för att hämta slutpunktshälsa. |
EndpointDead | Fel | Slutpunkten har inte accepterat meddelanden från IoT Hub på över en timme. Vi rekommenderar att du observerar det senaste kända felet via REST API :et för att hämta slutpunktshälsa. |
EndpointHealthy | Information | Slutpunkten är felfri och tar emot meddelanden från IoT Hub. Det här meddelandet loggas inte kontinuerligt, men loggas bara när slutpunkten blir felfri igen. Det här meddelandet innebär att IoT Hub inte kunde skicka meddelanden till slutpunkten, men slutpunkten är nu felfri. |
OrphanedMessage | Information | Meddelandet matchar inte någon väg. |
InvalidMessage | Fel | Meddelandet är ogiltigt på grund av inkompatibilitet med slutpunkten. Vi rekommenderar att du kontrollerar slutpunktens konfigurationer. |
Åtgärderna UndefinedRouteEvaluation, RouteEvaluationError och OrphanedMessage begränsas och loggas inte mer än en gång per minut per IoT Hub.
Vanliga felkoder
Felkod | beskrivning |
---|---|
401002 | Obehörig åtkomst till Iot Hub |
413001 | Meddelandet är för stort |
403004 | Enhetens maximala ködjup har överskridits |
503008 | Ta emot länkbegränsning |
500000 | Allmänt serverfel |
401 | Behörighet saknas |
503 | Tjänsten är inte tillgänglig |
500001 | Serverfel |
400103 | Ogiltig innehållskodning eller innehållstyp |
404001 | Enheten hittades inte |
Nästa steg
Om du behöver mer hjälp kan du kontakta Azure-experterna på Microsoft Q&A- och Stack Overflow-forumen. Du kan också skapa en Azure-supportincident. Gå till Azure-supportwebbplatsen och välj Hämta support.