Behandeln von Problemen mit dem Nachrichtenrouting
Dieser Artikel enthält Informationen zur Überwachung und Behandlung von Problemen im Zusammenhang mit dem Nachrichtenrouting von IoT Hub sowie entsprechende Lösungen.
Überwachen 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 zur benutzerdefinierten Verarbeitung an Azure Monitor-Protokolle, Event Hub-Instanzen oder Azure Storage zu senden. Weitere Informationen zur Verwendung von Metriken, Ressourcenprotokollen und Diagnoseeinstellungen finden Sie unter Überwachen von IoT Hub. Ein Tutorial 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. Wählen Sie ein Problem aus, um ausführliche Schritte anzuzeigen und mit der Problembehandlung zu beginnen.
- Nachrichten von meinen Geräten werden nicht erwartungsgemäß weitergeleitet
- Ich erhalte plötzlich keine Nachrichten mehr am integrierten Event Hubs-Endpunkt.
Nachrichten von meinen Geräten werden nicht erwartungsgemäß weitergeleitet.
Zur Problembehandlung analysieren Sie folgende 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 (Routing: Zustellungen), 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 liefern: etwa den Endpunkttyp, den Namen eines bestimmten Endpunkts und einen Grund dafür, warum die Nachricht nicht übermittelt wurde.
Die Ressourcenprotokolle für Betriebsprobleme
Sehen Sie sich die Ressourcenprotokolle für Routen an, um weitere Informationen zu Routing- und Endpunktvorgängen zu erhalten oder Fehler und relevante Fehlercodes zu ermitteln, um das Problem besser 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 bei der Problembehandlung die für den jeweiligen Vorgangsnamen angegebenen Tipps. Wenn ein Ereignis als Fehler protokolliert wird, enthält das Protokoll auch weitere Informationen dazu, warum die Auswertung fehlgeschlagen ist. Wenn der Vorgangsname also beispielsweise EndpointUnhealthy lautet, wird durch den Fehlercode 403004 angegeben, dass für den Endpunkt nicht mehr genügend Speicherplatz zur Verfügung stand.
Die Integrität des Endpunkts
Verwenden Sie die REST-API Get Endpoint Health, um den Integritätsstatus der Endpunkte abzurufen. Diese API liefert auch Informationen zum Zeitpunkt der letzten erfolgreichen Übermittlung einer Nachricht an den Endpunkt, zum letzten bekannten Fehler, zum Zeitpunkt des letzten bekannten Fehlers und zum letzten Übermittlungsversuch für den Endpunkt. Verwenden Sie die mögliche Abhilfe, die für den spezifischen letzten bekannten Fehler angegeben ist.
Ich erhalte plötzlich keine Nachrichten mehr am integrierten Endpunkt.
Zur Problembehandlung analysieren Sie folgende 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. Konfigurieren Sie eine Route zum Endpunkt events, um sicherzustellen, dass Nachrichten weiterhin an den integrierten Endpunkt weitergeleitet werden, wenn eine neue Route hinzugefügt wird.
Wurde die Fallbackroute deaktiviert?
Durch die Fallbackroute werden alle Nachrichten, die eine der Abfragebedingungen in einer der vorhandenen Routen nicht erfüllen, an den integrierten Endpunkt (messages/events) gesendet, der mit Event Hubs kompatibel ist. 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 mithilfe von Azure Resource Manager FallbackRouteProperties zur Nutzung eines benutzerdefinierten Endpunkts für eine Fallbackroute festlegen.
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/Auftreten | Mögliche Entschärfung |
---|---|---|
Kurzlebig | Es ist ein vorübergehender Fehler aufgetreten, und IoT Hub wiederholt den Vorgang. | Beobachten Sie Ressourcenprotokolle zu Routen. |
InternalError | Fehler bei der Übermittlung einer Nachricht an einen Endpunkt. | Dieser Fehler ist eine interne Ausnahme, untersuchen Sie aber auch die Ressourcenprotokolle zu Routen. |
Nicht autorisiert | IoT Hub ist nicht autorisiert, Nachrichten an den angegebenen Endpunkt zu senden. | Überprüfen Sie, ob die Verbindungszeichenfolge für den Endpunkt auf dem neuesten Stand ist. Wenn Änderungen vorgenommen wurden, sollten Sie ein Update für Ihre IoT Hub in Erwägung ziehen. Wenn der Endpunkt eine verwaltete Identität verwendet, überprüfen Sie, ob der IoT Hub-Prinzipal über die erforderlichen Berechtigungen für das Ziel verfügt. |
Gedrosselt | IoT Hub wird beim Schreiben von Nachrichten in den Endpunkt gedrosselt. | Überprüfen Sie die Drosselungslimits für den betroffenen Endpunkt. Ändern Sie die Konfigurationen, damit der Endpunkt bei Bedarf hochskaliert wird. |
Timeout | Timeout bei Vorgang. | Wiederholen Sie den Vorgang. |
Nicht gefunden | Die 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. |
MaxMessageSizeExceeded | Nachrichtenweiterleitung hat eine Größenbeschränkung von 256 Kb. Die Nachrichtengröße, die weitergeleitet wird, hat diesen Grenzwert überschritten. | Überprüfen Sie, ob die Größe der Nachricht verringert werden kann, indem Sie weniger Anwendungseigenschaften oder weniger Nachrichtenergänzungen verwenden. |
PartitioningAndDuplicateDetectionNotSupported | Für Service Bus ist die Duplikaterkennung möglicherweise nicht aktiviert. | Deaktivieren Sie Duplikaterkennung in Service Bus, oder verwenden Sie eine Entität ohne Duplikaterkennung. |
SessionfulEntityNotSupported | Für Service Bus sind Sitzungen möglicherweise nicht aktiviert. | Deaktivieren Sie die Sitzung in Service Bus, oder verwenden Sie eine Entität ohne Sitzungen. |
NoMatchingSubscriptionsForMessage | Es ist kein Abonnement zum Schreiben von Nachrichten für das Service Bus-Thema vorhanden. | Erstellen Sie ein Abonnement für IoT Hub- Nachrichten, an die die Weiterleitung erfolgen soll. |
EndpointExternallyDisabled | Der Endpunkt ist nicht in einem aktiven Zustand, IoT Hub kann daher keine Nachrichten an ihn senden. | Aktivieren Sie den Endpunkt, um ihn erneut in den aktiven Zustand zu versetzen. |
DeviceMaximumQueueDepthExceeded | Die maximale Service Bus-Größe wurde erreicht. | Entfernen Sie Nachrichten aus den Ziel-Event Hubs, damit neue Nachrichten in den Event Hubs erfasst werden können. |
Ressourcenprotokolle zu Routen
Im Anschluss finden Sie die Vorgangsnamen und Fehlercodes, die in den Ressourcenprotokolle zu Routen protokolliert werden.
Vorgangsnamen
Vorgangsname | Ebene | Beschreibung |
---|---|---|
UndefinedRouteEvaluation | Information | Die Nachricht kann mit einer angegebenen Bedingung nicht ausgewertet werden. Dieser Fall kann beispielsweise eintreten, wenn eine Eigenschaft aus der Routenabfrage in der Nachricht fehlt. Weitere Informationen zur Abfragesyntax für das IoT Hub-Nachrichtenrouting finden Sie hier. |
RouteEvaluationError | Fehler | Beim Auswerten der Nachricht ist ein Fehler aufgrund eines Problems mit dem Nachrichtenformat aufgetreten. Dieser Fehler wird beispielsweise protokolliert, wenn die Inhaltscodierung nicht angegeben wurde oder der Inhaltstyp in der Nachricht nicht gültig ist. Diese müssen in den Systemeigenschaften festgelegt werden. |
DroppedMessage | Fehler | Die Nachricht wurde gelöscht und nicht weitergeleitet. Dies kann beispielsweise darauf zurückzuführen sein, dass die Nachricht keiner Routingabfrage entsprach oder dass der Endpunkt inaktiv war und die Nachricht auch nach mehreren Versuchen nicht zugestellt werden konnte. Es empfiehlt sich, mithilfe der REST-API get endpoint health weitere Details zum Endpunkt abzurufen. |
EndpointUnhealthy | Fehler | Der Endpunkt hat Nachrichten von IoT Hub akzeptiert, und von IoT Hub wird versucht, die Nachrichten erneut zu senden. Es empfiehlt sich, mithilfe der REST-API get endpoint health den letzten bekannten Fehler zu beobachten. |
EndpointDead | Fehler | Der Endpunkt hat über eine Stunde lang keine Nachrichten von IoT Hub akzeptiert. Es empfiehlt sich, mithilfe der REST-API get endpoint health den letzten bekannten Fehler zu beobachten. |
EndpointHealthy | Information | Der Endpunkt ist fehlerfrei und empfängt Nachrichten von IoT Hub. Diese Meldung wird nicht fortlaufend protokolliert, sondern nur, wenn der Endpunkt wieder fehlerfrei wird. Diese Meldung bedeutet, dass von IoT Hub keine Nachrichten an den Endpunkt gesendet werden konnten, der Endpunkt nun aber wieder fehlerfrei ist. |
OrphanedMessage | Information | Die Nachricht entspricht keiner Route. |
InvalidMessage | Fehler | Die Nachricht ist nicht mit dem Endpunkt kompatibel und daher ungültig. Es empfiehlt sich, die Konfigurationen des Endpunkts zu überprüfen. |
Die Vorgänge UndefinedRouteEvaluation, RouteEvaluationError und OrphanedMessage werden gedrosselt und maximal einmal pro Minute und IoT Hub protokolliert.
Häufige Fehlermeldungen
Fehlercode | BESCHREIBUNG |
---|---|
401002 | Nicht autorisierter Iot Hub-Zugriff |
413001 | Nachricht ist zu lang |
403004 | Maximale Warteschlangentiefe des Geräts überschritten |
503008 | Empfangslink gedrosselt |
500000 | Generischer Serverfehler |
401 | Nicht autorisiert |
503 | Dienst nicht verfügbar |
500001 | Serverfehler |
400103 | Inhaltscodierung oder Inhaltstyp ungültig |
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.