Monitorowanie bliźniaczych reprezentacji modułu
Dotyczy: IoT Edge 1.5 IoT Edge 1.4
Ważne
Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4 LTS. Usługa IoT Edge 1.4 LTS kończy się 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.
Bliźniacze reprezentacje modułów w usłudze Azure IoT Hub umożliwiają monitorowanie łączności i kondycji wdrożeń usługi IoT Edge. Bliźniacze reprezentacje modułów przechowują przydatne informacje w centrum IoT o wydajności uruchomionych modułów. Agent usługi IoT Edge i moduły środowiska uruchomieniowego centrum usługi IoT Edge zachowują odpowiednio bliźniacze reprezentacje modułów $edgeAgent
i $edgeHub
:
$edgeAgent
Zawiera dane dotyczące kondycji i łączności dotyczące zarówno agenta usługi IoT Edge, jak i modułów środowiska uruchomieniowego centrum usługi IoT Edge oraz modułów niestandardowych. Agent usługi IoT Edge jest odpowiedzialny za wdrażanie modułów, monitorowanie ich i raportowanie stanu połączenia do centrum Azure IoT Hub.$edgeHub
zawiera dane dotyczące komunikacji między centrum usługi IoT Edge uruchomionym na urządzeniu i centrum Azure IoT Hub. Obejmuje to przetwarzanie komunikatów przychodzących z urządzeń podrzędnych. Centrum usługi IoT Edge jest odpowiedzialne za przetwarzanie komunikacji między usługą Azure IoT Hub a urządzeniami i modułami usługi IoT Edge.
Dane są zorganizowane w metadane, tagi wraz z żądanymi i zgłoszonymi zestawami właściwości w strukturach JSON bliźniaczych reprezentacji modułu. Żądane właściwości określone w pliku deployment.json są kopiowane do bliźniaczych reprezentacji modułów. Agent usługi IoT Edge i centrum usługi IoT Edge aktualizują zgłoszone właściwości dla swoich modułów.
Podobnie żądane właściwości określone dla modułów niestandardowych w pliku deployment.json są kopiowane do bliźniaczej reprezentacji modułu, ale twoje rozwiązanie jest odpowiedzialne za dostarczanie wartości zgłoszonych właściwości.
W tym artykule opisano sposób przeglądania bliźniaczych reprezentacji modułów w witrynie Azure Portal, interfejsie wiersza polecenia platformy Azure i w programie Visual Studio Code. Aby uzyskać informacje na temat monitorowania sposobu odbierania wdrożeń przez urządzenia, zobacz Monitorowanie wdrożeń usługi IoT Edge. Aby zapoznać się z omówieniem koncepcji bliźniaczych reprezentacji modułów, zobacz Omówienie bliźniaczych reprezentacji modułów i korzystanie z nich w usłudze IoT Hub.
Napiwek
Zgłoszone właściwości modułu środowiska uruchomieniowego mogą być nieaktualne, jeśli urządzenie usługi IoT Edge zostanie odłączone od centrum IoT Hub. Możesz wysłać polecenie ping do modułu $edgeAgent
, aby określić, czy połączenie zostało utracone.
Monitorowanie bliźniaczych reprezentacji modułu środowiska uruchomieniowego
Aby rozwiązać problemy z łącznością wdrożenia, zapoznaj się z bliźniaczymi reprezentacjami modułów środowiska uruchomieniowego usługi IoT Edge i bliźniaczymi modułami usługi IoT Edge, a następnie przejdź do szczegółów innych modułów.
Monitorowanie bliźniaczej reprezentacji modułu agenta usługi IoT Edge
Poniższy kod JSON przedstawia bliźniacza reprezentację modułu $edgeAgent
w programie Visual Studio Code z większą częścią sekcji JSON zwiniętych.
{
"deviceId": "Windows109",
"moduleId": "$edgeAgent",
"etag": "AAAAAAAAAAU=",
"deviceEtag": "NzgwNjA1MDUz",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00Z",
"connectionState": "Disconnected",
"lastActivityTime": "0001-01-01T00:00:00Z",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 53,
"properties": {
"desired": { "···" },
"reported": {
"schemaVersion": "1.0",
"version": { "···" },
"lastDesiredStatus": { "···" },
"runtime": { "···" },
"systemModules": {
"edgeAgent": { "···" },
"edgeHub": { "···" }
},
"lastDesiredVersion": 5,
"modules": {
"SimulatedTemperatureSensor": { "···" }
},
"$metadata": { "···" },
"$version": 48
}
}
}
Kod JSON można opisać w poniższych sekcjach, zaczynając od góry:
- Metadane — zawiera dane łączności. Co ciekawe, stan połączenia agenta usługi IoT Edge jest zawsze w stanie rozłączenia:
"connectionState": "Disconnected"
. Powodem, dla którego stan połączenia dotyczy komunikatów typu urządzenie-chmura (D2C), a agent usługi IoT Edge nie wysyła komunikatów D2C. - Właściwości — zawiera
desired
podsekcje ireported
. - Properties.desired — (pokazano zwinięte) Oczekiwane wartości właściwości ustawione przez operator w pliku deployment.json.
- Properties.reported — najnowsze wartości właściwości zgłaszane przez agenta usługi IoT Edge.
properties.desired
Obie sekcje mają properties.reported
podobną strukturę i zawierają dodatkowe metadane dotyczące schematu, wersji i środowiska uruchomieniowego. Uwzględniona jest modules
również sekcja dla dowolnych modułów niestandardowych (takich jak SimulatedTemperatureSensor
), oraz systemModules
sekcji dla $edgeAgent
modułów środowiska uruchomieniowego i modułów środowiska uruchomieniowego $edgeHub
.
Porównując zgłoszone wartości właściwości z żądanymi wartościami, można określić rozbieżności i zidentyfikować rozłączenia, które mogą pomóc w rozwiązywaniu problemów. W przypadku tych porównań sprawdź zgłoszoną $lastUpdated
wartość w metadata
sekcji dotyczącej badanej właściwości.
Następujące właściwości są ważne do zbadania pod kątem rozwiązywania problemów:
exitcode — dowolna wartość inna niż zero wskazuje, że moduł został zatrzymany z powodu błędu. Kody błędów 137 lub 143 są jednak używane, jeśli moduł został celowo ustawiony na zatrzymany stan.
lastStartTimeUtc — pokazuje godzinę ostatniego uruchomienia kontenera. Ta wartość to 0001-01-01T00:00:00Z, jeśli kontener nie został uruchomiony.
lastExitTimeUtc — pokazuje godzinę zakończenia kontenera. Ta wartość to 0001-01-01T00:00:00Z, jeśli kontener jest uruchomiony i nigdy nie został zatrzymany.
runtimeStatus — może być jedną z następujących wartości:
Wartość Opis Nieznana Stan domyślny do momentu utworzenia wdrożenia. wycofywanie Moduł jest zaplanowany do uruchomienia, ale nie jest obecnie uruchomiony. Ta wartość jest przydatna w przypadku modułu przechodzącego zmiany stanu podczas ponownego uruchamiania. Gdy moduł, który kończy się niepowodzeniem, oczekuje na ponowne uruchomienie w okresie ochładzania, moduł będzie w stanie wycofywania. uruchomiono Wskazuje, że moduł jest obecnie uruchomiony. niezdrowy Wskazuje, że sprawdzanie sondy kondycji nie powiodło się lub upłynął limit czasu. zatrzymano Wskazuje, że moduł zakończył się pomyślnie (z kodem zakończenia zero). niepowodzenie Wskazuje, że moduł zakończył działanie z kodem zakończenia błędu (niezerowym). Moduł może przejść z powrotem do wycofywania z tego stanu w zależności od zastosowanych zasad ponownego uruchamiania. Ten stan może wskazywać, że moduł napotkał nieodwracalny błąd. Awaria występuje, gdy program Microsoft Monitoring Agent (MMA) nie może już ponownie zainicjować modułu, co wymaga nowego wdrożenia.
Aby uzyskać szczegółowe informacje, zobacz Właściwości zgłoszone przez usługę EdgeAgent.
Monitorowanie bliźniaczej reprezentacji modułu usługi IoT Edge
Poniższy kod JSON przedstawia bliźniacza reprezentację modułu $edgeHub
w programie Visual Studio Code z większą częścią sekcji JSON zwiniętych.
{
"deviceId": "Windows109",
"moduleId": "$edgeHub",
"etag": "AAAAAAAAAAU=",
"deviceEtag": "NzgwNjA1MDU2",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00Z",
"connectionState": "Connected",
"lastActivityTime": "0001-01-01T00:00:00Z",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 102,
"properties": {
"desired": { "···" },
"reported": {
"schemaVersion": "1.0",
"version": { "···" },
"lastDesiredVersion": 5,
"lastDesiredStatus": { "···" },
"clients": {
"Windows109/SimulatedTemperatureSensor": {
"status": "Disconnected",
"lastConnectedTimeUtc": "2020-04-08T21:42:42.1743956Z",
"lastDisconnectedTimeUtc": "2020-04-09T07:02:42.1398325Z"
}
},
"$metadata": { "···" },
"$version": 97
}
}
}
Kod JSON można opisać w poniższych sekcjach, zaczynając od góry:
Metadane — zawiera dane łączności.
Właściwości — zawiera
desired
podsekcje ireported
.Properties.desired — (pokazano zwinięte) Oczekiwane wartości właściwości ustawione przez operator w pliku deployment.json.
Properties.reported — najnowsze wartości właściwości zgłaszane przez centrum usługi IoT Edge.
Jeśli występują problemy z urządzeniami podrzędnymi, sprawdzenie tych danych byłoby dobrym miejscem do rozpoczęcia.
Monitorowanie bliźniaczych reprezentacji modułu niestandardowego
Informacje o łączności modułów niestandardowych są przechowywane w bliźniaczej reprezentacji modułu agenta usługi IoT Edge. Bliźniacze reprezentacje modułu dla modułu niestandardowego są używane głównie do obsługi danych dla rozwiązania. Żądane właściwości zdefiniowane w pliku deployment.json są odzwierciedlane w bliźniaczej reprezentacji modułu, a moduł może aktualizować zgłoszone wartości właściwości zgodnie z potrzebami.
Możesz użyć preferowanego języka programowania z zestawami SDK urządzeń usługi Azure IoT Hub, aby zaktualizować zgłaszane wartości właściwości w bliźniaczej reprezentacji modułu na podstawie kodu aplikacji modułu. Poniższa procedura używa zestawu Azure SDK dla platformy .NET, aby to zrobić, korzystając z kodu z modułu SimulatedTemperatureSensor :
Utwórz wystąpienie klasy ModuleClient za pomocą metody CreateFromEnvironmentAysnc .
Pobierz kolekcję właściwości bliźniaczej reprezentacji modułu za pomocą metody GetTwinAsync .
Utwórz odbiornik (przekazując wywołanie zwrotne), aby przechwycić zmiany żądanych właściwości za pomocą metody SetDesiredPropertyUpdateCallbackAsync .
W metodzie wywołania zwrotnego zaktualizuj zgłoszone właściwości w bliźniaczej reprezentacji modułu za pomocą metody UpdateReportedPropertiesAsync , przekazując element TwinCollection wartości właściwości, które chcesz ustawić.
Uzyskiwanie dostępu do bliźniaczych reprezentacji modułu
Możesz przejrzeć kod JSON dla bliźniaczych reprezentacji modułów w usłudze Azure IoT Hub, w programie Visual Studio Code i za pomocą interfejsu wiersza polecenia platformy Azure.
Monitorowanie w usłudze Azure IoT Hub
Aby wyświetlić kod JSON bliźniaczej reprezentacji modułu:
Zaloguj się do witryny Azure Portal i przejdź do centrum IoT Hub.
Wybierz pozycję Urządzenia w menu Zarządzanie urządzeniami .
Wybierz identyfikator urządzenia usługi IoT Edge z modułami, które chcesz monitorować.
Wybierz nazwę modułu na karcie Moduły , a następnie wybierz pozycję Bliźniacze reprezentacja tożsamości modułu na górnym pasku menu.
Jeśli zostanie wyświetlony komunikat "Tożsamość modułu nie istnieje dla tego modułu", ten błąd wskazuje, że rozwiązanie zaplecza nie jest już dostępne, które pierwotnie utworzyło tożsamość.
Monitorowanie bliźniaczych reprezentacji modułów w programie Visual Studio Code
Aby przejrzeć i edytować bliźniacze reprezentacje modułu:
Jeśli jeszcze nie zainstalowano, zainstaluj rozszerzenia usługi Azure IoT Edge i Azure IoT Hub . Rozszerzenia usługi Azure IoT Edge dla programu Visual Studio Code są w trybie konserwacji.
W Eksploratorze rozwiń usługę Azure IoT Hub, a następnie rozwiń urządzenie za pomocą modułu, który chcesz monitorować.
Kliknij prawym przyciskiem myszy moduł i wybierz polecenie Edytuj bliźniacze reprezentacje modułu. Plik tymczasowy bliźniaczej reprezentacji modułu jest pobierany na komputer i wyświetlany w programie Visual Studio Code.
Jeśli wprowadzisz zmiany, wybierz pozycję Aktualizuj bliźniaczą reprezentację modułu nad kodem w edytorze, aby zapisać zmiany w centrum IoT.
Monitorowanie bliźniaczych reprezentacji modułów w interfejsie wiersza polecenia platformy Azure
Aby sprawdzić, czy usługa IoT Edge jest uruchomiona, użyj metody az iot hub invoke-module-method , aby wysłać polecenie ping do agenta usługi IoT Edge.
Struktura az iot hub module-twin zapewnia następujące polecenia:
- az iot hub module-twin show — pokaż definicję bliźniaczej reprezentacji modułu.
- az iot hub module-twin update — aktualizowanie definicji bliźniaczej reprezentacji modułu.
- az iot hub module-twin replace — zastąp definicję bliźniaczej reprezentacji modułu docelowym kodem JSON.
Napiwek
Aby kierować moduły środowiska uruchomieniowego za pomocą poleceń interfejsu wiersza polecenia, może być konieczne ucieczka $
znaku w identyfikatorze modułu. Na przykład:
az iot hub module-twin show -m '$edgeAgent' -n <hub name> -d <device name>
Lub:
az iot hub module-twin show -m \$edgeAgent -n <hub name> -d <device name>
Następne kroki
Dowiedz się, jak komunikować się z usługą EdgeAgent przy użyciu wbudowanych metod bezpośrednich.