Memecahkan masalah perangkat IoT Edge Anda
Berlaku untuk: IoT Edge 1.5 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
mendapatkan log sejak enam jam terakhir, 6d
sejak enam hari terakhir, 6m
sejak enam menit terakhir dan sebagainya. 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 menghasilkan semua properti edgeAgent 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:
Aktifkan log tingkat debug.
sudo iotedge system set-log-level debug sudo iotedge system restart
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:
Pada perangkat IoT Edge, jalankan perintah berikut untuk melihat log:
iotedge logs <container name>
Di portal Microsoft Azure, gunakan alat pemecah masalah bawaan. Memantau dan mengatasi masalah perangkat IoT Edge dari portal Microsoft Azure
Gunakan metode langsung UploadModuleLogs untuk mengunggah log modul ke Azure Blob Storage.
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 IoT Hub yang didukung. Untuk informasi selengkapnya, 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) |
|
AMQP | 5671 | DIBLOKIR (Bawaan) | BUKA (Bawaan) |
|
HTTPS | 443 | DIBLOKIR (Bawaan) | BUKA (Bawaan) |
|
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.