Memecahkan masalah perangkat IoT Edge Anda
Berlaku untuk: IoT Edge 1.1
Penting
Tanggal akhir dukungan IoT Edge 1.1 adalah 13 Desember 2022. Periksa Siklus Hidup Produk Microsoft untuk mendapatkan informasi tentang bagaimana produk, layanan, teknologi, atau API ini didukung. Untuk informasi selengkapnya tentang memperbarui ke IoT Edge versi terbaru, 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:
Di Linux:
sudo iotedge check
Di Windows:
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.
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
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 iotedge
Lihat log manajer keamanan Azure IoT Edge:
sudo journalctl -u iotedge -f
Lihat log lebih detail dari manajer keamanan Azure IoT Edge:
Edit pengaturan daemon Azure IoT Edge:
sudo systemctl edit iotedge.service
Perbarui baris berikut:
[Service] Environment=IOTEDGE_LOG=debug
Hidupkan 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 iotedge
Lihat log manajer keamanan Azure IoT Edge:
. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog
Lihat 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
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 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) |
|
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 di atas dan masih mendapatkan kegagalan kontainer, ada kemungkinan bahwa di suatu tempat cache sistem docker atau pengaturan jaringan yang dipertahankan tidak diperbarui dengan konfigurasi ulang terbaru. Dalam hal ini, opsi upaya terakhir adalah menggunakan docker prune
dapatkan awal yang bersih dari awal.
Perintah mengikuti 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.