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. Te komunikaty można 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, wybierz problem, aby uzyskać szczegółowe kroki.
- Komunikaty z moich urządzeń nie są kierowane zgodnie z oczekiwaniami
- Nagle przestałem dostawać komunikaty w wbudowanym punkcie końcowym usługi Event Hubs
Komunikaty z moich urządzeń nie są kierowane zgodnie z oczekiwaniami
Aby rozwiązać ten problem, przeanalizuj następujące informacje.
Metryki routingu dla tego punktu końcowego
Wszystkie metryki usługi IoT Hub związane z trasowaniem są poprzedzone prefiksem Routing. Możesz połączyć informacje z wielu metryk, aby zidentyfikować główną przyczynę problemów. Na przykład użyj metryki Trasowanie dostarczania, 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ź metrykę Opóźnienie trasowania, 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. Ten interfejs API 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 informacje.
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 są wysyłane tylko komunikaty, które nie pasują do żadnych warunków zapytania dotyczących tras. 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 i ostatniego znanego błędu, aby zidentyfikować przyczynę, dla którego punkt końcowy nie jest w dobrej kondycji. W tej tabeli wymieniono najczęstsze błędy.
Ostatni znany błąd | Opis/w przypadku wystąpienia | Możliwe środki zaradcze |
---|---|---|
Przejściowy | Wystąpił przejściowy błąd i 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. | Ten błąd jest wyjątkiem wewnętrznym, ale także obserwuj dzienniki 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 została zmieniona, 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ą.