Memantau, mendiagnosa, dan memecahkan masalah konektivitas perangkat Azure IoT Hub

Masalah konektivitas untuk perangkat IoT mungkin sulit dipecahkan karena ada banyak kemungkinan kegagalan. Logika aplikasi, jaringan fisik, protokol, perangkat keras, IoT Hub, dan layanan cloud lainnya semuanya dapat menyebabkan masalah. Kemampuan untuk mendeteksi dan menentukan sumber masalah sangat penting. Namun, solusi IoT dalam skala besar dapat memiliki ribuan perangkat, sehingga tidak praktis untuk memeriksa perangkat individu secara manual. IoT Hub terintegrasi dengan dua layanan Azure untuk membantu Anda:

  • Azure Monitor Azure Monitor memungkinkan Anda mengumpulkan, menganalisis, dan bertindak berdasarkan telemetri dari IoT Hub. Untuk membantu Anda mendeteksi, mendiagnosis, dan memecahkan masalah ini dalam skala besar, gunakan kemampuan pemantauan yang disediakan IoT Hub melalui Azure Monitor. Ini termasuk menyiapkan pemberitahuan untuk memicu pemberitahuan dan tindakan saat koneksi terjadi dan mengonfigurasi log yang dapat Anda gunakan untuk menemukan kondisi yang menyebabkan pemutusan sambungan.

  • Azure Event Grid Untuk infrastruktur penting dan koneksi per perangkat, gunakan Azure Event Grid untuk berlangganan perangkat yang menyambungkan dan memutuskan sambungan peristiwa yang dipancarkan oleh IoT Hub. Azure Event Grid memungkinkan Anda menggunakan salah satu penanganan aktivitas berikut ini:

    • Azure Functions
    • Logic Apps
    • Otomatisasi Azure
    • WebHooks
    • Queue Storage
    • Sambungan Hibrida
    • Event Hubs

Event Grid vs. Azure Monitor

Event Grid menyediakan solusi pemantauan per perangkat latensi rendah yang dapat Anda gunakan untuk melacak koneksi perangkat untuk perangkat dan infrastruktur penting. Azure Monitor menyediakan metrik yang disebut perangkat Koneksi yang dapat Anda gunakan untuk memantau jumlah perangkat yang terhubung ke IoT Hub Anda dan memicu pemberitahuan saat angka tersebut turun di bawah ambang statis.

Pertimbangkan hal berikut saat memutuskan apakah akan menggunakan Event Grid atau Azure Monitor untuk skenario tertentu:

  • Latensi pemberitahuan: Peristiwa koneksi IoT Hub dikirimkan jauh lebih cepat melalui Event Grid. Ini membuat Event Grid menjadi pilihan yang lebih baik untuk skenario saat pemberitahuan cepat diinginkan.

  • Notifikasi per perangkat: Event Grid menyediakan kemampuan untuk melacak koneksi dan memutuskan sambungan untuk masing-masing perangkat. Ini menjadikan Event Grid pilihan yang lebih baik untuk skenario saat Anda perlu memantau koneksi untuk perangkat penting.

  • Penyiapan ringan: Pemberitahuan metrik Azure Monitor memberikan pengalaman penyiapan ringan yang tidak memerlukan integrasi dengan layanan lain untuk mengirimkan notifikasi melalui Email, SMS, Voice, dan pemberitahuan lainnya. Dengan Event Grid, Anda perlu berintegrasi dengan layanan Azure lainnya untuk mengirimkan pemberitahuan. Kedua layanan dapat berintegrasi dengan layanan lain untuk memicu tindakan yang lebih kompleks.

Event Grid: Memantau peristiwa yang tersambung dan terputus

Untuk memantau aktivitas koneksi dan pemutusan sambungan perangkat dalam produksi, sebaiknya berlangganan peristiwa DeviceConnected dan DeviceDisconnected di Event Grid untuk memicu pemberitahuan dan memantau status koneksi perangkat. Event Grid memberikan latensi peristiwa yang lebih rendah daripada Azure Monitor, dan Anda dapat memantau berdasarkan per perangkat. Faktor-faktor ini menjadikan Event Grid sebagai metode yang disukai untuk memantau perangkat dan infrastruktur penting.

Saat Anda menggunakan Event Grid untuk memantau atau memicu pemberitahuan pada perangkat terputus, pastikan Anda membuat dengan cara memfilter pemutusan sambungan berkala karena perpanjangan token SAS pada perangkat yang menggunakan SDK Azure IoT. Untuk mempelajari lebih lanjut, lihat Perilaku pemutusan sambungan perangkat MQTT dengan Azure IoT SDK.

Jelajahi artikel berikut untuk mempelajari selengkapnya tentang memantau peristiwa koneksi perangkat dengan Event Grid:

Azure Monitor: Merutekan peristiwa koneksi ke log

Hub IoT terus memancarkan log sumber daya untuk beberapa kategori operasi. Namun, untuk mengumpulkan data log ini, Anda perlu membuat pengaturan diagnostik untuk merutekannya ke tujuan tempat data dapat dianalisis atau diarsipkan. Salah satu tujuan tersebut adalah Azure Monitor Logs melalui ruang kerja Log Analytics (lihat harga), yang mana Anda dapat menganalisis data menggunakan kueri Kusto.

Kategori koneksi log sumber daya IoT Hub memancarkan operasi dan kesalahan yang berkaitan dengan koneksi perangkat. Cuplikan layar berikut menunjukkan pengaturan diagnostik untuk merutekan log ini ke ruang kerja Log Analytics:

Pengaturan yang disarankan untuk mengirim log konektivitas ke ruang kerja Log Analytics.

Sebaiknya buat pengaturan diagnostik sedini mungkin setelah Anda membuat hub IoT, karena, meskipun IoT Hub selalu memancarkan log sumber daya, pengaturan tersebut tidak dikumpulkan oleh Azure Monitor hingga Anda merutekannya ke tujuan.

Untuk mempelajari lebih lanjut tentang perutean log ke tujuan, lihat Koleksi dan perutean. Untuk petunjuk terperinci guna membuat pengaturan diagnostik, lihat tutorial Menggunakan metrik dan log.

Azure Monitor: Menyiapkan pemberitahuan metrik untuk pemutusan perangkat

Anda dapat menyiapkan pemberitahuan berdasarkan metrik platform yang dipancarkan oleh IoT Hub. Dengan pemberitahuan metrik, Anda dapat memberi tahu individu bahwa kondisi minat telah terjadi dan juga memicu tindakan yang dapat merespons kondisi tersebut secara otomatis.

Metrik Perangkat yang tersambung (pratinjau) memberi tahu Anda berapa banyak perangkat yang tersambung ke IoT Hub Anda. Anda dapat membuat pemberitahuan untuk dipicu jika metrik ini turun di bawah nilai ambang:

Pengaturan logika pemberitahuan untuk metrik perangkat yang tersambung.

Anda dapat menggunakan aturan pemberitahuan metrik untuk memantau anomali pemutusan sambungan perangkat dalam skala besar. Artinya, gunakan pemberitahuan untuk menentukan kapan sejumlah besar perangkat tiba-tiba terputus. Saat ini terdeteksi, Anda dapat melihat log untuk membantu memecahkan masalah. Namun, untuk memantau pemutusan dan pemutusan per-perangkat untuk perangkat penting secara hampir real time, Anda harus menggunakan Event Grid.

Untuk mempelajari lebih lanjut tentang pemberitahuan dengan IoT Hub, lihat Pemberitahuan di Monitor IoT Hub. Untuk membahas pembuatan pemberitahuan di IoT Hub, lihat tutorial Menggunakan metrik dan log. Untuk gambaran umum pemberitahuan yang lebih terperinci, lihat Gambaran umum pemberitahuan di Microsoft Azure dalam dokumentasi Azure Monitor.

Azure Monitor: Menggunakan log untuk mengatasi kesalahan konektivitas

Saat Anda mendeteksi perangkat terputus dengan menggunakan pemberitahuan metrik Azure Monitor atau Event Grid, Anda dapat menggunakan log untuk membantu memecahkan masalah alasan. Bagian ini menjelaskan cara mencari masalah umum di Azure Monitor Logs. Langkah-langkah di bawah mengasumsikan Anda telah membuat pengaturan diagnostik untuk mengirim log Koneksi IoT Hub ke ruang kerja Log Analytics.

Setelah Anda membuat pengaturan diagnostik untuk merutekan log sumber daya IoT Hub ke Azure Monitor Logs, ikuti langkah-langkah ini untuk melihat log di portal Azure.

  1. Navigasi ke hub IoT Anda di portal Azure.

  2. Di bawah Pemantauan di panel kiri hub IoT Anda, Pilih Log.

  3. Untuk mengisolasi log kesalahan konektivitas untuk IoT Hub, masukkan kueri berikut di editor kueri lalu pilih Jalankan:

    AzureDiagnostics
    | where ( ResourceType == "IOTHUBS" and Category == "Connections" and Level == "Error")
    
  4. Jika ada hasil, cari OperationName, ResultType (kode galat), dan ResultDescription (pesan kesalahan) untuk mendapatkan detail selengkapnya.

    Contoh log kesalahan

Gunakan panduan resolusi masalah berikut untuk bantuan dengan kesalahan paling umum:

Azure Monitor: Gunakan log untuk memantau konektivitas bagi perangkat tertentu

Mungkin ada situasi ketika Anda ingin menggunakan Azure Monitor untuk melihat kesalahan konektivitas dan informasi untuk perangkat tertentu. Untuk mengisolasi aktivitas konektivitas untuk perangkat, Anda dapat mengikuti langkah yang sama seperti di bagian sebelumnya, tetapi masukkan kueri berikut. Ganti perangkat uji dengan nama perangkat Anda.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend DeviceId = tostring(parse_json(properties_s).deviceId)
| where DeviceId == "test-device"

Kueri mengembalikan peristiwa kesalahan dan informasi untuk perangkat target Anda. Contoh output berikut menunjukkan peristiwa informasi deviceConnect:

Cuplikan layar peristiwa perangkat Koneksi dalam log.

Perangkat MQTT memutuskan sambungan perilaku dengan Azure IoT SDK

Perangkat Azure IoT SDK terputus dari IoT Hub dan kemudian disambungkan kembali saat memperbarui token SAS melalui protokol MQTT (dan MQTT melalui WebSocket). Dalam log, ini muncul saat perangkat informasi memutuskan sambungan dan menyambungkan peristiwa yang terkadang disertai dengan peristiwa kesalahan.

Secara default, masa pakai token adalah 60 menit untuk semua SDK; namun, dapat diubah oleh pengembang di beberapa SDK. Tabel berikut ini meringkas masa pakai token, perpanjangan token, dan perilaku perpanjangan token untuk setiap SDK:

SDK Masa pakai token Perpanjangan token Perilaku perpanjangan
.NET 60 menit, dapat dikonfigurasi 85% dari masa pakai, dapat dikonfigurasi SDK terputus dan tersambung kembali pada umur token ditambah masa tenggang 10 menit. Peristiwa dan kesalahan informasi yang dibuat dalam log.
Java 60 menit, dapat dikonfigurasi 85% dari masa pakai, tidak dapat dikonfigurasi SDK terputus dan tersambung kembali pada umur token ditambah masa tenggang 10 menit. Peristiwa dan kesalahan informasi yang dibuat dalam log.
Node.js 60 menit, dapat dikonfigurasi dapat dikonfigurasi SDK terputus dan tersambung kembali saat perpanjangan token. Hanya peristiwa informasi yang dibuat dalam log.
Python 60 menit, dapat dikonfigurasi 120 detik sebelum kedaluwarsa SDK terputus dan tersambung kembali pada umur token.

Cuplikan layar berikut menunjukkan perilaku perpanjangan token di Azure Monitor Logs untuk SDK yang berbeda. Masa pakai token dan ambang perpanjangan telah diubah dari default seperti yang dicatat.

  • Perangkat .NET SDK dengan masa pakai token 1200 detik (20 menit) dan perpanjangan akan terjadi pada 90% masa pakai. pemutusan sambungan terjadi setiap 30 menit:

    Perilaku kesalahan untuk perpanjangan token melalui MQTT di Azure Monitor Logs dengan .NET SDK.

  • Java SDK dengan masa pakai token 300 detik (5 menit) dan perpanjangan masa pakai default 85%. Pemutusan sambungan terjadi setiap 15 menit:

    Perilaku kesalahan untuk perpanjangan token melalui MQTT di Azure Monitor Logs dengan Java SDK.

  • Simpul SDK dengan masa pakai token 300 detik (5 menit) dan perpanjangan token akan terjadi dalam 3 menit. Pemutusan sambungan terjadi pada perpanjangan token. Selain itu, tidak ada kesalahan, hanya peristiwa sambungkan/putuskan informasi yang dipancarkan:

    Perilaku kesalahan untuk perpanjangan token melalui MQTT di Azure Monitor Logs dengan Simpul SDK.

Kueri berikut digunakan untuk mengumpulkan hasil. Kueri mengekstrak nama dan versi SDK dari tas properti. Untuk mempelajari selengkapnya, lihat Versi SDK di log IoT Hub.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend parsed_json = parse_json(properties_s)
| extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId) , Protocol =  tostring(parsed_json.protocol)
| distinct TimeGenerated, OperationName, Level, ResultType, ResultDescription, DeviceId, Protocol, SDKVersion

Sebagai pengembang atau operator solusi IoT, Anda perlu mengetahui perilaku ini untuk menginterpretasikan peristiwa sambungkan/putuskan dan kesalahan terkait dalam log. Jika Anda ingin mengubah masa pakai token atau perilaku perpanjangan untuk perangkat, periksa apakah perangkat menerapkan pengaturan kembar perangkat atau metode perangkat yang memungkinkan hal ini.

Jika Anda memantau koneksi perangkat dengan Azure Event Hubs, pastikan Anda membangun dengan cara memfilter pemutusan berkala karena pembaruan token SAS. Misalnya, jangan memicu tindakan berdasarkan pemutusan sambungan selama peristiwa pemutusan diikuti oleh peristiwa koneksi dalam rentang waktu tertentu.

Catatan

IoT Hub hanya mendukung satu koneksi MQTT aktif per perangkat. Koneksi MQTT baru atas nama ID perangkat yang sama menyebabkan IoT Hub memutuskan koneksi yang ada.

400027 ConnectionForcefullyClosedOnNewConnection akan masuk ke IoT Hub Logs

Aku sudah mencoba langkah-langkahnya, tetapi tidak berfungsi

Jika langkah-langkah sebelumnya tidak membantu, cobalah:

Langkah berikutnya