Sdílet prostřednictvím


Monitorování dvojčat modulu

Platí pro:IoT Edge 1.5 - zaškrtnuto IoT Edge 1.5

Důležité

Podporovanou verzí je IoT Edge 1.5 LTS. IoT Edge 1.4 LTS je konec životnosti od 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í informace ve službě IoT Hub o výkonu spuštěných modulů. Agent IoT Edge a moduly runtime IoT Edge hub si každý udržuje vlastní dvojčata modulů: $edgeAgent a $edgeHub.

  • $edgeAgent obsahuje data o stavu a připojení o agentu IoT Edge, modulech modulu runtime centra IoT Edge a vašich vlastních modulech. Agent IoT Edge nasadí moduly, monitoruje je a hlásí stav 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 zpracovává komunikaci mezi zařízeními a moduly Azure IoT Hub a IoT Edge.

Data jsou uspořádaná do metadat, značek a požadovaných a ohlášených sad vlastností ve strukturách JSON dvojčat modulu. Požadované vlastnosti zadané v souboru deployment.json se zkopírují do dvojčat modulů. Agent IoT Edge a centrum IoT Edge aktualizují ohlášené vlastnosti svých modulů.

Podobně se požadované vlastnosti, které zadáte pro vlastní moduly v souboru deployment.json, zkopírují do dvojčete modulu, ale vaše řešení poskytuje hodnoty ohlášených vlastností.

Tento článek ukazuje, jak zkontrolovat dvojčata modulů na webu Azure Portal, v Azure CLI a 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 dvojčat modulů najdete v tématu Principy a používání dvojčat modulů ve službě IoT Hub.

Návod

Ohlášené vlastnosti modulu runtime můžou být zastaralé, pokud se zařízení IoT Edge odpojí od svého centra IoT. Příkazem Ping$edgeAgent zkontrolujte modul, jestli nedošlo ke ztrátě připojení.

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

Tento JSON ukazuje $edgeAgent modul twin ve Visual Studio Code s většinou sbalených sekcí.

{
  "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
    }
  }
}

Tento JSON obsahuje tyto části:

  • Metadata – obsahuje data připojení. Stav připojení agenta IoT Edge je vždy "Disconnected" protože se vztahuje na zprávy typu zařízení-do-cloud (D2C) a agent IoT Edge neodesílá zprávy D2C.
  • Vlastnosti – Obsahuje pododdíly desired a reported.
  • Properties.desired – (zobrazeno sbalené) Očekávané hodnoty vlastností nastavené v souboru deployment.json.
  • Properties.reported – nejnovější hodnoty vlastností hlášené agentem IoT Edge.

Obě sekce properties.desired a properties.reported mají podobnou strukturu a obsahují metadata pro schéma, verzi a informace o době běhu. Mají také modules oddíl pro vlastní moduly, jako je SimulatedTemperatureSensor, a systemModules oddíl pro moduly $edgeAgent a $edgeHub runtime.

Porovnejte hodnoty ohlášených vlastností s požadovanými hodnotami, abyste našli nesrovnalosti a identifikovali odpojení, které vám pomůžou řešit problémy. Při porovnávání hodnot zkontrolujte hlášenou $lastUpdated hodnotu v metadata části pro vlastnost, kterou prošetřujete.

Při řešení potíží zkontrolujte tyto vlastnosti:

  • exitcode – Jakákoli jiná hodnota než nula znamená, že modul se zastavil se selháním. Kódy chyb 137 nebo 143 se používají, pokud je modul záměrně nastavený na zastavený stav.

  • lastStartTimeUtc – zobrazuje datum a čas , kdy se kontejner naposledy spustil. Tato hodnota je 0001-01-01T00:00:00Z, pokud kontejner není spuštěný.

  • lastExitTimeUtc – zobrazuje datum a čas , kdy byl kontejner naposledy dokončen. Tato hodnota je 0001-01-01T00:00:00Z, pokud je kontejner spuštěný a nebyl nikdy zastaven.

  • runtimeStatus – má jednu z těchto hodnot:

    Hodnota Popis
    neznámé Výchozí stav, dokud se nevytvořilo nasazení.
    zásady Modul je naplánovaný ke spuštění, ale neběží. Tato hodnota je užitečná pro modul, který se restartuje. Pokud modul, který selhává, čeká na restartování během období studeného stavu, je modul ve stavu zpětného ukončení.
    spuštěno Modul je spuštěný.
    nezdravý Kontrola stavu sondy selhala nebo vypršel časový limit.
    zastaveno Modul se úspěšně ukončil (s nulovým ukončovacím kódem).
    selhalo Modul ukončil s chybovým ukončovacím kódem (nenulové číslo). Modul se může vrátit zpět z tohoto stavu v závislosti na zásadách restartování. Tento stav znamená, že modul má neopravitelnou chybu. K selhání dochází, když Microsoft Monitoring Agent (MMA) nemůže restartovat modul, což vyžaduje nové nasazení.

Podrobnosti najdete v tématu o ohlášených vlastnostech agenta EdgeAgent.

Monitorování dvojčete modulu centra IoT Edge

Následující JSON ukazuje dvojče modulu v editoru $edgeHub Visual Studio Code s většinou oddílů sbalených.

{
  "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, začněte kontrolou těchto dat.

Monitorování dvojčat vlastních modulů

Dvojitá verze modulu agenta IoT Edge uchovává informace o připojení vašich vlastních modulů. Dvojče modulu pro váš vlastní modul hlavně ukládá data pro vaše řešení. Požadované vlastnosti, které definujete v souboru deployment.json, se zobrazí ve dvojčeti modulu a váš modul může podle potřeby aktualizovat hlášené hodnoty vlastností.

Pomocí upřednostňovaného programovacího jazyka se sadami SDK pro zařízení azure IoT Hub můžete aktualizovat hodnoty ohlášených vlastností ve dvojčeti modulu na základě kódu aplikace vašeho modulu. Následující postup používá sadu Azure SDK pro .NET a kód z modulu SimulatedTemperatureSensor :

  1. Pomocí metody CreateFromEnvironmentAsync vytvořte instanci ModuleClient.

  2. Pomocí metody GetTwinAsync získejte vlastnosti dvojčete modulu.

  3. Pomocí metody SetDesiredPropertyUpdateCallbackAsync vytvořte naslouchací proces se zpětným voláním, který zachytí změny požadovaných vlastností.

  4. V metodě zpětného volání aktualizujte ohlášené vlastnosti ve dvojčeti modulu pomocí Metody UpdateReportedPropertiesAsync a předejte TwinCollection hodnot vlastnosti, které chcete nastavit.

Přístup k dvojčatům modulu

Projděte si JSON pro dvojčata modulů ve službě Azure IoT Hub, Visual Studio Code nebo v Azure CLI.

Monitorování ve službě Azure IoT Hub

Prohlédněte si 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 "Pro tento modul neexistuje identita modulu", znamená to, že back-endové řešení, které původně vytvořilo identitu, není k dispozici.

Monitorování dvojčat modulů v editoru Visual Studio Code

Kontrola a úprava dvojčete modulu:

  1. Pokud ještě nejsou 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. Vyberte modul a pak vyberte Upravit dvojče modulu. Dočasný soubor dvojčete modulu se stáhne do počítače a otevře 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

Po provedení změn vyberte Aktualizovat dvojče modulu nad kódem v editoru a uložte je do vašeho IoT centra.

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

Monitorování dvojčat modulů v Azure CLI

Pomocí příkazu az iot hub invoke-module-method pomocí příkazu ping agenta IoT Edge zkontrolujte, jestli je spuštěný IoT Edge.

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 - Nahradit definici dvojčete modulu cílovým JSON souborem.

Návod

Pokud chcete cílit na moduly runtime pomocí příkazů rozhraní příkazového řádku, budete možná muset upravit 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.