Rozwiązywanie problemów z routingiem komunikatów

Ten artykuł zawiera wskazówki dotyczące monitorowania i rozwiązywania problemów dotyczących typowych problemów i rozwiązywania typowych problemów z routingiem komunikatów usługi IoT Hub.

Monitorowanie routingu komunikatów

Zalecamy monitorowanie metryk usługi IoT Hub związanych z routingiem komunikatów i punktami końcowymi w celu wyświetlenia przeglądu wysłanych komunikatów . Możesz również utworzyć ustawienie diagnostyczne służące do wysyłania operacji dla tras w dziennikach zasobów usługi IoT Hub do dzienników usługi Azure Monitor, usługi Event Hubs lub usługi Azure Storage na potrzeby przetwarzania niestandardowego. Aby dowiedzieć się więcej o metrykach, dziennikach zasobów i ustawieniach diagnostycznych, zobacz Monitorowanie usługi IoT Hub. Aby zapoznać się z samouczkiem, zobacz Konfigurowanie metryk i dzienników zasobów oraz korzystanie z nich za pomocą centrum IoT Hub.

Zalecamy również włączenie trasy rezerwowej, jeśli chcesz zachować komunikaty, które nie pasują do zapytania w żadnej z tras. Można je przechowywać w wbudowanym punkcie końcowym dla skonfigurowanej liczby dni przechowywania.

Najczęstsze problemy

Poniżej przedstawiono najczęstsze problemy występujące podczas routingu komunikatów. Aby rozpocząć rozwiązywanie problemów, kliknij problem, aby uzyskać szczegółowe instrukcje.

Komunikaty z moich urządzeń nie są kierowane zgodnie z oczekiwaniami

Aby rozwiązać ten problem, przeanalizuj następujące kwestie.

Metryki routingu dla tego punktu końcowego

Wszystkie metryki usługi IoT Hub związane z routingiem są poprzedzone prefiksem Routing. Możesz połączyć informacje z wielu metryk, aby zidentyfikować główną przyczynę problemów. Na przykład użyj dostarczania routingu metryk, aby zidentyfikować liczbę komunikatów, które zostały dostarczone do punktu końcowego lub porzucone, gdy nie były zgodne z zapytaniami na żadnej z tras, a trasa rezerwowa została wyłączona. Sprawdź metryę Opóźnienie routingu, aby sprawdzić, czy opóźnienie dostarczania komunikatów jest stałe, czy rosnące. Rosnące opóźnienie może wskazywać na problem z określonym punktem końcowym i zalecamy sprawdzenie kondycji punktu końcowego. Te metryki routingu mają również wymiary , które zawierają szczegółowe informacje na temat metryki, takiej jak typ punktu końcowego, określona nazwa punktu końcowego i powód, dla którego komunikat nie został dostarczony.

Dzienniki zasobów dotyczące wszelkich problemów operacyjnych

Obserwuj dzienniki zasobów Trasy, aby uzyskać więcej informacji na temat operacji routingu i punktu końcowego lub zidentyfikować błędy i odpowiedni kod błędu, aby dokładniej zrozumieć problem. Na przykład nazwa operacji RouteEvaluationError w dzienniku wskazuje, że nie można ocenić trasy z powodu problemu z formatem komunikatu. Skorzystaj z porad podanych dla określonych nazw operacji, aby rozwiązać problem. Gdy zdarzenie jest rejestrowane jako błąd, dziennik zawiera również więcej informacji na temat przyczyn niepowodzenia oceny. Jeśli na przykład nazwa operacji to Punkt końcowy w złej kondycji, kod błędu 403004 wskazuje, że punkt końcowy zabrakło miejsca.

Kondycja punktu końcowego

Użyj interfejsu API REST Pobierz kondycję punktu końcowego, aby uzyskać stan kondycji punktów końcowych. Interfejs API pobierania kondycji punktu końcowego zawiera również informacje dotyczące ostatniego wysłania komunikatu do punktu końcowego, ostatniego znanego błędu, czasu ostatniego znanego błędu i ostatniej próby wysłania dla tego punktu końcowego. Użyj możliwego ograniczenia ryzyka przewidzianego dla określonego ostatniego znanego błędu.

Nagle przestałem dostawać komunikaty w wbudowanym punkcie końcowym

Aby rozwiązać ten problem, przeanalizuj następujące kwestie.

Czy utworzono nową trasę?

Po utworzeniu trasy dane przestaną przepływać do wbudowanego punktu końcowego, chyba że zostanie utworzona trasa do tego punktu końcowego. Aby zapewnić, że komunikaty będą nadal przepływać do wbudowanego punktu końcowego w przypadku dodania nowej trasy, skonfiguruj trasę do punktu końcowego zdarzeń .

Czy trasa rezerwowa była wyłączona?

Trasa rezerwowa wysyła wszystkie komunikaty, które nie spełniają żadnego z warunków zapytania w żadnej z istniejących tras do wbudowanej usługi Event Hubs (komunikaty/zdarzenia), które są zgodne z usługą Event Hubs. Jeśli routing komunikatów jest włączony, możesz włączyć funkcję trasy rezerwowej. Jeśli nie ma tras do wbudowanego punktu końcowego i jest włączona trasa rezerwowa, do wbudowanego punktu końcowego będą wysyłane tylko komunikaty, które nie pasują do żadnych warunków zapytania w trasach. Ponadto jeśli wszystkie istniejące trasy zostaną usunięte, należy włączyć trasę rezerwową, aby odbierać wszystkie dane we wbudowanym punkcie końcowym.

Możesz włączyć lub wyłączyć trasę rezerwową w witrynie Azure Portal przy użyciu bloku Routing komunikatów dla centrum IoT. Możesz również użyć usługi Azure Resource Manager dla fallbackRouteProperties , aby użyć niestandardowego punktu końcowego dla trasy rezerwowej.

Ostatnie znane błędy dotyczące punktów końcowych routingu usługi IoT Hub

Pobieranie kondycji punktu końcowego w interfejsie API REST zapewnia stan kondycji punktów końcowych, a także ostatni znany błąd, aby zidentyfikować przyczynę, dla którego punkt końcowy nie jest w dobrej kondycji. W poniższej tabeli wymieniono najczęstsze błędy.

Ostatni znany błąd Opis/w przypadku wystąpienia Możliwe środki zaradcze
Przejściowy Wystąpił błąd przejściowy, a usługa IoT Hub ponowi próbę wykonania operacji. Obserwuj dzienniki zasobów tras.
InternalError Wystąpił błąd podczas dostarczania komunikatu do punktu końcowego. Jest to wyjątek wewnętrzny, ale także obserwowanie dzienników zasobów tras.
Brak autoryzacji Usługa IoT Hub nie jest autoryzowana do wysyłania komunikatów do określonego punktu końcowego. Sprawdź, czy parametry połączenia jest aktualny dla punktu końcowego. Jeśli uległa zmianie, rozważ aktualizację usługi IoT Hub. Jeśli punkt końcowy używa tożsamości zarządzanej, sprawdź, czy podmiot zabezpieczeń usługi IoT Hub ma wymagane uprawnienia do obiektu docelowego.
Ograniczono Usługa IoT Hub jest ograniczana podczas zapisywania komunikatów w punkcie końcowym. Przejrzyj limity ograniczania dla punktu końcowego, którego dotyczy problem. W razie potrzeby zmodyfikuj konfiguracje punktu końcowego w celu skalowania w górę.
Timeout Limit czasu operacji. Spróbuj ponownie wykonać operację.
Nie znaleziono Zasób docelowy nie istnieje. Upewnij się, że zasób docelowy istnieje.
Nie znaleziono kontenera Kontener magazynu nie istnieje. Upewnij się, że kontener magazynu istnieje.
Kontener wyłączony Kontener magazynu jest wyłączony. Upewnij się, że kontener magazynu jest włączony.
MaxMessageSizeExceeded Routing komunikatów ma limit rozmiaru komunikatów o rozmiarze 256 Kb.Rozmiar komunikatu, który jest kierowany, przekroczył ten limit. Sprawdź, czy rozmiar komunikatu można zmniejszyć, używając mniejszej liczby właściwości aplikacji lub mniejszej liczby wzbogacenia komunikatów.
PartycjonowanieAndDuplicateDetectionNotSupported Usługa Service Bus może nie mieć włączonego wykrywania duplikatów. Wyłącz wykrywanie duplikatów z usługi Service Bus lub rozważ użycie jednostki bez wykrywania duplikatów.
SessionfulEntityNotSupported Usługa Service Bus może nie mieć włączonej sesji. Wyłącz sesję z usługi Service Bus lub rozważ użycie jednostki bez sesji.
NoMatchingSubscriptionsForMessage Nie ma subskrypcji do pisania komunikatu w temacie usługi Service Bus. Utwórz subskrypcję dla komunikatów usługi IoT Hub, do których mają być kierowane.
EndpointExternallyDisabled Punkt końcowy nie jest w stanie aktywnym, więc usługa IoT Hub może wysyłać do niego komunikaty. Włącz punkt końcowy, aby przywrócić go do stanu aktywnego.
DeviceMaximumQueueDepthExceeded Osiągnięto limit rozmiaru usługi Service Bus. Rozważ usunięcie komunikatów z docelowej usługi Event Hubs, aby umożliwić pozyskiwanie nowych komunikatów do usługi Event Hubs.

Kieruje dzienniki zasobów

Poniżej przedstawiono nazwy operacji i kody błędów zarejestrowane w dziennikach zasobów tras.

Nazwy operacji

Nazwa operacji Poziom opis
UndefinedRouteEvaluation Informacja Nie można ocenić komunikatu przy użyciu warunku dającego. Jeśli na przykład właściwość w warunku zapytania dotyczącego trasy jest nieobecna w komunikacie. Dowiedz się więcej o składni zapytania routingu.
RouteEvaluationError Błąd Wystąpił błąd podczas oceniania komunikatu z powodu problemu z formatem komunikatu. Na przykład ten błąd zostanie zarejestrowany, jeśli kodowanie zawartości nie jest określone lub typ zawartości jest nieprawidłowy w komunikacie. Należy je ustawić we właściwościach systemu.
Porzucony komunikat Błąd Komunikat został porzucony i nie został przekierowany. Może to być spowodowane przyczynami, takimi jak komunikat nie pasuje do żadnego zapytania rozsyłania lub punktu końcowego, a komunikat nie może zostać dostarczony po kilku ponownych próbach. Zalecamy uzyskanie dodatkowych szczegółów dotyczących punktu końcowego przy użyciu interfejsu API REST uzyskiwania kondycji punktu końcowego.
Punkt końcowy w złej kondycji Błąd Punkt końcowy nie akceptuje komunikatów z usługi IoT Hub i usługa IoT Hub próbuje ponownie wysłać komunikaty. Zalecamy zaobserwowanie ostatniego znanego błędu za pośrednictwem interfejsu API REST uzyskiwania kondycji punktu końcowego.
EndpointDead Błąd Punkt końcowy nie akceptuje komunikatów z usługi IoT Hub przez ponad godzinę. Zalecamy zaobserwowanie ostatniego znanego błędu za pośrednictwem interfejsu API REST uzyskiwania kondycji punktu końcowego.
EndpointHealthy Informacja Punkt końcowy jest w dobrej kondycji i odbiera komunikaty z usługi IoT Hub. Ten komunikat nie jest rejestrowany w sposób ciągły, ale rejestrowany tylko wtedy, gdy punkt końcowy ponownie stanie się w dobrej kondycji. Ten komunikat oznacza, że usługa IoT Hub nie może wysyłać komunikatów do punktu końcowego, ale punkt końcowy jest teraz w dobrej kondycji.
Oddzielona wiadomość Informacja Komunikat nie jest zgodny z żadną trasą.
InvalidMessage Błąd Komunikat jest nieprawidłowy z powodu niezgodności z punktem końcowym. Zalecamy sprawdzenie konfiguracji punktu końcowego.

Operacje UndefinedRouteEvaluation, RouteEvaluationError i OrphanedMessage są ograniczane i rejestrowane nie więcej niż raz na minutę dla usługi IoT Hub.

Typowe kody błędów

Kod błędu opis
401002 Nieautoryzowany dostęp do centrum Iot Hub
413001 Komunikat za duży
403004 Przekroczono maksymalną głębokość kolejki urządzenia
503008 Ograniczanie połączenia odbierania
500000 Błąd serwera ogólnego
401 Brak autoryzacji
503 Usługa niedostępna
500001 Błąd serwera
400103 Nieprawidłowe kodowanie zawartości lub typ zawartości
404001 Nie znaleziono urządzenia

Następne kroki

Jeśli potrzebujesz dodatkowej pomocy, możesz skontaktować się z ekspertami platformy Azure na forach microsoft Q&A i Stack Overflow. Alternatywnie możesz zgłosić zdarzenie pomoc techniczna platformy Azure. Przejdź do witryny pomoc techniczna platformy Azure i wybierz pozycję Uzyskaj pomoc techniczną.