Memecahkan masalah perangkat Azure IoT Edge Anda
Berlaku untuk ikon:
IoT Edge 1.1 Versi lain: IoT Edge 1.2, IoT Edge 1.3
Berlaku untuk
IoT Edge 1.2
1.3 Versi lain:IoT Edge 1.1
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:
Di Linux:
sudo iotedge check
Di Windows:
iotedge check
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 terhubung 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 Azure IoT Edge berlapis, Anda bisa mendapatkan akses ke gambar diagnostik pada perangkat anak 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.
Di Linux:
sudo iotedge support-bundle --since 6h
Di Windows:
iotedge support-bundle --since 6h
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 iotedge check memeriksa apakah daemon keamanan Azure IoT Edge adalah versi terbaru, tetapi tidak memeriksa versi hub Azure 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.
Di Linux:
Lihat status manajer keamanan Azure IoT Edge:
sudo systemctl status iotedgeLihat log manajer keamanan Azure IoT Edge:
sudo journalctl -u iotedge -fLihat log lebih detail dari manajer keamanan Azure IoT Edge:
Edit pengaturan daemon Azure IoT Edge:
sudo systemctl edit iotedge.servicePerbarui baris berikut:
[Service] Environment=IOTEDGE_LOG=debugHidupkan ulang daemon keamanan Azure IoT Edge:
sudo systemctl cat iotedge.service sudo systemctl daemon-reload sudo systemctl restart iotedge
Di Windows:
Lihat status manajer keamanan Azure IoT Edge:
Get-Service iotedgeLihat log manajer keamanan Azure IoT Edge:
. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLogLihat hanya 5 menit terakhir dari log manajer keamanan Azure IoT Edge:
. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog -StartTime ([datetime]::Now.AddMinutes(-5))Lihat log lebih detail dari manajer keamanan Azure IoT Edge:
Tambahkan variabel lingkungan tingkat sistem:
[Environment]::SetEnvironmentVariable("IOTEDGE_LOG", "debug", [EnvironmentVariableTarget]::Machine)Hidupkan ulang Daemon Keamanan Azure IoT Edge:
Restart-Service iotedge
Lihat status layanan sistem Azure IoT Edge:
sudo iotedge system statusLihat log layanan sistem Azure IoT Edge:
sudo iotedge system logs -- -fAktifkan 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 restartBeralih 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, hal ini dapat menyebabkan perangkat terisi 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 RuntimeLogLevel di file konfigurasi yaml Anda. Untuk membuka file:
Di Linux:
sudo nano /etc/iotedge/config.yaml
Di Windows:
notepad C:\ProgramData\iotedge\config.yaml
Secara default, elemen agent akan terlihat seperti contoh berikut:
agent:
name: edgeAgent
type: docker
env: {}
config:
image: mcr.microsoft.com/azureiotedge-agent:1.1
auth: {}
Ganti env: {} dengan:
env:
RuntimeLogLevel: debug
Peringatan
File YAML tidak boleh berisi tab sebagai indentasi. Gunakan 2 spasi sebagai gantinya. Item tingkat atas tidak boleh memiliki spasi kosong di depan.
Simpan file dan hidupkan ulang manajer keamanan 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.
Sementara Azure IoT Edge menyediakan konfigurasi yang disempurnakan untuk mengamankan runtime Azure IoT Edge dan modul yang disebarkan, Azure IoT Edge masih bergantung pada komputer dan konfigurasi jaringan yang mendasarinya. Oleh karena itu, sangat penting untuk memastikan aturan jaringan dan firewall yang tepat disiapkan untuk komunikasi edge 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) |
|
Langkah berikutnya
Apakah Anda menemukan bug di platform Azure IoT Edge? Kirim masalah agar kami dapat terus melakukan peningkatkan.
Jika Anda memiliki pertanyaan lain, buat Permintaan dukungan untuk bantuan.