Övervaka modultvillingar

Gäller för:  Ja-ikonen IoT Edge 1,1  Ja-ikonen IoT Edge 1,2

Modultvillingarna i Azure IoT Hub att övervaka anslutningen och hälsotillståndet för IoT Edge distributioner. Modultvillingarna lagrar användbar information i din IoT-hubb om prestanda för moduler som körs. De IoT Edge agenten och IoT Edge hub runtime-modulerna underhåller var och en sina modultvillingarna $edgeAgent $edgeHub respektive:

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

Data är ordnade i metadata, taggar samt önskade och rapporterade egenskapsuppsättningar i modultvillingarnas JSON-strukturer. De önskade egenskaper som du angav i deployment.jspå filen kopieras till modultvillingarna. Agenten IoT Edge och IoT Edge uppdaterar de rapporterade egenskaperna för sina moduler.

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

I den här artikeln beskrivs hur du granskar modultvillingarna i Azure Portal, 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 modultvilling finns i Förstå och använda modultvillingarna i IoT Hub.

Tips

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

Övervaka körningsmodultvillingarna

Om du vill felsöka anslutningsproblem för distributionen granskar du IoT Edge agenten och IoT Edge-hubbkörningsmodultvillingarna och går sedan nedåt i andra moduler.

Övervaka IoT Edge agentmodultvilling

Följande JSON visar $edgeAgent modultvillingen i Visual Studio Code med de flesta JSON-avsnitt 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 är att anslutningstillståndet för IoT Edge agenten alltid är i ett frånkopplat tillstånd: "connectionState": "Disconnected" . Orsaken är anslutningstillståndet för meddelanden från enhet till moln (D2C), och IoT Edge-agenten skickar inte D2C-meddelanden.
  • Egenskaper – Innehåller desired reported underavsnitten och .
  • Properties.desired – (visas komprimerat) Förväntade egenskapsvärden som angetts av operatorn i deployment.jspå filen.
  • Properties.reported – Senaste egenskapsvärden som rapporterats IoT Edge agenten.

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

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 $lastUpdated det rapporterade värdet i avsnittet för den egenskap som du metadata 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 den 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änd Standardtillstånd tills distributionen har skapats.
    backoff Modulen är schemalagd att starta men körs inte för närvarande. 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 avstängningsperioden är modulen i ett backoff-tillstånd.
    Kör Anger att modulen körs för närvarande.
    Ohälsosamma Anger att en hälsoavsökningskontroll misslyckades eller att en time out har gått ut.
    Stoppat Anger att modulen har avslutats (med en slutkod på noll).
    misslyckades Anger att modulen avslutas med en slutkod för fel (inte 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. Felet inträffar när Microsoft Monitoring Agent (MMA) inte längre kan återanvända modulen, vilket kräver en ny distribution.

Mer information finns i EdgeAgent reported properties (Rapporterade egenskaper för EdgeAgent).

Övervaka IoT Edge hub-modultvilling

Följande JSON visar $edgeHub modultvillingen i Visual Studio Code med de flesta JSON-avsnitt 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 desired reported underavsnitten och .

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

  • Properties.reported – Senaste egenskapsvärden som rapporterats av IoT Edge hub.

Om du har problem med nedströmsenheterna kan det vara bra att börja med att undersöka dessa data.

Övervaka anpassade modultvillingar

Informationen om anslutningen för dina anpassade moduler finns i IoT Edge agentmodultvilling. 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 deployment.jspå filen återspeglas i modultvillingen och modulen kan uppdatera rapporterade egenskapsvärden efter behov.

Du kan använda det programmeringsspråk du föredrar med Azure IoT Hub-enhets-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 upp ändringar i önskade egenskaper med metoden SetDesiredPropertyUpdateCallbackAsync.

  4. I motringningsmetoden uppdaterar du de rapporterade egenskaperna i modultvillingen med metoden UpdateReportedPropertiesAsync och anger en TwinCollection för de egenskapsvärden som du vill ange.

Få åtkomst till modultvillingarna

Du kan granska JSON för modultvillingarna 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 Portal och gå till din IoT-hubb.
  2. Välj IoT Edge på menyn till vänster.
  3. På fliken IoT Edge enheter väljer du Enhets-ID för enheten med de moduler som du vill övervaka.
  4. Välj modulnamnet på fliken Moduler och välj sedan Modulidentitetstvilling på den övre menyraden.

Välj en modultvilling att visa i Azure Portal

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

Övervaka modultvillingarna i Visual Studio Code

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

  1. Om det inte redan är installerat installerar du Azure IoT Tools-tillägget för Visual Studio Code.
  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.

Hämta 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 ändringarna i IoT-hubben.

Uppdatera en modultvilling i Visual Studio Code

Övervaka modultvillingarna i Azure CLI

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

Strukturen az iot hub module-twin 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 ett mål-JSON.

Tips

Om du vill rikta körningsmodulerna med CLI-kommandon kan du behöva escape-tecknet $ i modul-ID:t. 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.