Teilen über


Behandeln von Problemen mit dem Nachrichtenrouting

Dieser Artikel enthält Anleitungen zur Überwachung und Problembehandlung für häufige Probleme und Lösungen für das IoT Hub-Nachrichtenrouting.

Überwachung des Nachrichtenroutings

Es empfiehlt sich, IoT Hub-Metriken im Zusammenhang mit Nachrichtenrouting und -endpunkten zu überwachen, um eine Übersicht über die gesendeten Nachrichten zu erhalten. Sie können auch eine Diagnoseeinstellung erstellen, um Vorgänge für Routen in IoT Hub-Ressourcenprotokollen an Azure Monitor Logs, Event Hubs oder Azure Storage für die benutzerdefinierte Verarbeitung zu senden. Weitere Informationen zur Verwendung von Metriken, Ressourcenprotokollen und Diagnoseeinstellungen finden Sie unter Monitor IoT Hub. Ein Lernprogramm finden Sie unter Einrichten und Verwenden von Metriken und Ressourcenprotokollen mit einem IoT-Hub.

Darüber hinaus empfiehlt es sich, die Fallbackroute zu aktivieren, wenn Sie Nachrichten aufbewahren möchten, die nicht der Abfrage für eine der Routen entsprechen. Diese Nachrichten können über Anzahl der konfigurierten Aufbewahrungstage hinweg im integrierten Endpunkt aufbewahrt werden.

Häufigste Probleme

Im Anschluss finden Sie die Probleme, die im Zusammenhang mit dem Nachrichtenrouting am häufigsten auftreten. Um mit der Problembehandlung zu beginnen, wählen Sie das Problem für detaillierte Schritte aus.

Nachrichten von meinen Geräten werden nicht erwartungsgemäß weitergeleitet.

Um dieses Problem zu beheben, analysieren Sie die folgenden Informationen.

Die Routingmetriken für diesen Endpunkt

Alle routingbezogenen IoT Hub-Metriken beginnen mit Routing. Sie können Informationen aus mehreren Metriken kombinieren, um die Grundursache eines Problems zu ermitteln. Verwenden Sie beispielsweise die Metrik Routing Deliveries, um zu ermitteln, wie viele Nachrichten an einen Endpunkt übermittelt oder verworfen wurden, wenn sie keiner Abfrage für eine der Routen entsprachen und die Fallbackroute deaktiviert war. Überprüfen Sie anhand der Metrik Routing Latency (Routingwartezeit), ob die Wartezeit für die Nachrichtenübermittlung konstant ist oder zunimmt. Eine zunehmende Wartezeit kann auf ein Problem mit einem bestimmten Endpunkt hindeuten, und es empfiehlt sich, die Integrität des Endpunkts zu überprüfen. Diese Routingmetriken verfügen auch über Dimensionen, die Details zur Metrik wie dem Endpunkttyp, bestimmten Endpunktnamen und einen Grund angeben, warum die Nachricht nicht übermittelt wurde.

Die Ressourcenprotokolle für Betriebsprobleme

Beobachten Sie die Routes-Ressourcenprotokolle, um weitere Informationen zu Routing- und Endpunktvorgängen zu erhalten, oder identifizieren Sie Fehler und relevanten Fehlercode, um das Problem weiter zu verstehen. Der Vorgangsname RouteEvaluationError im Protokoll weist beispielsweise darauf hin, dass die Route aufgrund eines Problems mit dem Nachrichtenformat nicht ausgewertet werden konnte. Nutzen Sie die für den jeweiligen Vorgangsnamen angegebenen Tipps zur Behebung des Problems. Wenn ein Ereignis als Fehler protokolliert wird, enthält das Protokoll auch weitere Informationen dazu, warum die Auswertung fehlgeschlagen ist. Wenn der Vorgangsname beispielsweise "EndpointUnhealthy" lautet, gibt ein Fehlercode von 403004 an, dass der Endpunkt nicht genügend Speicherplatz hat.

Die Gesundheit des Endpunkts

Verwenden Sie die REST-API " Endpunktstatus abrufen ", um den Integritätsstatus der Endpunkte abzurufen. Diese API enthält auch Informationen zum letzten Zeitpunkt, zu dem eine Nachricht erfolgreich an den Endpunkt gesendet wurde, den letzten bekannten Fehler, die letzte bekannte Fehlerzeit und den zeitpunkt, zu dem ein Sendeversuch für diesen Endpunkt durchgeführt wurde. Verwenden Sie die mögliche Entschärfung, die für den spezifischen letzten bekannten Fehler bereitgestellt wird.

Ich erhalte plötzlich keine Nachrichten mehr am integrierten Endpunkt.

Um dieses Problem zu beheben, analysieren Sie die folgenden Informationen.

Wurde eine neue Route erstellt?

Sobald eine Route erstellt wird, werden keine Daten mehr an den integrierten Endpunkt gesendet, es sei denn, eine Route zu diesem Endpunkt wird erstellt. Um sicherzustellen, dass Nachrichten weiterhin an den integrierten Endpunkt fließen, wenn eine neue Route hinzugefügt wird, konfigurieren Sie eine Route zum Ereignisendpunkt .

Wurde die Fallbackroute deaktiviert?

Die Fallbackroute sendet alle Nachrichten, die keine Abfragebedingungen für eine der vorhandenen Routen an die integrierten Event Hubs (Nachrichten/Ereignisse) erfüllen, die mit Event Hubs kompatibel sind. Wenn das Nachrichtenrouting aktiviert ist, können Sie die Funktion der Fallbackroute verwenden. Wenn keine Routen zum integrierten Endpunkt vorhanden sind und eine Fallbackroute aktiviert ist, werden nur Nachrichten, die keine Abfragebedingungen in Routen erfüllen, an den integrierten Endpunkt gesendet. Wenn alle vorhandenen Routen gelöscht werden, muss außerdem die Fallbackroute aktiviert werden, um alle Daten im integrierten Endpunkt zu empfangen.

Sie können die Fallbackroute im Azure-Portal über das Blatt „Nachrichtenrouting“ für den IoT-Hub aktivieren oder deaktivieren. Sie können auch den Azure Resource Manager verwenden, um FallbackRouteProperties zu nutzen und einen benutzerdefinierten Endpunkt für eine Fallbackroute festzulegen.

Letzte bekannte Fehler für IoT Hub-Routingendpunkte

Get Endpoint Health in der REST-API gibt den Integritätsstatus der Endpunkte und den letzten bekannten Fehler an, um den Grund zu nennen, warum ein Endpunkt nicht fehlerfrei ist. In dieser Tabelle sind die häufigsten Fehler aufgeführt.

Letzter bekannter Fehler Beschreibung/wann er auftritt Mögliche Entschärfung
Flüchtig Ein vorübergehender Fehler ist aufgetreten, und IoT Hub wiederholt den Vorgang. Beobachten Sie Ressourcenprotokolle zu Routen.
Interner Fehler Fehler beim Übermitteln einer Nachricht an einen Endpunkt. Dieser Fehler ist eine interne Ausnahme, aber beachten Sie auch die Routenressourcenprotokolle.
Nicht autorisiert IoT Hub ist nicht berechtigt, Nachrichten an den angegebenen Endpunkt zu senden. Überprüfen Sie, ob die Verbindungszeichenfolge für den Endpunkt auf dem neuesten Stand ist. Wenn dies geändert wurde, sollten Sie ein Update auf Ihrem IoT Hub in Betracht ziehen. Wenn der Endpunkt verwaltete Identität verwendet, überprüfen Sie, ob der IoT Hub-Prinzipal über die erforderlichen Berechtigungen für das Ziel verfügt.
Gedrosselt Beim Schreiben von Nachrichten in den Endpunkt wird der IoT Hub gedrosselt. Überprüfen Sie die Geschwindigkeitsbegrenzungen für den betroffenen Endpunkt. Ändern Sie die Konfigurationen für den Endpunkt, um sie bei Bedarf zu skalieren.
Auszeit Timeout bei Vorgang. Wiederholen Sie den Vorgang.
Nicht gefunden Zielressource ist nicht vorhanden. Stellen Sie sicher, dass die Zielressource vorhanden ist.
Container nicht gefunden Der Speichercontainer ist nicht vorhanden. Stellen Sie sicher, dass der Speichercontainer vorhanden ist.
Container deaktiviert Der Speichercontainer ist deaktiviert. Stellen Sie sicher, dass der Speichercontainer aktiviert ist.
Maximale Nachrichtengröße überschritten Nachrichtenweiterleitung hat eine Größenbeschränkung von 256 Kb. Die Nachrichtengröße, die weitergeleitet wird, hat diesen Grenzwert überschritten. Überprüfen Sie, ob die Nachrichtengröße reduziert werden kann, indem Sie weniger Anwendungseigenschaften oder weniger Nachrichtenanreicherungen verwenden.
Partitionierung und Duplikaterkennung nicht unterstützt Der Dienstbus hat möglicherweise keine doppelte Erkennung aktiviert. Deaktivieren Sie die duplizierte Erkennung von Service Bus, oder erwägen Sie die Verwendung einer Entität ohne doppelte Erkennung.
SessionfulEntityNotSupported Für Service Bus sind Sitzungen möglicherweise nicht aktiviert. Deaktivieren Sie die Sitzung von Service Bus, oder erwägen Sie die Verwendung einer Entität ohne Sitzungen.
NoMatchingSubscriptionsForMessage Es gibt kein Abonnement zum Schreiben von Nachrichten im Servicebus-Thema. Erstellen Sie ein Abonnement, auf das IoT Hub-Nachrichten weitergeleitet werden sollen.
EndpunktExternDeaktiviert Der Endpunkt befindet sich nicht im aktiven Zustand, sodass IoT Hub Nachrichten an ihn senden kann. Aktivieren Sie den Endpunkt, um ihn wieder in den aktiven Zustand zu versetzen.
DeviceMaximumQueueDepthExceeded Der Grenzwert für die Servicebusgröße wurde erreicht. Erwägen Sie das Entfernen von Nachrichten aus den Zielereignishubs, damit neue Nachrichten in die Event Hubs aufgenommen werden können.

Ressourcenprotokolle zu Routen

Im Folgenden sind die Vorgangsnamen und Fehlercodes aufgeführt, die in den Routenressourcenprotokollen protokolliert werden.

Operationsnamen

Vorgangsname Niveau BESCHREIBUNG
UndefinedRouteEvaluation Informationen Die Nachricht kann nicht mit einer bedingungsgebenden Bedingung ausgewertet werden. Dieser Fall kann beispielsweise eintreten, wenn eine Eigenschaft aus der Routenabfrage in der Nachricht fehlt. Weitere Informationen zur Routingabfragesyntax.
RouteEvaluationError Fehler Fehler beim Auswerten der Nachricht aufgrund eines Problems mit dem Nachrichtenformat. Dieser Fehler wird beispielsweise protokolliert, wenn die Inhaltscodierung nicht angegeben oder der Inhaltstyp in der Nachricht ungültig ist. Diese müssen in den Systemeigenschaften festgelegt werden.
DroppedMessage (Gelöschte Nachricht) Fehler Die Nachricht wurde gelöscht und nicht weitergeleitet. Dies kann auf Gründe zurückzuführen sein, wie etwa dass die Nachricht keiner Routingabfrage entsprach oder der Endpunkt nicht erreichbar war und die Nachricht nach mehreren Wiederholungsversuchen nicht übermittelt werden konnte. Es wird empfohlen, weitere Details zum Endpunkt mithilfe der REST-API zum Abrufen des Endpunktstatus abzurufen.
EndpunktFehlerhaft Fehler Der Endpunkt akzeptiert keine Nachrichten von IoT Hub und IoT Hub versucht, die Nachrichten erneut zu senden. Wir empfehlen, den letzten bekannten Fehler über die REST-API get endpoint health zu überprüfen.
EndpunktTot Fehler Der Endpunkt akzeptiert seit mehr als einer Stunde keine Nachrichten von IoT Hub. Wir empfehlen, den letzten bekannten Fehler über die REST-API get endpoint health zu überprüfen.
EndpunktFehlerfrei Informationen Endpunkt ist fehlerfrei und empfängt Nachrichten vom IoT Hub. Diese Nachricht wird nicht kontinuierlich protokolliert, sondern nur dann protokolliert, wenn der Endpunkt wieder fehlerfrei wird. Diese Meldung bedeutet, dass IoT Hub keine Nachrichten an den Endpunkt senden konnte, der Endpunkt ist jedoch jetzt fehlerfrei.
VerwaisteNachricht Informationen Die Nachricht passt zu keiner Route.
Ungültige Nachricht Fehler Die Nachricht ist aufgrund der Inkompatibilität mit dem Endpunkt ungültig. Es wird empfohlen, die Konfigurationen des Endpunkts zu überprüfen.

Die Vorgänge "UndefinedRouteEvaluation", "RouteEvaluationError " und "OrphanedMessage " werden gedrosselt und pro IoT Hub nicht mehr als einmal pro Minute protokolliert.

Häufige Fehlercodes

Fehlercode BESCHREIBUNG
401002 Nicht autorisierter IoT Hub-Zugriff
413001 Nachricht zu groß
403004 Die maximale Warteschlangentiefe des Geräts wurde überschritten.
503008 Empfangslink gedrosselt
500.000 Generischer Serverfehler
401 Nicht autorisiert
503 Dienst nicht verfügbar
500001 Serverfehler
400103 Ungültige Inhaltscodierung oder Inhaltstyp
404001 Gerät nicht gefunden

Nächste Schritte

Wenn Sie weitere Hilfe benötigen, können Sie sich über das Microsoft Q&A-Forum oder das Stack Overflow-Forum mit Azure-Experten in Verbindung setzen. Alternativ dazu haben Sie die Möglichkeit, einen Azure-Supportfall zu erstellen. Rufen Sie die Azure-Support-Website auf, und wählen Sie Support erhaltenaus.