Dubbele modules bewaken

Van toepassing op:IoT Edge 1.5-vinkje IoT Edge 1.5 Vinkje voor IoT Edge 1.4 IoT Edge 1.4

Belangrijk

IoT Edge 1.5 LTS en IoT Edge 1.4 LTS worden ondersteund releases. IoT Edge 1.4 LTS eindigt op 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.

Moduledubbels in Azure IoT Hub maken het mogelijk om de connectiviteit en status van uw IoT Edge-implementaties te bewaken. Moduledubbels slaan nuttige informatie op in uw IoT-hub over de prestaties van uw actieve modules. De IoT Edge-agent en de Runtime-modules van de IoT Edge-hub onderhouden elk hun moduledubbels $edgeAgent en $edgeHubrespectievelijk:

  • $edgeAgent bevat status- en connectiviteitsgegevens over zowel de Runtime-modules van de IoT Edge-agent als de IoT Edge-hub en uw aangepaste modules. De IoT Edge-agent is verantwoordelijk voor het implementeren van de modules, het bewaken ervan en het rapporteren van de verbindingsstatus aan uw Azure IoT-hub.
  • $edgeHub bevat gegevens over de communicatie tussen de IoT Edge-hub die wordt uitgevoerd op een apparaat en uw Azure IoT-hub. Dit omvat het verwerken van binnenkomende berichten van downstreamapparaten. IoT Edge Hub is verantwoordelijk voor het verwerken van de communicatie tussen de Azure IoT Hub en de IoT Edge-apparaten en -modules.

De gegevens zijn ingedeeld in metagegevens, tags, samen met gewenste en gerapporteerde eigenschappensets in de JSON-structuren van de moduledubbels. De gewenste eigenschappen die u in het deployment.json-bestand hebt opgegeven, worden gekopieerd naar de moduledubbels. De IoT Edge-agent en de IoT Edge-hub werken de gerapporteerde eigenschappen voor hun modules bij.

Op dezelfde manier worden de gewenste eigenschappen die zijn opgegeven voor uw aangepaste modules in het deployment.json-bestand gekopieerd naar de moduledubbel, maar uw oplossing is verantwoordelijk voor het opgeven van de gerapporteerde eigenschapswaarden.

In dit artikel wordt beschreven hoe u de moduledubbels bekijkt in Azure Portal, Azure CLI en in Visual Studio Code. Zie IoT Edge-implementaties bewaken voor informatie over het bewaken van hoe uw apparaten de implementaties ontvangen. Zie Moduledubbels begrijpen en gebruiken in IoT Hub voor een overzicht van het concept van moduledubbels.

Tip

De gerapporteerde eigenschappen van een runtimemodule kunnen verlopen als een IoT Edge-apparaat wordt losgekoppeld van de IoT-hub. U kunt de $edgeAgent module pingen om te bepalen of de verbinding is verbroken.

Runtimemoduledubbels bewaken

Als u verbindingsproblemen met de implementatie wilt oplossen, bekijkt u de IoT Edge-agent en de Runtime-moduledubbels van de IoT Edge-hub en zoomt u vervolgens in op andere modules.

IoT Edge-agentmoduledubbel bewaken

In de volgende JSON ziet u de $edgeAgent moduledubbel in Visual Studio Code, waarbij de meeste JSON-secties zijn samengevouwen.

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

De JSON kan worden beschreven in de volgende secties, beginnend vanaf de bovenkant:

  • Metagegevens : bevat connectiviteitsgegevens. Interessant is dat de verbindingsstatus voor de IoT Edge-agent altijd een niet-verbonden status heeft: "connectionState": "Disconnected". De reden hiervoor is dat de verbindingsstatus betrekking heeft op D2C-berichten (device-to-cloud) en de IoT Edge-agent geen D2C-berichten verzendt.
  • Eigenschappen: bevat de desired en reported subsecties.
  • Properties.desired - (weergegeven samengevouwen) Verwachte eigenschapswaarden die zijn ingesteld door de operator in het deployment.json-bestand.
  • Properties.reported - Meest recente eigenschapswaarden gerapporteerd door IoT Edge-agent.

Zowel de secties properties.reported als de properties.desired secties hebben een vergelijkbare structuur en bevatten aanvullende metagegevens voor schema-, versie- en runtimegegevens. Ook opgenomen is de modules sectie voor alle aangepaste modules (zoals SimulatedTemperatureSensor) en de systemModules sectie voor $edgeAgent en de $edgeHub runtimemodules.

Door de gerapporteerde eigenschapswaarden te vergelijken met de gewenste waarden, kunt u verschillen vaststellen en verbroken verbindingen identificeren die u kunnen helpen bij het oplossen van problemen. Als u deze vergelijkingen uitvoert, controleert u de $lastUpdated gerapporteerde waarde in de metadata sectie voor de eigenschap die u onderzoekt.

De volgende eigenschappen zijn belangrijk om te onderzoeken op het oplossen van problemen:

  • exitcode : een andere waarde dan nul geeft aan dat de module is gestopt met een fout. Foutcodes 137 of 143 worden echter gebruikt als een module opzettelijk is ingesteld op een gestopte status.

  • lastStartTimeUtc - Toont de datum/tijd waarop de container voor het laatst is gestart. Deze waarde is 0001-01-01T00:00:00Z als de container niet is gestart.

  • lastExitTimeUtc : toont de datum/ tijd waarop de container het laatst is voltooid. Deze waarde is 0001-01-01T00:00:00Z als de container wordt uitgevoerd en nooit is gestopt.

  • runtimeStatus : kan een van de volgende waarden zijn:

    Weergegeven als Beschrijving
    onbekend De standaardstatus totdat de implementatie is gemaakt.
    uitstel De module wordt gepland om te starten, maar wordt momenteel niet uitgevoerd. Deze waarde is handig voor een module die statuswijzigingen ondergaat bij het opnieuw opstarten. Wanneer een mislukte module wacht op opnieuw opstarten tijdens de afkoelperiode, heeft de module een uitstelstatus.
    actief Geeft aan dat de module momenteel wordt uitgevoerd.
    Ongezonde Geeft aan dat een statustestcontrole is mislukt of een time-out heeft opgetreden.
    gestopt Geeft aan dat de module is afgesloten (met een nul afsluitcode).
    mislukt Geeft aan dat de module is afgesloten met een afsluitcode voor fouten (niet-nul). De module kan terugkeren naar uitstel van deze status, afhankelijk van het beleid voor opnieuw opstarten dat van kracht is. Deze status kan erop wijzen dat de module een onherstelbare fout heeft ervaren. Er treedt een fout op wanneer de Microsoft Monitoring Agent (MMA) de module niet meer kan reanimeren, waarvoor een nieuwe implementatie is vereist.

Zie de gerapporteerde eigenschappen van EdgeAgent voor meer informatie.

IoT Edge-hubmoduledubbel bewaken

In de volgende JSON ziet u de $edgeHub moduledubbel in Visual Studio Code, waarbij de meeste JSON-secties zijn samengevouwen.

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

De JSON kan worden beschreven in de volgende secties, beginnend vanaf de bovenkant:

  • Metagegevens : bevat connectiviteitsgegevens.

  • Eigenschappen: bevat de desired en reported subsecties.

  • Properties.desired - (weergegeven samengevouwen) Verwachte eigenschapswaarden die zijn ingesteld door de operator in het deployment.json-bestand.

  • Properties.reported - Meest recente eigenschapswaarden gerapporteerd door IoT Edge-hub.

Als u problemen ondervindt met uw downstreamapparaten, is het onderzoeken van deze gegevens een goede plek om te beginnen.

Aangepaste moduledubbels bewaken

De informatie over de connectiviteit van uw aangepaste modules wordt bijgehouden in de moduledubbel van de IoT Edge-agent. De moduledubbel voor uw aangepaste module wordt voornamelijk gebruikt voor het onderhouden van gegevens voor uw oplossing. De gewenste eigenschappen die u hebt gedefinieerd in uw deployment.json-bestand worden weergegeven in de moduledubbel en uw module kan gerapporteerde eigenschapswaarden indien nodig bijwerken.

U kunt de programmeertaal van uw voorkeur gebruiken met de Azure IoT Hub Device SDK's om gerapporteerde eigenschapswaarden in de moduledubbel bij te werken, op basis van de toepassingscode van uw module. In de volgende procedure wordt de Azure SDK voor .NET gebruikt om dit te doen, met behulp van code uit de module SimulatedTemperatureSensor :

  1. Maak een exemplaar van de ModuleClient met de methode CreateFromEnvironmentAysnc .

  2. Haal een verzameling eigenschappen van de moduledubbel op met de Methode GetTwinAsync .

  3. Maak een listener (waarbij een callback wordt doorgegeven) om wijzigingen in gewenste eigenschappen te ondervangen met de methode SetDesiredPropertyUpdateCallbackAsync .

  4. Werk in de callback-methode de gerapporteerde eigenschappen in de moduledubbel bij met de methode UpdateReportedPropertiesAsync , waarbij u een TwinCollection doorgeeft van de eigenschapswaarden die u wilt instellen.

Toegang tot de moduledubbels

U kunt de JSON voor moduledubbels bekijken in Azure IoT Hub, in Visual Studio Code en met Azure CLI.

Bewaken in Azure IoT Hub

De JSON voor de moduledubbel weergeven:

  1. Meld u aan bij de Azure-portal en ga naar uw IoT Hub.

  2. Selecteer Apparaten in het menu Apparaatbeheer .

  3. Selecteer de apparaat-id van het IoT Edge-apparaat met de modules die u wilt bewaken.

  4. Selecteer de modulenaam op het tabblad Modules en selecteer moduleidentiteitsdubbel in de bovenste menubalk.

    Schermopname die laat zien hoe u een moduledubbel selecteert om weer te geven in Azure Portal.

Als u het bericht 'Een module-id bestaat niet voor deze module' ziet, geeft deze fout aan dat de back-endoplossing niet meer beschikbaar is die oorspronkelijk de identiteit heeft gemaakt.

Moduledubbels bewaken in Visual Studio Code

Een moduledubbel controleren en bewerken:

  1. Als dit nog niet is geïnstalleerd, installeert u de Azure IoT Edge - en Azure IoT Hub-extensies . De Azure IoT Edge-hulpprogramma's voor de Visual Studio Code-extensie bevindt zich in de onderhoudsmodus.

  2. Vouw in Explorer de Azure IoT Hub uit en vouw vervolgens het apparaat uit met de module die u wilt bewaken.

  3. Klik met de rechtermuisknop op de module en selecteer Moduledubbel bewerken. Er wordt een tijdelijk bestand van de moduledubbel gedownload naar uw computer en weergegeven in Visual Studio Code.

    Schermopname die laat zien hoe u een moduledubbel kunt ophalen om te bewerken in Visual Studio Code.

Als u wijzigingen aanbrengt, selecteert u Moduledubbel bijwerken boven de code in de editor om wijzigingen op te slaan in uw IoT-hub.

Schermopname van het bijwerken van een moduledubbel in Visual Studio Code.

Moduledubbels bewaken in Azure CLI

Als u wilt zien of IoT Edge wordt uitgevoerd, gebruikt u de az iot hub invoke-module-method om de IoT Edge-agent te pingen.

De structuur az iot hub module-twin biedt de volgende opdrachten:

  • az iot hub module-twin show - Show a module twin definition.
  • az iot hub module-twin update - Update a module twin definition.
  • az iot hub module-twin replace - Replace a module twin definition with a target JSON.

Tip

Als u de runtimemodules wilt richten met CLI-opdrachten, moet u mogelijk het $ teken in de module-id escapen. Voorbeeld:

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

Of:

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

Volgende stappen

Meer informatie over het communiceren met EdgeAgent met behulp van ingebouwde directe methoden.