Memantau modul kembar

Berlaku untuk:Tanda centang IoT Edge 1.5 IoT Edge 1.5 Tanda centang IoT Edge 1.4 IoT Edge 1.4

Penting

IoT Edge 1.5 LTS dan IoT Edge 1.4 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai pada 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Modul kembar di Azure IoT Hub memungkinkan pemantauan konektivitas dan kesehatan penyebaran IoT Edge Anda. Modul kembar menyimpan informasi yang berguna di hub IoT Anda tentang performa modul yang dijalankan. Modul runtime agen IoT Edge dan hub IoT Edge masing-masing mempertahankan modul kembarnya, $edgeAgent dan $edgeHub, masing-masing:

  • $edgeAgent berisi data kesehatan dan konektivitas tentang modul runtime agen IoT Edge dan hub IoT Edge, dan modul kustom Anda. Agen IoT Edge bertanggung jawab untuk menyebarkan modul, memantaunya, dan melaporkan status koneksi ke hub Azure IoT Anda.
  • $edgeHub berisi data tentang komunikasi antara hub IoT Edge yang dijalankan di perangkat dan hub Azure IoT Anda. Ini mencakup pemrosesan pesan masuk dari perangkat hilir. Hub IoT Edge bertanggung jawab untuk memproses komunikasi antara Azure IoT Hub dengan perangkat dan modul IoT Edge.

Data diatur ke dalam metadata, tag, bersama dengan set properti yang diinginkan dan dilaporkan dalam struktur JSON modul kembar. Properti yang diinginkan dan ditentukan dalam file deployment.json Anda disalin ke modul kembar. Agen IoT Edge dan hub IoT Edge masing-masing memperbarui properti yang dilaporkan untuk modulnya.

Demikian pula, properti yang diinginkan dan ditentukan untuk modul kustom Anda dalam file deployment.json disalin ke modul kembarnya, tetapi solusi Anda bertanggung jawab untuk menyediakan nilai properti yang dilaporkan.

Artikel ini menjelaskan cara meninjau modul kembar di portal Azure, Azure CLI, dan di Visual Studio Code. Untuk mengetahui informasi tentang memantau bagaimana perangkat Anda menerima penyebaran, lihat Memantau penyebaran IoT Edge. Untuk gambaran umum tentang konsep modul kembar, lihat Memahami dan menggunakan modul kembar di IoT Hub.

Tip

Properti modul runtime yang dilaporkan dapat menjadi usang jika perangkat IoT Edge terputus dari hub IoT-nya. Anda dapat melakukan ping pada modul $edgeAgent untuk menentukan apakah sambungan terputus.

Memantau modul kembar runtime

Untuk memecahkan masalah konektivitas penyebaran, tinjau modul kembar runtime agen IoT Edge dan hub IoT Edge, lalu telusuri modul lainnya.

Memantau modul kembar agen IoT Edge

JSON berikut menunjukkan modul kembar $edgeAgent di Visual Studio Code dengan sebagian besar bagian JSON diciutkan.

{
  "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 dapat dijelaskan di bagian berikut, mulai dari bagian atas:

  • Metadata - Berisi data konektivitas. Menariknya, status koneksi agen IoT Edge selalu dalam status terputus: "connectionState": "Disconnected". Alasannya adalah status koneksinya berkaitan dengan pesan perangkat ke cloud (D2C), sementara agen IoT Edge tidak mengirim pesan D2C.
  • Properti - Berisi subbagian desired dan reported.
  • Properties.desired - (tampilan diciutkan) Nilai properti yang diharapkan ditetapkan oleh operator dalam file deployment.json.
  • Properties.reported - Nilai properti terbaru yang dilaporkan oleh agen IoT Edge.

Bagian properties.desired dan properties.reported memiliki struktur yang sama dan berisi metadata tambahan untuk skema, versi, dan informasi runtime. Bagian modules untuk modul kustom apa pun (seperti SimulatedTemperatureSensor), dan bagian systemModules untuk $edgeAgent dan modul runtime $edgeHub juga disertakan.

Dengan membandingkan nilai properti yang dilaporkan dengan nilai yang diinginkan, Anda dapat menentukan perbedaan dan mengidentifikasi pemutusan, sehingga dapat membantu memecahkan masalah. Dalam melakukan perbandingan ini, periksa $lastUpdated nilai yang dilaporkan di bagian metadata untuk properti yang Anda selidiki.

Properti berikut ini penting untuk diperiksa guna memecahkan masalah:

  • exitcode - Nilai apa pun selain nol mengindikasikan bahwa modul berhenti dengan kegagalan. Namun, kode kesalahan 137 atau 143 akan digunakan jika modul sengaja diatur ke status berhenti.

  • lastStartTimeUtc - Menampilkan DateTime saat kontainer terakhir kali dimulai. Nilai ini berupa 0001-01-01T00:00:00Z jika kontainer tidak dimulai.

  • lastExitTimeUtc - Menampilkan DateTime saat kontainer terakhir kali selesai. Nilai ini berupa 0001-01-01T00:00:00Z jika kontainer dijalankan dan tidak dihentikan.

  • runtimeStatus - Dapat berupa salah satu dari nilai berikut:

    Nilai Deskripsi
    unknown Status default hingga penyebaran dibuat.
    backoff Modul dijadwalkan untuk mulai tetapi saat ini tidak berjalan. Nilai ini berguna untuk modul yang mengalami perubahan status saat memulai ulang. Ketika modul yang gagal sedang menunggu dihidupkan ulang selama periode pendinginan, modul akan berada dalam status backoff.
    dijalankan Menunjukkan bahwa modul saat ini sedang dijalankan.
    tidak sehat Mengindikasikan pemeriksaan kesehatan gagal atau kehabisan waktu.
    dihentikan Mengindikasikan bahwa modul berhasil keluar (dengan kode keluar nol).
    gagal Mengindikasikan bahwa modul telah keluar dengan kode keluar kegagalan (bukan nol). Modul dapat beralih kembali ke backoff dari status ini tergantung pada kebijakan hidupkan ulang yang berlaku. Status ini dapat mengindikasikan bahwa modul telah mengalami kesalahan yang tidak dapat dipulihkan. Kegagalan terjadi ketika Microsoft Monitoring Agent (MMA) tidak dapat menghidupkan modul kembali, memerlukan penyebaran baru.

Lihat Properti yang dilaporkan EdgeAgent untuk detailnya.

Pantau modul kembar hub IoT Edge

JSON berikut menunjukkan modul kembar $edgeHub di Visual Studio Code dengan sebagian besar bagian JSON diciutkan.

{
  "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 dapat dijelaskan di bagian berikut, mulai dari bagian atas:

  • Metadata - Berisi data konektivitas.

  • Properti - Berisi subbagian desired dan reported.

  • Properties.desired - (tampilan diciutkan) Nilai properti yang diharapkan ditetapkan oleh operator dalam file deployment.json.

  • Properties.reported - Nilai properti terbaru yang dilaporkan oleh hub IoT Edge.

Jika Anda mengalami masalah dengan perangkat hilir, memeriksa data ini akan menjadi titik yang baik untuk memulai.

Memantau modul kembar kustom

Informasi tentang konektivitas modul kustom Anda dipertahankan dalam modul kembar agen IoT Edge. Modul kembar untuk modul kustom Anda digunakan terutama untuk mempertahankan data solusi. Properti yang diinginkan dan ditetapkan dalam file deployment.json Anda tercermin dalam modul kembar, dan modul Anda dapat memperbarui nilai properti yang dilaporkan sesuai kebutuhan.

Anda dapat menggunakan bahasa pemrograman pilihan Anda dengan SDK Perangkat Azure IoT Hub untuk memperbarui nilai properti yang dilaporkan dalam modul kembar, berdasarkan kode aplikasi modul Anda. Prosedur berikut menggunakan Azure SDK untuk .NET guna melakukan ini, menggunakan kode dari modul SimulasiTemperatureSensor:

  1. Buat instans ModuleClient dengan metode CreateFromEnvironmentAysnc.

  2. Dapatkan kumpulan properti modul kembar dengan metode GetTwinAsync.

  3. Buat pendengar (melewati panggilan balik) untuk menangkap perubahan pada properti yang diinginkan dengan metode SetDesiredPropertyUpdateCallbackAsync.

  4. Dalam metode panggilan balik, perbarui properti yang dilaporkan dalam modul kembar dengan metode UpdateReportedPropertiesAsync, melewati TwinCollection dari nilai properti yang ingin Anda tetapkan.

Mengakses modul kembar

Anda dapat meninjau JSON untuk modul kembar di Azure IoT Hub, di Visual Studio Code, dan dengan Azure CLI.

Memantau di Azure IoT Hub

Untuk menampilkan JSON modul kembar:

  1. Masuk ke portal Azure dan navigasikan ke IoT hub Anda.

  2. Pilih Perangkat di bawah menu Manajemen perangkat .

  3. Pilih ID Perangkat perangkat IoT Edge dengan modul yang ingin Anda pantau.

  4. Pilih nama modul dari tab Modul, lalu pilih Modul Identitas Kembar dari bilah menu atas.

    Cuplikan layar memperlihatkan cara memilih modul kembar untuk ditampilkan di portal Azure.

Jika Anda melihat pesan "Identitas modul tidak ada untuk modul ini", kesalahan ini mengindikasikan bahwa solusi back-end tidak lagi tersedia yang awalnya membuat identitas.

Memantau modul kembar di Visual Studio Code

Untuk meninjau dan mengedit modul kembar:

  1. Jika belum diinstal, instal ekstensi Azure IoT Edge dan Azure IoT Hub . Alat Azure IoT Edge untuk ekstensi Visual Studio Code berada dalam mode pemeliharaan.

  2. Di Explorer, perluas Azure IoT Hub, lalu perluas perangkat dengan modul yang ingin dipantau.

  3. Klik kanan modul dan pilih Edit Modul Kembar. File sementara dari modul kembar diunduh ke komputer Anda dan ditampilkan di Visual Studio Code.

    Cuplikan layar memperlihatkan cara mendapatkan modul kembar untuk diedit di Visual Studio Code.

Jika Anda membuat perubahan, pilih Perbarui Modul Kembar di atas kode di editor untuk menyimpan perubahan ke hub IoT Anda.

Cuplikan layar memperlihatkan cara memperbarui modul kembar di Visual Studio Code.

Memantau modul kembar di Azure CLI

Untuk mengetahui apakah IoT Edge berjalan, gunakan az iot hub invoke-module-method untuk melakukan ping pada agen IoT Edge.

Struktur az iot hub module-twin menyediakan perintah berikut:

  • az iot hub module-twin show - Tampilkan definisi modul kembar.
  • az iot hub module-twin update - Perbarui definisi modul kembar.
  • az iot hub module-twin replace - Ganti definisi modul kembar dengan JSON target.

Tip

Untuk menargetkan modul runtime dengan perintah CLI, Anda mungkin perlu keluar dari karakter $ di ID modul. Contohnya:

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

Atau:

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

Langkah berikutnya

Pelajari cara berkomunikasi dengan EdgeAgent menggunakan metode langsung bawaan.