Memecahkan masalah perangkat IoT Edge Anda

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.

Jika mengalami masalah saat menjalankan Azure IoT Edge di lingkungan Anda, gunakan artikel ini sebagai panduan untuk pemecahan masalah dan diagnostik.

Menjalankan perintah 'periksa'

Langkah pertama Anda saat memecahkan masalah Azure IoT Edge adalah menggunakan perintah check, yang menjalankan kumpulan pengujian konfigurasi dan konektivitas untuk masalah umum. Perintah check tersedia di rilis 1.0.7 dan yang lebih baru.

Catatan

Alat pemecahan masalah tidak dapat menjalankan pemeriksaan konektivitas jika perangkat Azure IoT Edge berada di belakang server proksi.

Anda dapat menjalankan perintah check sebagai berikut, atau menyertakan bendera --help untuk melihat daftar opsi yang lengkap:

sudo iotedge check

Alat pemecahan masalah menjalankan banyak pemeriksaan yang diurutkan ke dalam tiga kategori berikut:

  • Pemeriksaan konfigurasi memeriksa detail yang dapat mencegah perangkat IoT Edge tersambung ke cloud, termasuk masalah dengan file konfigurasi dan mesin kontainer.
  • Pemeriksaan koneksi memverifikasi bahwa runtime Azure IoT Edge dapat mengakses port pada perangkat host dan bahwa semua komponen Azure IoT Edge dapat tersambung ke Azure IoT Hub. Serangkaian pemeriksaan ini menghasilkan kesalahan jika perangkat Azure IoT Edge berada di belakang proksi.
  • Pemeriksaan kesiapan produksi mencari praktik terbaik produksi yang disarankan, seperti status sertifikat otoritas sertifikat perangkat (CA) dan konfigurasi file log modul.

Alat pemeriksaan Azure IoT Edge menggunakan kontainer untuk menjalankan diagnostiknya. Gambar kontainer, mcr.microsoft.com/azureiotedge-diagnostics:latest, tersedia melalui Microsoft Container Registry. Jika Anda perlu menjalankan pemeriksaan pada perangkat tanpa akses langsung ke internet, perangkat Anda akan memerlukan akses ke gambar kontainer.

Dalam skenario menggunakan perangkat IoT Edge berlapis, Anda bisa mendapatkan akses ke gambar diagnostik pada perangkat hilir dengan merutekan penarikan gambar melalui perangkat induk.

sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:<port_for_api_proxy_module>/azureiotedge-diagnostics:1.2

Untuk informasi tentang setiap pemeriksaan diagnostik yang dijalankan alat ini, termasuk apa yang harus dilakukan jika Anda mendapatkan kesalahan atau peringatan, lihat pemeriksaan pemecahan masalah Azure IoT Edge.

Mengumpulkan informasi debug dengan perintah 'paket dukungan'

Saat Anda perlu mengumpulkan log dari perangkat Azure IoT Edge, cara paling mudah adalah menggunakan perintah support-bundle. Secara default, perintah ini mengumpulkan modul, manajer keamanan Azure IoT Edge dan log mesin kontainer, output JSON iotedge check, dan informasi debug berguna lainnya. Perintah ini memadatkan semua menjadi satu file agar mudah dibagikan. Perintah support-bundle tersedia di rilis 1.0.9 dan yang lebih baru.

Jalankan perintah support-bundle dengan bendera --since untuk menentukan berapa lama dari masa lalu Anda ingin mendapatkan log. Misalnya 6h akan mendapatkan log sejak enam jam terakhir, 6d sejak enam hari terakhir, 6m sejak enam menit terakhir dan seterusnya. Sertakan bendera --help untuk melihat daftar opsi yang lengkap.

sudo iotedge support-bundle --since 6h

Secara default, perintah support-bundle membuat file zip bernama support_bundle.zip di direktori tempat perintah dipanggil. Gunakan bendera --output untuk menentukan jalur atau nama file yang berbeda untuk output.

Untuk informasi selengkapnya tentang perintah, lihat informasi bantuan.

iotedge support-bundle --help

Anda juga dapat menggunakan panggilan metode langsung bawaan UploadSupportBundle untuk mengunggah output perintah paket dukungan ke Azure Blob Storage.

Peringatan

Output dari perintah support-bundle dapat berisi nama host, perangkat dan modul, informasi yang dicatat oleh modul Anda, dll. Perhatikan hal ini jika membagikan output di forum publik.

Meninjau metrik yang dikumpulkan dari runtime

Modul runtime IoT Edge menghasilkan metrik untuk membantu Anda memantau dan memahami kesehatan perangkat IoT Edge Anda. Tambahkan modul metrics-collector ke penyebaran Anda untuk menangani pengumpulan metrik ini dan mengirimkannya ke cloud untuk pemantauan yang lebih mudah.

Untuk informasi selengkapnya, lihat Mengumpulkan dan mengangkut metrik.

Periksa versi Azure IoT Edge Anda

Jika Anda menjalankan versi IoT Edge yang lebih lama, peningkatan dapat mengatasi masalah Anda. Alat ini iotedge check memeriksa bahwa daemon keamanan IoT Edge adalah versi terbaru, tetapi tidak memeriksa versi hub IoT Edge dan modul agen. Untuk memeriksa versi modul runtime pada perangkat Anda, gunakan perintah iotedge logs edgeAgent dan iotedge logs edgeHub. Nomor versi dideklarasikan dalam log saat modul dimulai.

Untuk instruksi tentang cara memperbarui perangkat Anda, lihat Memperbarui runtime dan daemon keamanan Azure IoT Edge.

Memverifikasi penginstalan Azure IoT Edge di perangkat Anda

Anda dapat memverifikasi penginstalan Azure IoT Edge di perangkat dengan memantau twin modul edgeAgent.

Untuk mendapatkan twin modul edgeAgent terbaru, jalankan perintah berikut dari Azure Cloud Shell:

az iot hub module-twin show --device-id <edge_device_id> --module-id '$edgeAgent' --hub-name <iot_hub_name>

Perintah ini akan menampilkan semua edgeAgent properti yang dilaporkan. Berikut adalah beberapa perintah yang membantu memantau status perangkat:

  • status runtime
  • waktu mulai runtime
  • runtime waktu keluar terakhir
  • jumlah menghidupkan ulang runtime

Periksa status manajer keamanan Azure IoT Edge dan log Azure IoT Edge

Manajer keamanan Azure IoT Edge bertanggung jawab atas operasi seperti menginisialisasi sistem Azure IoT Edge saat menyiapkan dan memprovisikan perangkat. Jika Azure IoT Edge tidak dimulai, log manajer keamanan dapat memberikan informasi yang berguna.

  • Lihat status layanan sistem Azure IoT Edge:

    sudo iotedge system status
    
  • Lihat log layanan sistem Azure IoT Edge:

    sudo iotedge system logs -- -f
    
  • Aktifkan log tingkat debug untuk melihat log lebih detail dari layanan sistem Azure IoT Edge:

    1. Aktifkan log tingkat debug.

      sudo iotedge system set-log-level debug
      sudo iotedge system restart
      
    2. Beralih kembali ke log tingkat info default setelah penelusuran kesalahan.

      sudo iotedge system set-log-level info
      sudo iotedge system restart
      

Memeriksa log kontainer untuk masalah

Setelah daemon keamanan Azure IoT Edge berjalan, lihat log kontainer untuk mendeteksi masalah. Mulailah dengan kontainer yang Anda sebarkan, lalu lihat kontainer yang membentuk runtime Azure IoT Edge: edgeAgent dan edgeHub. Log agen Azure IoT Edge biasanya memberikan info tentang siklus hidup setiap kontainer. Log hub Azure IoT Edge memberikan info tentang olahpesan dan perutean.

Anda dapat mengambil log kontainer dari beberapa tempat:

Membersihkan log kontainer

Secara default, mesin kontainer Moby tidak mengatur batas ukuran log kontainer. Seiring waktu log ekstensif dapat menyebabkan perangkat mengisi dengan log dan kehabisan ruang disk. Jika log kontainer besar memengaruhi performa perangkat Azure IoT Edge Anda, gunakan perintah berikut untuk menghapus paksa kontainer bersama dengan log kontainer.

Jika masih memecahkan masalah, tunggu hingga Anda memeriksa log kontainer untuk mengambil langkah ini.

Peringatan

Jika Anda menghapus paksa kontainer edgeHub saat memiliki simpanan pesan yang tidak terkirim dan tidak ada persiapan penyimpanan host, pesan yang tidak terkirim akan hilang.

docker rm --force <container name>

Untuk skenario pemeliharaan dan produksi log yang sedang berlangsung, Siapkan driver pengelogan default.

Melihat pesan melalui hub Azure IoT Edge

Anda dapat melihat pesan melalui hub Azure IoT Edge dan mengumpulkan insight dari log verbose dari kontainer runtime. Untuk mengaktifkan log verbose pada kontainer ini, atur ​​variabel lingkungan RuntimeLogLevel dalam manifes penyebaran.

Untuk melihat pesan melalui hub Azure IoT Edge, atur ​​variabel lingkungan RuntimeLogLevel ke debug untuk modul edgeHub.

Baik modul edgeHub maupun edgeAgent memiliki variabel lingkungan log runtime ini, dengan nilai default diatur ke info. Variabel lingkungan ini dapat mengambil nilai berikut:

  • fatal
  • kesalahan
  • peringatan
  • info
  • debug
  • verbose

Anda juga dapat memeriksa pesan yang dikirim antara Azure IoT Hub dan perangkat IoT. Lihat pesan ini dengan menggunakan ekstensi Azure IoT Hub untuk Visual Studio Code. Untuk informasi selengkapnya, lihat Alat praktis saat Anda mengembangkan dengan IoT Azure.

Menghidupkan ulang kontainer

Setelah menyelidiki log dan pesan untuk informasi, Anda dapat mencoba menghidupkan ulang kontainer.

Pada perangkat IoT Edge, gunakan perintah berikut untuk memulai ulang modul:

iotedge restart <container name>

Hidupkan ulang kontainer runtime Azure IoT Edge:

iotedge restart edgeAgent && iotedge restart edgeHub

Anda juga dapat memulai ulang modul dari jarak jauh dengan portal Microsoft Azure. Untuk informasi selengkapnya, lihat Memantau dan memecahkan masalah perangkat IoT Edge dari portal Microsoft Azure.

Memeriksa aturan konfigurasi firewall dan port Anda

Azure IoT Edge memungkinkan komunikasi dari server lokal ke cloud Azure menggunakan protokol Azure IoT Hub yang didukung, lihat memilih protokol komunikasi. Untuk keamanan yang ditingkatkan, saluran komunikasi antara Azure IoT Edge dan Azure IoT Hub selalu dikonfigurasikan ke Keluar. Konfigurasi ini didasarkan pada pola Komunikasi Bantuan Layanan, yang meminimalkan permukaan serangan untuk dijelajahi oleh entitas jahat. Komunikasi masuk hanya diperlukan untuk skenario tertentu di mana Azure IoT Hub perlu mendorong pesan ke perangkat Azure IoT Edge. Pesan cloud-ke-perangkat dilindungi menggunakan saluran TLS aman dan dapat diamankan lebih lanjut menggunakan sertifikat X.509 dan modul perangkat TPM. Manajer Keamanan Azure IoT Edge mengatur bagaimana komunikasi ini dapat dilakukan, lihat Manajer Keamanan Azure IoT Edge.

Meskipun IoT Edge menyediakan konfigurasi yang ditingkatkan untuk mengamankan runtime Azure IoT Edge dan modul yang disebarkan, itu masih tergantung pada konfigurasi komputer dan jaringan yang mendasarinya. Oleh karena itu, sangat penting untuk memastikan aturan jaringan dan firewall yang tepat disiapkan untuk komunikasi tepi ke cloud yang aman. Tabel berikut dapat digunakan sebagai panduan saat konfigurasi aturan firewall untuk server yang mendasari tempat runtime Azure IoT Edge dihosting:

Protokol Port Masuk Keluar Panduan
MQTT 8883 DIBLOKIR (Bawaan) DIBLOKIR (Bawaan)
  • Konfigurasikan Keluar (Keluar) menjadi Terbuka saat menggunakan MQTT sebagai protokol komunikasi.
  • 1883 untuk MQTT tidak didukung oleh IoT Edge.
  • Koneksi masuk (Masuk) harus diblokir.
AMQP 5671 DIBLOKIR (Bawaan) BUKA (Bawaan)
  • Protokol komunikasi default untuk Azure IoT Edge.
  • Harus dikonfigurasi agar Terbuka jika Azure IoT Edge tidak dikonfigurasi untuk protokol lain yang didukung atau AMQP adalah protokol komunikasi yang diinginkan.
  • 5672 untuk AMQP tidak didukung oleh IoT Edge.
  • Blokir port ini saat Azure IoT Edge menggunakan protokol lain yang didukung Azure IoT Hub.
  • Koneksi masuk (Masuk) harus diblokir.
HTTPS 443 DIBLOKIR (Bawaan) BUKA (Bawaan)
  • Konfigurasikan Keluar (Keluar) menjadi Terbuka pada 443 untuk provisi Azure IoT Edge. Konfigurasi ini diperlukan saat menggunakan skrip manual atau IoT Device Provisioning Service (DPS) Azure.
  • Koneksi masuk (Masuk) harus Terbuka hanya untuk skenario tertentu:
    • Jika Anda memiliki gateway transparan dengan perangkat hilir yang dapat mengirim permintaan metode. Dalam hal ini, Port 443 tidak perlu terbuka ke jaringan eksternal untuk terhubung ke IoTHub atau menyediakan layanan IoTHub melalui Azure IoT Edge. Dengan demikian aturan yang masuk dapat dibatasi hanya untuk membuka Masuk (Masuk) dari jaringan internal.
    • Untuk skenario Klien ke Perangkat (C2D).
  • 80 untuk HTTP tidak didukung oleh IoT Edge.
  • Jika protokol non-HTTP (misalnya, AMQP atau MQTT) tidak dapat dikonfigurasi di perusahaan; pesan dapat dikirim melalui WebSockets. Port 443 akan digunakan untuk komunikasi WebSocket dalam kasus tersebut.

Upaya terakhir: hentikan dan buat ulang semua kontainer

Terkadang, sistem mungkin memerlukan modifikasi khusus yang signifikan untuk bekerja dengan batasan jaringan atau sistem operasi yang ada. Misalnya, sistem dapat memerlukan pemasangan disk data dan pengaturan proksi yang berbeda. Jika Anda mencoba semua langkah sebelumnya dan masih mendapatkan kegagalan kontainer, sistem docker menyimpan cache atau pengaturan jaringan yang dipertahankan mungkin tidak diperbarui dengan konfigurasi ulang terbaru. Dalam hal ini, opsi upaya terakhir adalah menggunakan docker prune dapatkan awal yang bersih dari awal.

Perintah berikut menghentikan sistem IoT Edge (dan dengan demikian semua kontainer), menggunakan opsi "semua" dan "volume" untuk docker prune menghapus semua kontainer dan volume. Tinjau peringatan bahwa perintah bermasalah dan konfirmasi saat y siap.

sudo iotedge system stop
docker system prune --all --volumes
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all volumes not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N]

Mulai sistem lagi. Agar aman, terapkan konfigurasi yang berpotensi tersisa dan mulai sistem dengan satu perintah.

sudo iotedge config apply

Tunggu beberapa menit dan periksa lagi.

sudo iotedge list

Langkah berikutnya

Apakah Anda menemukan bug di platform Azure IoT Edge? Kirim masalah agar kami dapat terus melakukan peningkatkan.

Jika Anda punya pertanyaan lebih lanjut, buat Permintaan dukungan untuk bantuan.