Monitorování dvojčat modulu
Platí pro: IoT Edge 1.5 IoT Edge 1.4
Důležité
Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.
Dvojčata modulů ve službě Azure IoT Hub umožňují monitorovat připojení a stav nasazení IoT Edge. Dvojčata modulů ukládají ve službě IoT Hub užitečné informace o výkonu spuštěných modulů. Agent IoT Edge a moduly modulu runtime centra IoT Edge každý udržuje svá dvojčata $edgeAgent
modulů a $edgeHub
v uvedeném pořadí:
$edgeAgent
obsahuje data o stavu a připojení k agentům IoT Edge i modulům modulu runtime centra IoT Edge a vašim vlastním modulům. Agent IoT Edge zodpovídá za nasazení modulů, monitorování a hlášení stavu připojení do vašeho centra Azure IoT.$edgeHub
obsahuje data o komunikaci mezi centrem IoT Edge spuštěným na zařízení a centrem Azure IoT. To zahrnuje zpracování příchozích zpráv z podřízených zařízení. Centrum IoT Edge zodpovídá za zpracování komunikace mezi Azure IoT Hubem a zařízeními a moduly IoT Edge.
Data jsou uspořádaná do metadat, značek spolu s požadovanými a hlášenými sadami vlastností ve strukturách JSON dvojčat modulu. Požadované vlastnosti, které jste zadali v souboru deployment.json, se zkopírují do dvojčat modulu. Agent IoT Edge a centrum IoT Edge aktualizují ohlášené vlastnosti svých modulů.
Podobně se požadované vlastnosti zadané pro vaše vlastní moduly v souboru deployment.json zkopírují do dvojčete modulu, ale vaše řešení zodpovídá za poskytnutí hodnot ohlášených vlastností.
Tento článek popisuje, jak zkontrolovat dvojčata modulů na webu Azure Portal, v Azure CLI a v editoru Visual Studio Code. Informace o monitorování způsobu, jakým vaše zařízení přijímají nasazení, najdete v tématu Monitorování nasazení IoT Edge. Přehled konceptů dvojčat modulů najdete v tématu Principy a použití dvojčat modulů ve službě IoT Hub.
Tip
Ohlášené vlastnosti modulu runtime můžou být zastaralé, pokud se zařízení IoT Edge odpojí od svého centra IoT. Pokud chcete zjistit, jestli došlo ke ztrátě připojení, můžete ho $edgeAgent
otestovat příkazem ping.
Monitorování dvojčat modulu runtime
Pokud chcete vyřešit problémy s připojením k nasazení, projděte si dvojčata modulů modulu runtime ioT Edge a IoT Edge Hub a pak přejděte k podrobnostem o dalších modulech.
Monitorování dvojčete modulu agenta IoT Edge
Následující kód JSON ukazuje $edgeAgent
dvojče modulu v editoru Visual Studio Code s většinou sbalených oddílů JSON.
{
"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
}
}
}
Json je možné popsat v následujících částech počínaje shora:
- Metadata – obsahuje data připojení. Zajímavé je, že stav připojení pro agenta IoT Edge je vždy v odpojeném stavu:
"connectionState": "Disconnected"
. Důvodem, proč je stav připojení, souvisí se zprávami typu zařízení-cloud (D2C) a agent IoT Edge neodesílá zprávy D2C. - Vlastnosti – obsahuje pododdíly
desired
.reported
- Properties.desired – (zobrazeno sbalené) Očekávané hodnoty vlastností nastavené operátorem v souboru deployment.json.
- Properties.reported – Nejnovější hodnoty vlastností hlášené agentem IoT Edge
properties.desired
Obě části properties.reported
mají podobnou strukturu a obsahují další metadata pro informace o schématu, verzi a modulu runtime. Součástí je modules
také část pro všechny vlastní moduly (například SimulatedTemperatureSensor
) a systemModules
oddíl modulů $edgeAgent
runtime a $edgeHub
moduly runtime.
Porovnáním hodnot ohlášených vlastností s požadovanými hodnotami můžete určit nesrovnalosti a identifikovat odpojení, které vám můžou pomoct s řešením problémů. Při těchto porovnáních zkontrolujte hlášenou $lastUpdated
hodnotu v metadata
části pro vlastnost, kterou prošetřujete.
Při řešení potíží jsou důležité následující vlastnosti:
exitcode – jakákoli jiná hodnota než nula značí, že se modul zastavil se selháním. Kódy chyb 137 nebo 143 se však používají, pokud byl modul záměrně nastaven na zastavený stav.
lastStartTimeUtc – zobrazuje datum a čas , kdy byl kontejner naposledy spuštěn. Tato hodnota je 0001-01-01T00:00:00Z, pokud kontejner nebyl spuštěn.
lastExitTimeUtc – zobrazuje datum a čas , který kontejner naposledy dokončil. Tato hodnota je 0001-01-01T00:00:00Z, pokud je kontejner spuštěný a nebyl nikdy zastaven.
runtimeStatus – Může být jedna z následujících hodnot:
Hodnota Popis neznámé Výchozí stav, dokud se nevytvořilo nasazení. zásady Modul je naplánovaný tak, aby se spustil, ale aktuálně není spuštěný. Tato hodnota je užitečná pro modul, který při restartování prochází změnami stavu. Pokud modul, který selhává, čeká na restartování během období studeného stavu, bude modul ve stavu zpětného ukončení. spuštěno Označuje, že modul je aktuálně spuštěný. nezdravý Označuje, že kontrola stavu sondy selhala nebo vypršel časový limit. zastaveno Označuje, že se modul úspěšně ukončil (s nulovým ukončovacím kódem). selhalo Označuje, že modul se ukončil s ukončovacím kódem selhání (nenulový). Modul se může z tohoto stavu v závislosti na zásadách restartování vrátit zpět zpět. Tento stav může značit, že u modulu došlo k neopravitelné chybě. K selhání dochází v případě, že agent Microsoft Monitoring Agent (MMA) už nemůže modul resuscitatovat, což vyžaduje nové nasazení.
Podrobnosti najdete v části Vlastnosti hlášené agentem EdgeAgent.
Monitorování dvojčete modulu centra IoT Edge
Následující kód JSON ukazuje $edgeHub
dvojče modulu v editoru Visual Studio Code s většinou sbalených oddílů JSON.
{
"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
}
}
}
Json je možné popsat v následujících částech počínaje shora:
Metadata – obsahuje data připojení.
Vlastnosti – obsahuje pododdíly
desired
.reported
Properties.desired – (zobrazeno sbalené) Očekávané hodnoty vlastností nastavené operátorem v souboru deployment.json.
Properties.reported – Nejnovější hodnoty vlastností hlášené centrem IoT Edge
Pokud máte problémy s podřízenými zařízeními, je vhodné začít prozkoumáním těchto dat.
Monitorování dvojčat vlastních modulů
Informace o připojení vlastních modulů se udržují ve dvojčeti modulu agenta IoT Edge. Dvojče modulu pro váš vlastní modul se používá především k údržbě dat pro vaše řešení. Požadované vlastnosti, které jste definovali v souboru deployment.json, se projeví ve dvojčeti modulu a váš modul může podle potřeby aktualizovat hlášené hodnoty vlastností.
Upřednostňovaný programovací jazyk můžete použít se sadami SDK pro zařízení Azure IoT Hubu k aktualizaci hodnot ohlášených vlastností ve dvojčeti modulu na základě kódu aplikace vašeho modulu. Následující postup používá k tomu sadu Azure SDK pro .NET pomocí kódu z modulu SimulatedTemperatureSensor :
Vytvořte instanci ModuleClient pomocí metody CreateFromEnvironmentAysnc .
Získejte kolekci vlastností dvojčete modulu pomocí metody GetTwinAsync .
Vytvořte naslouchací proces (předání zpětného volání), který zachytí změny požadovaných vlastností pomocí metody SetDesiredPropertyUpdateCallbackAsync .
V metodě zpětného volání aktualizujte ohlášené vlastnosti ve dvojčeti modulu metodou UpdateReportedPropertiesAsync a předejte TwinCollection hodnot vlastností, které chcete nastavit.
Přístup k dvojčatům modulu
Projděte si JSON pro dvojčata modulů ve službě Azure IoT Hub, v editoru Visual Studio Code a pomocí Azure CLI.
Monitorování ve službě Azure IoT Hub
Zobrazení json dvojčete modulu:
Přihlaste se k webu Azure Portal a přejděte do centra IoT.
V nabídce Správa zařízení vyberte zařízení.
Vyberte ID zařízení IoT Edge s moduly, které chcete monitorovat.
Na kartě Moduly vyberte název modulu a pak v horním řádku nabídek vyberte Dvojče identity modulu.
Pokud se zobrazí zpráva "Identita modulu pro tento modul neexistuje", tato chyba značí, že back-endové řešení už není k dispozici, které původně vytvořilo identitu.
Monitorování dvojčat modulů v editoru Visual Studio Code
Kontrola a úprava dvojčete modulu:
Pokud ještě není nainstalované, nainstalujte rozšíření Azure IoT Edge a Azure IoT Hub . Nástroje Azure IoT Edge pro rozšíření Visual Studio Code jsou v režimu údržby.
V Průzkumníku rozbalte Azure IoT Hub a potom rozbalte zařízení s modulem, který chcete monitorovat.
Klikněte pravým tlačítkem na modul a vyberte Upravit dvojče modulu. Dočasný soubor dvojčete modulu se stáhne do počítače a zobrazí se v editoru Visual Studio Code.
Pokud provedete změny, vyberte aktualizovat dvojče modulu nad kódem v editoru a uložte změny do centra IoT.
Monitorování dvojčat modulů v Azure CLI
Pokud chcete zjistit, jestli je IoT Edge spuštěný, pomocí příkazu az iot hub invoke-module-method otestujte agenta IoT Edge příkazem ping.
Struktura az iot hub module-twin poskytuje tyto příkazy:
- az iot hub module-twin show – zobrazení definice dvojčete modulu
- az iot hub module-twin update – aktualizace definice dvojčete modulu
- az iot hub module-twin replace - Replace a module twin definition with a target JSON.
Tip
Pokud chcete moduly runtime cílit pomocí příkazů rozhraní příkazového řádku, budete možná muset řídicí znak $
v ID modulu. Příklad:
az iot hub module-twin show -m '$edgeAgent' -n <hub name> -d <device name>
Nebo:
az iot hub module-twin show -m \$edgeAgent -n <hub name> -d <device name>
Další kroky
Naučte se komunikovat s EdgeAgent pomocí integrovaných přímých metod.