Modül ikizlerini izleme

Uygulama hedefi:  Evet simgesi IoT Edge 1,1  evet IoT Edge 1,2

Azure 'da modül TWINS IoT Hub IoT Edge dağıtımlarınızın bağlantısını ve durumunu izlemeyi etkinleştirir. Modül TWINS, IoT Hub 'ınızda çalışan modüllerinizin performansı hakkında yararlı bilgiler depolar. IoT Edge Aracısı ve IoT Edge merkezi çalışma zamanı modülleri, her biri sırasıyla kendi modül ikliklerini $edgeAgent ve $edgeHub ' ı korur:

  • $edgeAgent hem IoT Edge Agent hem de IoT Edge hub Runtime modülleri ve özel modülleriniz hakkındaki sistem durumu ve bağlantı verilerini içerir. IoT Edge Aracısı, modülleri dağıtmaktan, izlemekten ve bağlantı durumunu Azure IoT Hub 'ınıza bildirmekten sorumludur.
  • $edgeHub bir cihazda ve Azure IoT Hub 'ınız üzerinde çalışan IoT Edge hub 'ı arasındaki iletişimlerle ilgili verileri içerir. Bu, gelen iletileri aşağı akış cihazlarından işlemeyi içerir. IoT Edge hub, Azure IoT Hub ile IoT Edge cihazları ve modülleri arasındaki iletişimin işlenmesinden sorumludur.

Veriler, modül TWINS ' JSON yapılarında istenen ve bildirilen özellik kümeleriyle birlikte meta veriler, Etiketler halinde düzenlenir. deployment.jsdosyasında belirttiğiniz istenen özellikler, TWINS modülüne kopyalanır. IoT Edge Aracısı ve IoT Edge hub 'ı, modülleri için bildirilen özellikleri güncelleştirir.

Benzer şekilde, deployment.jsdosyadaki özel modülleriniz için belirtilen özellikler, ikizi modülüne kopyalanır, ancak çözüm, bildirilen özellik değerlerini sağlamaktan sorumludur.

Bu makalede Azure portal, Azure CLı ve Visual Studio Code modül TWINS 'in nasıl inceleneceğini açıklanmaktadır. Cihazlarınızın dağıtımları nasıl alacağını izleme hakkında bilgi için bkz. Monitor IoT Edge dağıtımlarınıizleme. Modül TWINS kavramıyla ilgili genel bir bakış için bkz. IoT Hub 'da modül TWINS 'ı anlama ve kullanma.

İpucu

Bir IoT Edge cihazının IoT Hub 'ından bağlantısı kesilirse, bir çalışma zamanı modülünün bildirilen özellikleri eski olabilir. Bağlantının kaybedilip kaybedil olmadığını belirlemek için modüle ping $edgeAgent atabilirsiniz.

Çalışma zamanı modül ikizlerini izleme

Dağıtım bağlantısı sorunlarını gidermek için IoT Edge hub çalışma IoT Edge modül ikizlerini gözden geçirin ve diğer modüllerde detaya gitme.

Aracı IoT Edge ikizlerini izleme

Aşağıdaki JSON, JSON $edgeAgent bölümlerinin Visual Studio Code modül ikizlerini gösterir.

{
  "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, yukarıdan başlayarak aşağıdaki bölümlerde açıklanmıştır:

  • Meta veriler - Bağlantı verilerini içerir. İlginç olan, IoT Edge aracı için bağlantı durumunun her zaman bağlantısı kesilmiş durumdadır: "connectionState": "Disconnected" . Bağlantı durumunun cihazdan buluta (D2C) iletileriyle ilgili olması ve IoT Edge aracı D2C iletileri göndermez.
  • Özellikler - desired ve reported alt bölümlerini içerir.
  • Properties.desired - (daraltılmış olarak gösterilir) Dosyada yer alan dosyanın deployment.jstarafından ayarlanmış beklenen özellik değerleri.
  • Properties.reported - Bir aracı tarafından bildirilen en IoT Edge değerleri.

Hem hem properties.desired de bölümleri benzer bir yapıya sahiptir ve şema, sürüm ve çalışma properties.reported zamanı bilgileri için ek meta veriler içerir. Ayrıca, tüm özel modüllerin (gibi) bölümü ve ve çalışma modules SimulatedTemperatureSensor zamanı systemModules $edgeAgent $edgeHub modüllerinin bölümü de dahil edilir.

Bildirilen özellik değerlerini istenen değerlerle karşılaştırarak tutarsızlıkları tespit edebilir ve sorunları gidermenize yardımcı olacak bağlantı kesintilerini tanımlayabilirsiniz. Bu karşılaştırmaları yaparken, $lastUpdated araştıran metadata özelliğin bölümünde bildirilen değeri kontrol edin.

Sorun giderme için aşağıdaki özelliklerin incelenmesi önemlidir:

  • exitcode - Sıfır dışında herhangi bir değer, modülün bir hatayla durdurulmuş olduğunu gösterir. Ancak, bir modül kasıtlı olarak durdurulmuş durumuna ayarlanmışsa hata kodları 137 veya 143 kullanılır.

  • lastStartTimeUtc - Kapsayıcının son başlat olduğu DateTime'ı gösterir. Kapsayıcı başlatılmamışsa, bu değer 0001-01-01T00:00:00Z olur.

  • Lastexittimeutc -kapsayıcının son bittiği Tarih ve saati gösterir. Bu değer, kapsayıcı çalışıyorsa ve hiç durdurulmadıysa, 0001-01-01T00:00:00Z 'dir.

  • runtimeStatus -aşağıdaki değerlerden biri olabilir:

    Değer Açıklama
    bilinmeyen Dağıtım oluşturuluncaya kadar varsayılan durum.
    geri alma Modül başlamak üzere zamanlandı ancak şu anda çalışmıyor. Bu değer, yeniden başlatma sırasında durum değişikliği yapılmakta olan bir modül için yararlıdır. Hatalı bir modülün, cool-off döneminde yeniden başlatma beklediği zaman, modül geri alma durumunda olur.
    çalıştıran Modülün Şu anda çalıştığını gösterir.
    sağlıksız Bir sistem durumu araştırma denetimini başarısız veya zaman aşımına uğradığını gösterir.
    durdurulacağını Modülün başarıyla çıkış yaptığını belirtir (sıfır çıkış kodu ile).
    başarısız Modülün bir hata çıkış kodu (sıfır olmayan) ile çıkış yaptığını gösterir. Modül, etkin yeniden başlatma ilkesine bağlı olarak bu durumdan geri dönerek geri geçirebilir. Bu durum, modülün kurtarılamaz bir hatayla karşılaştığını gösterebilir. Microsoft Monitoring Agent (MMA), modülü artık yeniden boyutlandıramaması durumunda yeni bir dağıtım gerektiren hata oluşur.

Ayrıntılar için bkz. EdgeAgent tarafından bildirilen özellikler.

Hub IoT Edge ikizlerini izleme

Aşağıdaki JSON, JSON $edgeHub bölümlerinin Visual Studio Code modül ikizlerini gösterir.

{
  "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, yukarıdan başlayarak aşağıdaki bölümlerde açıklanmıştır:

  • Meta veriler - Bağlantı verilerini içerir.

  • Özellikler - desired ve reported alt bölümlerini içerir.

  • Properties.desired - (daraltılmış olarak gösterilir) Dosyada yer alan dosyanın deployment.jstarafından ayarlanmış beklenen özellik değerleri.

  • Properties.reported - Bir hub tarafından bildirilen en IoT Edge değerleri.

Aşağı akış cihazlarında sorun yaşıyorsanız, bu verileri incelemeye başlamak için iyi bir yer olabilir.

Özel modül ikizlerini izleme

Özel modüllerinizin bağlantısıyla ilgili bilgiler aracı modül ikiz IoT Edge korunur. Özel modülünün modül ikizi öncelikli olarak çözümünüz için verilerin korunması için kullanılır. Dosyanız üzerinde dosyada tanım deployment.jsözellikler modül ikizine yansıtıldı ve modülüm rapor edilen özellik değerlerini gerektiğinde güncelleştirebiliyor.

Modülünün uygulama koduna göre modül ikizine bildirilen özellik değerlerini güncelleştirmek için Azure IoT Hub Cihaz SDK'ları ile tercih ettiğiniz programlama dilini kullanabilirsiniz. Aşağıdaki yordam, SimulatedTemperatureSensor modülünden kod kullanarak bunu yapmak için .NET için Azure SDK'sı kullanır:

  1. CreateFromEnvironmentAysnc yöntemiyle ModuleClient örneğini oluşturun.

  2. GetTwinAsync yöntemiyle modül ikizlerinin özelliklerinin bir koleksiyonunu elde edersiniz.

  3. SetDesiredPropertyUpdateCallbackAsync yöntemiyle istenen özelliklerde yapılan değişiklikleri yakalamak için bir dinleyici oluşturun (geri çağırma geçirme).

  4. Geri çağırma yönteminde, modül ikizi içinde bildirilen özellikleri UpdateReportedPropertiesAsync yöntemiyle güncelleştirin ve ayarlamak istediğiniz özellik değerlerinin TwinCollection'ını iletir.

Modül ikizlerine erişme

Azure IoT Hub, Visual Studio Code ve Azure CLı ile modül TWINS için JSON 'u inceleyebilirsiniz.

Azure IoT Hub izleme

İkizi modülünün JSON 'sini görüntülemek için:

  1. Azure Portal oturum açın ve IoT Hub 'ınıza gidin.
  2. Sol bölme menüsünden IoT Edge ' yi seçin.
  3. IoT Edge cihazlar sekmesinde, izlemek istediğiniz modüllerle CIHAZıN cihaz kimliğini seçin.
  4. Modüller sekmesinden modül adı ' nı seçin ve ardından üst menü çubuğundan modül kimliği ikizi ' nı seçin.

Azure portal görüntülemek için bir modül ikizi seçin

"Bu modül için bir modül kimliği yok" iletisini görürseniz, bu hata arka uç çözümünün artık kimliği ilk oluşturmuş olduğunu gösterir.

Visual Studio Code modül TWINS 'i izleme

Bir modülü ikizi gözden geçirmek ve düzenlemek için:

  1. Önceden yüklenmemişse, Visual Studio Code için Azure IoT araçları uzantısını yükler.
  2. Gezgin'de Azure IoT Hub' i genişletin ve ardından, izlemek istediğiniz modülün bulunduğu cihazı genişletin.
  3. Modüle sağ tıklayın ve modülü Düzenle ikizi' yi seçin. İkizi modülünün geçici bir dosyası bilgisayarınıza indirilir ve Visual Studio Code görüntülenir.

Visual Studio Code düzenlemek için bir modül ikizi alın

Değişiklik yaparsanız, IoT Hub 'ınıza değişiklikleri kaydetmek için düzenleyicideki kodun üzerindeki Ikizi modülünü Güncelleştir ' i seçin.

Visual Studio Code modül ikizi güncelleştirme

Azure CLı 'de modül TWINS 'i izleme

IoT Edge çalışıp çalışmadığını görmek için az IoT Hub Invoke-Module-metodunu kullanarak IoT Edge aracısına ping gönderin.

az iot hub module-twin yapısı şu komutları sağlar:

  • az iot hub module-twin show - Modül ikizi tanımını göster.
  • az iot hub module-twin update - Modül ikizi tanımını güncelleştirin.
  • az iot hub module-twin replace - Bir modül ikizi tanımını hedef JSON ile değiştirin.

İpucu

CLI komutlarıyla çalışma zamanı modüllerini hedeflemek için modül kimliğinde $ karakteri kaçış karakterine ihtiyacınız olabilir. Örnek:

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

Veya:

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

Sonraki adımlar

Yerleşik doğrudan yöntemleri kullanarak EdgeAgent ile iletişim kurma hakkında bilgi.