Sdílet prostřednictvím


Monitorování dvojčat modulu

Platí pro: Značka zaškrtnutí IoT Edge 1.5 IoT Edge 1.5 Značka zaškrtnutí IoT Edge 1.4 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 $edgeHubv 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ílydesired.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ílydesired.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 :

  1. Vytvořte instanci ModuleClient pomocí metody CreateFromEnvironmentAysnc .

  2. Získejte kolekci vlastností dvojčete modulu pomocí metody GetTwinAsync .

  3. Vytvořte naslouchací proces (předání zpětného volání), který zachytí změny požadovaných vlastností pomocí metody SetDesiredPropertyUpdateCallbackAsync .

  4. 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:

  1. Přihlaste se k webu Azure Portal a přejděte do centra IoT.

  2. V nabídce Správa zařízení vyberte zařízení.

  3. Vyberte ID zařízení IoT Edge s moduly, které chcete monitorovat.

  4. Na kartě Moduly vyberte název modulu a pak v horním řádku nabídek vyberte Dvojče identity modulu.

    Snímek obrazovky znázorňující, jak vybrat dvojče modulu pro zobrazení na webu Azure Portal

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:

  1. 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.

  2. V Průzkumníku rozbalte Azure IoT Hub a potom rozbalte zařízení s modulem, který chcete monitorovat.

  3. 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.

    Snímek obrazovky znázorňující, jak získat dvojče modulu pro úpravy 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.

Snímek obrazovky znázorňující aktualizaci dvojčete modulu v editoru Visual Studio Code

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.