Udostępnij za pośrednictwem


Monitorowanie, diagnozowanie i rozwiązywanie problemów z łącznością urządzeń usługi Azure IoT Hub

Połączenie problemy z wydajnością urządzeń IoT mogą być trudne do rozwiązania, ponieważ istnieje wiele możliwych punktów awarii. Logika aplikacji, sieci fizyczne, protokoły, sprzęt, usługa IoT Hub i inne usługi w chmurze mogą powodować problemy. Możliwość wykrywania i ustalania źródła problemu jest krytyczna. Jednak rozwiązanie IoT na dużą skalę może mieć tysiące urządzeń, więc nie jest praktyczne ręczne sprawdzanie poszczególnych urządzeń. Usługa IoT Hub integruje się z dwiema usługami platformy Azure, które ułatwiają:

  • Usługa Azure Monitor w usłudze Azure Monitor umożliwia zbieranie, analizowanie i wykonywanie działań telemetrycznych z usługi IoT Hub. Aby ułatwić wykrywanie, diagnozowanie i rozwiązywanie tych problemów na dużą skalę, skorzystaj z możliwości monitorowania, które zapewnia usługa IoT Hub za pośrednictwem usługi Azure Monitor. Obejmuje to konfigurowanie alertów w celu wyzwalania powiadomień i akcji w przypadku wystąpienia rozłączeń oraz konfigurowania dzienników, których można użyć do odnajdywania warunków, które spowodowały rozłączenie.

  • Usługa Azure Event Grid — w przypadku infrastruktury krytycznej i rozłączania poszczególnych urządzeń użyj usługi Azure Event Grid , aby zasubskrybować zdarzenia połączenia urządzenia i rozłączenia emitowane przez usługę IoT Hub. Usługa Azure Event Grid umożliwia korzystanie z dowolnego z następujących programów obsługi zdarzeń:

    • Azure Functions
    • Logic Apps
    • Azure Automation
    • Elementy WebHook
    • Queue Storage
    • Połączenia hybrydowe
    • Event Hubs

Event Grid a Azure Monitor

Usługa Event Grid udostępnia rozwiązanie do monitorowania urządzeń o małym opóźnieniu, które umożliwia śledzenie połączeń urządzeń pod kątem krytycznych urządzeń i infrastruktury. Usługa Azure Monitor udostępnia metrykę o nazwie Połączenie ed urządzeń, których można użyć do monitorowania liczby urządzeń połączonych z usługą IoT Hub i wyzwalania alertu, gdy ta liczba spadnie poniżej progu statycznego.

Podczas podejmowania decyzji, czy w konkretnym scenariuszu należy użyć usługi Event Grid, czy usługi Azure Monitor:

  • Opóźnienie alertu: zdarzenia połączenia usługi IoT Hub są dostarczane znacznie szybciej za pośrednictwem usługi Event Grid. Dzięki temu usługa Event Grid jest lepszym wyborem w scenariuszach, w których szybkie powiadomienie jest pożądane.

  • Powiadomienia dla poszczególnych urządzeń: usługa Event Grid umożliwia śledzenie połączeń i rozłączeń dla poszczególnych urządzeń. Dzięki temu usługa Event Grid jest lepszym wyborem w scenariuszach, w których należy monitorować połączenia dla urządzeń o krytycznym znaczeniu.

  • Uproszczona konfiguracja: alerty metryk usługi Azure Monitor zapewniają uproszczone środowisko konfiguracji, które nie wymaga integracji z innymi usługami w celu dostarczania powiadomień za pośrednictwem poczty e-mail, wiadomości SMS, głosu i innych powiadomień. Usługa Event Grid wymaga integracji z innymi usługami platformy Azure w celu dostarczania powiadomień. Obie usługi mogą integrować się z innymi usługami, aby wyzwalać bardziej złożone akcje.

Event Grid: monitorowanie zdarzeń łączenia i rozłączania

Aby monitorować zdarzenia łączenia i odłączania urządzeń w środowisku produkcyjnym, zalecamy subskrybowanie zdarzeń Device Połączenie ed i DeviceDisconnected w usłudze Event Grid w celu wyzwalania alertów i monitorowania stanu połączenia urządzenia. Usługa Event Grid zapewnia mniejsze opóźnienie zdarzeń niż usługa Azure Monitor i można je monitorować na poszczególnych urządzeniach. Te czynniki sprawiają, że usługa Event Grid jest preferowaną metodą monitorowania krytycznych urządzeń i infrastruktury.

Jeśli używasz usługi Event Grid do monitorowania lub wyzwalania alertów dotyczących rozłączania urządzenia, upewnij się, że tworzysz sposób filtrowania okresowych rozłączeń z powodu odnawiania tokenu SAS na urządzeniach korzystających z zestawów SDK usługi Azure IoT. Aby dowiedzieć się więcej, zobacz Zachowanie rozłączania urządzenia MQTT z zestawami SDK usługi Azure IoT.

Zapoznaj się z następującymi artykułami, aby dowiedzieć się więcej na temat monitorowania zdarzeń połączenia urządzenia za pomocą usługi Event Grid:

Azure Monitor: kierowanie zdarzeń połączenia do dzienników

Usługa IoT Hub stale emituje dzienniki zasobów dla kilku kategorii operacji. Aby zebrać te dane dziennika, należy jednak utworzyć ustawienie diagnostyczne, aby skierować je do miejsca docelowego, w którym można je przeanalizować lub zarchiwizować. Jednym z takich miejsc docelowych jest dzienniki usługi Azure Monitor za pośrednictwem obszaru roboczego usługi Log Analytics (zobacz cennik), w którym można analizować dane przy użyciu zapytań Kusto.

Kategoria połączeń dzienników zasobów usługi IoT Hub emituje operacje i błędy związane z połączeniami urządzeń. Poniższy zrzut ekranu przedstawia ustawienie diagnostyczne umożliwiające kierowanie tych dzienników do obszaru roboczego usługi Log Analytics:

Zalecane ustawienie wysyłania dzienników łączności do obszaru roboczego usługi Log Analytics.

Zalecamy utworzenie ustawienia diagnostycznego tak szybko, jak to możliwe po utworzeniu centrum IoT Hub, ponieważ chociaż usługa IoT Hub zawsze emituje dzienniki zasobów, nie są zbierane przez usługę Azure Monitor, dopóki nie będą kierowane do miejsca docelowego.

Aby dowiedzieć się więcej na temat routingu dzienników do miejsca docelowego, zobacz Zbieranie i routing. Aby uzyskać szczegółowe instrukcje dotyczące tworzenia ustawienia diagnostycznego, zobacz samouczek Używanie metryk i dzienników.

Azure Monitor: konfigurowanie alertów metryk dla rozłączania urządzeń

Alerty można skonfigurować na podstawie metryk platformy emitowanych przez usługę IoT Hub. Za pomocą alertów dotyczących metryk można powiadamiać osoby, że wystąpił warunek zainteresowania, a także wyzwalać akcje, które mogą automatycznie reagować na ten warunek.

Metryka Połączenie urządzeń (wersja zapoznawcza) informuje, ile urządzeń jest połączonych z usługą IoT Hub. Alerty można utworzyć w celu wyzwolenia, jeśli ta metryka spadnie poniżej wartości progowej:

Ustawienia logiki alertów dla metryki połączonych urządzeń.

Reguły alertów metryk umożliwiają monitorowanie anomalii rozłączania urządzenia na dużą skalę. Oznacza to, że użyj alertów, aby określić, kiedy nieoczekiwanie rozłączysz znaczną liczbę urządzeń. Po wykryciu tego problemu możesz przejrzeć dzienniki, aby rozwiązać ten problem. Aby monitorować rozłączenia i rozłączania poszczególnych urządzeń pod kątem krytycznych urządzeń w czasie zbliżonym do rzeczywistego, należy jednak użyć usługi Event Grid.

Aby dowiedzieć się więcej o alertach w usłudze IoT Hub, zobacz Alerty w monitorze usługi IoT Hub. Aby zapoznać się z przewodnikiem tworzenia alertów w usłudze IoT Hub, zobacz samouczek Korzystanie z metryk i dzienników. Aby uzyskać bardziej szczegółowe omówienie alertów, zobacz Omówienie alertów na platformie Microsoft Azure w dokumentacji usługi Azure Monitor.

Azure Monitor: rozwiązywanie problemów z łącznością przy użyciu dzienników

Po wykryciu rozłączenia urządzenia przy użyciu alertów metryk usługi Azure Monitor lub usługi Event Grid możesz użyć dzienników, aby ułatwić rozwiązywanie problemów z przyczyną. W tej sekcji opisano sposób wyszukiwania typowych problemów w dziennikach usługi Azure Monitor. W poniższych krokach założono, że utworzono już ustawienie diagnostyczne służące do wysyłania dzienników usługi IoT Hub Połączenie ions do obszaru roboczego usługi Log Analytics.

Po utworzeniu ustawienia diagnostycznego w celu kierowania dzienników zasobów usługi IoT Hub do dzienników usługi Azure Monitor wykonaj następujące kroki, aby wyświetlić dzienniki w witrynie Azure Portal.

  1. Przejdź do centrum IoT Hub w witrynie Azure Portal.

  2. W obszarze Monitorowanie w okienku po lewej stronie centrum IoT Wybierz pozycję Dzienniki.

  3. Aby odizolować dzienniki błędów łączności dla usługi IoT Hub, wprowadź następujące zapytanie w edytorze zapytań, a następnie wybierz pozycję Uruchom:

    AzureDiagnostics
    | where ( ResourceType == "IOTHUBS" and Category == "Connections" and Level == "Error")
    
  4. Jeśli istnieją wyniki, wyszukaj OperationNameciąg , ResultType (kod błędu) i ResultDescription (komunikat o błędzie), aby uzyskać więcej szczegółów.

    Przykład dziennika błędów

Skorzystaj z następujących przewodników rozwiązywania problemów, aby uzyskać pomoc dotyczącą najczęstszych błędów:

Azure Monitor: monitorowanie łączności dla określonego urządzenia przy użyciu dzienników

Mogą wystąpić sytuacje, w których chcesz użyć usługi Azure Monitor, aby wyświetlić błędy łączności i informacje dotyczące określonego urządzenia. Aby odizolować zdarzenia łączności dla urządzenia, możesz wykonać te same kroki co w poprzedniej sekcji, ale wprowadź następujące zapytanie. Zastąp element test-device nazwą urządzenia.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend DeviceId = tostring(parse_json(properties_s).deviceId)
| where DeviceId == "test-device"

Zapytanie zwraca zarówno zdarzenia o błędzie, jak i zdarzenia informacyjne dla urządzenia docelowego. W poniższych przykładowych danych wyjściowych przedstawiono zdarzenie informacyjne Połączenie:

Zrzut ekranu przedstawiający zdarzenie Połączenie urządzenia w dziennikach.

Zachowanie rozłączania urządzenia MQTT z zestawami SDK usługi Azure IoT

Zestawy SDK urządzeń usługi Azure IoT rozłączają się z usługą IoT Hub, a następnie ponownie nawiążą połączenie po odnowieniu tokenów SAS za pośrednictwem protokołu MQTT (i MQTT za pośrednictwem protokołu WebSockets). W dziennikach jest to wyświetlane jako informacyjne rozłączanie urządzenia i nawiązywanie połączenia zdarzeń czasami towarzyszy zdarzeń błędów.

Domyślnie cykl życia tokenu wynosi 60 minut dla wszystkich zestawów SDK; można go jednak zmienić przez deweloperów w niektórych zestawach SDK. W poniższej tabeli podsumowano cykl życia tokenu, odnawianie tokenu i zachowanie odnawiania tokenu dla każdego zestawu SDK:

SDK Cykl życia tokenu Odnawianie tokenu Zachowanie odnawiania
.NET 60 minut, konfigurowalne 85% cyklu życia, konfigurowalne Zestaw SDK rozłącza się i ponownie łączy w okresie cyklu życia tokenu oraz 10-minutowym okresie prolongaty. Zdarzenia informacyjne i błędy wygenerowane w dziennikach.
Java 60 minut, konfigurowalne 85% cyklu życia, których nie można skonfigurować Zestaw SDK rozłącza się i ponownie łączy w okresie cyklu życia tokenu oraz 10-minutowym okresie prolongaty. Zdarzenia informacyjne i błędy wygenerowane w dziennikach.
Node.js 60 minut, konfigurowalne Konfigurowalne Zestaw SDK rozłącza się i ponownie nawiązuje połączenie podczas odnawiania tokenu. Tylko zdarzenia informacyjne są generowane w dziennikach.
Python 60 minut, konfigurowalne 120 sekund przed wygaśnięciem Zestaw SDK rozłącza się i ponownie nawiązuje połączenie przy cyklu życia tokenu.

Na poniższych zrzutach ekranu przedstawiono zachowanie odnawiania tokenu w dziennikach usługi Azure Monitor dla różnych zestawów SDK. Próg cyklu życia i odnawiania tokenu został zmieniony z wartości domyślnych, jak wspomniano.

  • Zestaw SDK urządzeń platformy .NET z 1200 sekundami (20 minut) cyklem życia tokenu i odnawianiem ustawionym na 90% cyklu życia. rozłączenia są wykonywane co 30 minut:

    Zachowanie błędu podczas odnawiania tokenu za pośrednictwem protokołu MQTT w dziennikach usługi Azure Monitor przy użyciu zestawu .NET SDK.

  • Zestaw JAVA SDK z cyklem życia tokenu wynoszącym 300 sekund (5 minut) i domyślnym 85% odnawianiem cyklu życia. Rozłączenia są wykonywane co 15 minut:

    Zachowanie błędu podczas odnawiania tokenu za pośrednictwem protokołu MQTT w dziennikach usługi Azure Monitor przy użyciu zestawu JAVA SDK.

  • Zestaw Node SDK z 300 sekundami (5 minut) cyklem życia tokenu i odnawianiem tokenu ustawionym na 3 minuty. Rozłączenia występują podczas odnawiania tokenu. Ponadto nie ma żadnych błędów, emitowane są tylko zdarzenia połączenia informacyjnego/rozłączania:

    Zachowanie błędu podczas odnawiania tokenu za pośrednictwem protokołu MQTT w dziennikach usługi Azure Monitor przy użyciu zestawu Node SDK.

Następujące zapytanie zostało użyte do zebrania wyników. Zapytanie wyodrębnia nazwę i wersję zestawu SDK z torby właściwości. Aby dowiedzieć się więcej, zobacz Wersja zestawu SDK w dziennikach usługi IoT Hub.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend parsed_json = parse_json(properties_s)
| extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId) , Protocol =  tostring(parsed_json.protocol)
| distinct TimeGenerated, OperationName, Level, ResultType, ResultDescription, DeviceId, Protocol, SDKVersion

Jako deweloper lub operator rozwiązań IoT należy pamiętać o tym zachowaniu, aby interpretować zdarzenia łączenia/rozłączania i powiązanych błędów w dziennikach. Jeśli chcesz zmienić zachowanie cyklu życia lub odnawiania tokenu dla urządzeń, sprawdź, czy urządzenie implementuje ustawienie bliźniaczej reprezentacji urządzenia, czy metodę urządzenia, która umożliwia to.

Jeśli monitorujesz połączenia urządzeń z usługą Event Hubs, upewnij się, że tworzysz sposób filtrowania okresowych rozłączeń z powodu odnowienia tokenu SAS. Na przykład nie wyzwalaj akcji na podstawie rozłączeń, o ile zdarzenie rozłączenia następuje po zdarzeniu połączenia w określonym przedziale czasu.

Uwaga

Usługa IoT Hub obsługuje tylko jedno aktywne połączenie MQTT na urządzenie. Każde nowe połączenie MQTT w imieniu tego samego identyfikatora urządzenia powoduje, że usługa IoT Hub porzuci istniejące połączenie.

400027 Połączenie ionForcefullyClosedOnNew Połączenie ion zostanie zalogowany do dzienników usługi IoT Hub

Próbowałem kroków, ale nie działały

Jeśli poprzednie kroki nie pomogły, spróbuj wykonać następujące czynności:

Następne kroki

  • Aby dowiedzieć się więcej na temat rozwiązywania przejściowych problemów, zobacz Obsługa błędów przejściowych.

  • Aby dowiedzieć się więcej na temat zestawów SDK urządzeń Azure IoT i zarządzania ponownymi próbami, zobacz Wzorce ponawiania prób.