Övervaka modultvillingar

Gäller för:Bockmarkering för IoT Edge 1.5 IoT Edge 1.5 Bockmarkering för IoT Edge 1.4 IoT Edge 1.4

Viktigt!

IoT Edge 1.5 LTS och IoT Edge 1.4 LTS stöds. IoT Edge 1.4 LTS upphör den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.

Modultvillingar i Azure IoT Hub möjliggör övervakning av anslutningen och hälsotillståndet för dina IoT Edge-distributioner. Modultvillingar lagrar användbar information i din IoT-hubb om prestanda för dina moduler som körs. IoT Edge-agentenoch IoT Edge-hubbens runtime-moduler underhåller var och en sina modultvillingar $edgeAgent och $edgeHub, respektive:

  • $edgeAgent innehåller hälso- och anslutningsdata om både IoT Edge-agenten och IoT Edge-hubbens runtime-moduler och dina anpassade moduler. IoT Edge-agenten ansvarar för att distribuera modulerna, övervaka dem och rapportera anslutningsstatus till din Azure IoT-hubb.
  • $edgeHub innehåller data om kommunikation mellan IoT Edge-hubben som körs på en enhet och din Azure IoT-hubb. Detta inkluderar bearbetning av inkommande meddelanden från underordnade enheter. IoT Edge-hubben ansvarar för att bearbeta kommunikationen mellan Azure IoT Hub och IoT Edge-enheterna och modulerna.

Data är ordnade i metadata, taggar, tillsammans med önskade och rapporterade egenskapsuppsättningar i modultvillingens JSON-strukturer. Önskade egenskaper som du angav i deployment.json-filen kopieras till modultvillingarna. IoT Edge-agenten och IoT Edge-hubben uppdaterar var och en de rapporterade egenskaperna för sina moduler.

På samma sätt kopieras de önskade egenskaperna som anges för dina anpassade moduler i deployment.json-filen till modultvillingen, men lösningen ansvarar för att tillhandahålla dess rapporterade egenskapsvärden.

Den här artikeln beskriver hur du granskar modultvillingarna i Azure-portalen, Azure CLI och i Visual Studio Code. Information om hur du övervakar hur dina enheter tar emot distributionerna finns i Övervaka IoT Edge-distributioner. En översikt över begreppet modultvillingar finns i Förstå och använda modultvillingar i IoT Hub.

Dricks

De rapporterade egenskaperna för en körningsmodul kan vara inaktuella om en IoT Edge-enhet kopplas från sin IoT-hubb. Du kan pinga modulen $edgeAgent för att avgöra om anslutningen gick förlorad.

Övervaka runtime-modultvillingar

Om du vill felsöka problem med distributionsanslutningen granskar du IoT Edge-agenten och IoT Edge-hubbens runtime-modultvillingar och ökar sedan detaljnivån i andra moduler.

Övervaka modultvilling för IoT Edge-agent

Följande JSON visar modultvillingen $edgeAgent i Visual Studio Code med de flesta JSON-avsnitten komprimerade.

{
  "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 kan beskrivas i följande avsnitt, med början uppifrån:

  • Metadata – innehåller anslutningsdata. Intressant nog är anslutningstillståndet för IoT Edge-agenten alltid i frånkopplat tillstånd: "connectionState": "Disconnected". Orsaken till att anslutningstillståndet gäller meddelanden från enhet till moln (D2C) och IoT Edge-agenten skickar inte D2C-meddelanden.
  • Egenskaper – innehåller underavsnitten desired och reported .
  • Properties.desired – (visas komprimerad) Förväntade egenskapsvärden som angetts av operatorn i filen deployment.json.
  • Properties.reported – senaste egenskapsvärden som rapporterats av IoT Edge-agenten.

Både avsnitten properties.desired och properties.reported har en liknande struktur och innehåller ytterligare metadata för schema, version och körningsinformation. Dessutom ingår avsnittet modules för alla anpassade moduler (till exempel SimulatedTemperatureSensor), och systemModules avsnittet för $edgeAgent och $edgeHub runtime-modulerna.

Genom att jämföra de rapporterade egenskapsvärdena med önskade värden kan du fastställa avvikelser och identifiera frånkopplingar som kan hjälpa dig att felsöka problem. När du gör dessa jämförelser kontrollerar du det $lastUpdated rapporterade värdet i metadata avsnittet för den egenskap som du undersöker.

Följande egenskaper är viktiga att undersöka för felsökning:

  • exitcode – Ett annat värde än noll anger att modulen stoppades med ett fel. Felkoderna 137 eller 143 används dock om en modul avsiktligt har angetts till en stoppad status.

  • lastStartTimeUtc – visar DateTime som containern senast startades. Det här värdet är 0001-01-01T00:00:00Z om containern inte startades.

  • lastExitTimeUtc – visar DateTime som containern senast slutförde. Det här värdet är 0001-01-01T00:00:00Z om containern körs och aldrig stoppades.

  • runtimeStatus – kan vara något av följande värden:

    Värde beskrivning
    okänt Standardtillstånd tills distributionen har skapats.
    backoff Modulen är schemalagd att starta men körs för närvarande inte. Det här värdet är användbart för en modul som genomgår tillståndsändringar vid omstart. När en modul som misslyckas väntar på omstart under lågfrekvent period är modulen i ett backoff-tillstånd.
    körs Anger att modulen körs för närvarande.
    Ohälsosamma Anger att en hälsoavsökningskontroll misslyckades eller tidsgränsen överskrids.
    stoppad Anger att modulen avslutades (med en slutkod utan slut).
    Misslyckades Anger att modulen avslutades med en felutgångskod (icke-noll). Modulen kan gå tillbaka till backoff från det här tillståndet beroende på vilken omstartsprincip som gäller. Det här tillståndet kan indikera att modulen har drabbats av ett oåterkalleligt fel. Ett fel inträffar när Microsoft Monitoring Agent (MMA) inte längre kan återuppliva modulen, vilket kräver en ny distribution.

Mer information finns i Rapporterade egenskaper för EdgeAgent.

Övervaka modultvilling för IoT Edge-hubb

Följande JSON visar modultvillingen $edgeHub i Visual Studio Code med de flesta JSON-avsnitten komprimerade.

{
  "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 kan beskrivas i följande avsnitt, med början uppifrån:

  • Metadata – innehåller anslutningsdata.

  • Egenskaper – innehåller underavsnitten desired och reported .

  • Properties.desired – (visas komprimerad) Förväntade egenskapsvärden som angetts av operatorn i filen deployment.json.

  • Properties.reported – De senaste egenskapsvärdena som rapporterats av IoT Edge-hubben.

Om du har problem med dina underordnade enheter är det bra att undersöka dessa data.

Övervaka anpassade modultvillingar

Informationen om anslutningen för dina anpassade moduler finns i modultvillingen för IoT Edge-agenten. Modultvillingen för din anpassade modul används främst för att underhålla data för din lösning. De önskade egenskaper som du definierade i din deployment.json-fil återspeglas i modultvillingen och modulen kan uppdatera rapporterade egenskapsvärden efter behov.

Du kan använda önskat programmeringsspråk med Azure IoT Hub Device SDK:er för att uppdatera rapporterade egenskapsvärden i modultvillingen baserat på modulens programkod. Följande procedur använder Azure SDK för .NET för att göra detta med hjälp av kod från modulen SimulatedTemperatureSensor :

  1. Skapa en instans av ModuleClient med metoden CreateFromEnvironmentAysnc .

  2. Hämta en samling av modultvillingens egenskaper med metoden GetTwinAsync .

  3. Skapa en lyssnare (skicka ett återanrop) för att fånga ändringar i önskade egenskaper med metoden SetDesiredPropertyUpdateCallbackAsync .

  4. I motringningsmetoden uppdaterar du de rapporterade egenskaperna i modultvillingen med metoden UpdateReportedPropertiesAsync och skickar en TwinCollection av de egenskapsvärden som du vill ange.

Få åtkomst till modultvillingarna

Du kan granska JSON för modultvillingar i Azure IoT Hub, i Visual Studio Code och med Azure CLI.

Övervaka i Azure IoT Hub

Så här visar du JSON för modultvillingen:

  1. Logga in på Azure-portalen och gå till din IoT-hubb.

  2. Välj Enheter under menyn Enhetshantering .

  3. Välj enhets-ID för IoT Edge-enheten med de moduler som du vill övervaka.

  4. Välj modulnamnet på fliken Moduler och välj sedan Modulidentitetstvilling på den övre menyraden.

    Skärmbild som visar hur du väljer en modultvilling att visa i Azure-portalen.

Om meddelandet "En modulidentitet inte finns för den här modulen" visas anger det här felet att serverdelslösningen inte längre är tillgänglig som ursprungligen skapade identiteten.

Övervaka modultvillingar i Visual Studio Code

Så här granskar och redigerar du en modultvilling:

  1. Om du inte redan har installerat installerar du Azure IoT Edge - och Azure IoT Hub-tilläggen . Azure IoT Edge-verktygen för Visual Studio Code-tillägget är i underhållsläge.

  2. I Utforskaren expanderar du Azure IoT Hub och expanderar sedan enheten med den modul som du vill övervaka.

  3. Högerklicka på modulen och välj Redigera modultvilling. En tillfällig fil med modultvillingen laddas ned till datorn och visas i Visual Studio Code.

    Skärmbild som visar hur du hämtar en modultvilling att redigera i Visual Studio Code.

Om du gör ändringar väljer du Uppdatera modultvilling ovanför koden i redigeraren för att spara ändringar i din IoT-hubb.

Skärmbild som visar hur du uppdaterar en modultvilling i Visual Studio Code.

Övervaka modultvillingar i Azure CLI

Om du vill se om IoT Edge körs använder du metoden az iot hub invoke-module-för att pinga IoT Edge-agenten.

Modultvillingstrukturen az iot hub innehåller följande kommandon:

  • az iot hub module-twin show – Visa en modultvillingdefinition.
  • az iot hub module-twin update – Uppdatera en modultvillingdefinition.
  • az iot hub module-twin replace – Ersätt en modultvillingdefinition med en mål-JSON.

Dricks

Om du vill rikta in dig på körningsmodulerna med CLI-kommandon kan du behöva undvika $ tecknet i modul-ID:t. Till exempel:

az iot hub module-twin show -m '$edgeAgent' -n <hub name> -d <device name>

Eller:

az iot hub module-twin show -m \$edgeAgent -n <hub name> -d <device name>

Nästa steg

Lär dig hur du kommunicerar med EdgeAgent med hjälp av inbyggda direktmetoder.