Bagikan melalui


Pemecahan masalah perutean pesan

Artikel ini menyediakan panduan untuk pemantauan, pemecahan masalah, dan resolusi masalah umum terkait perutean pesan IoT Hub.

Memantau perutean pesan

Sebaiknya Anda memantau metrik IoT Hub yang terkait dengan perutean pesan dan titik akhir untuk memberi Anda gambaran umum tentang pesan yang dikirim. Anda juga dapat membuat pengaturan diagnostik untuk mengirim operasi untuk rute di dalam log sumber daya IoT Hub ke Log Azure Monitor, Azure Event Hubs, atau Azure Storage untuk pemrosesan kustom. Untuk mempelajari selengkapnya tentang menggunakan metrik, log sumber daya, dan pengaturan diagnostik, lihat Memantau IoT Hub. Untuk tutorial, lihat Menyiapkan dan menggunakan metrik dan log sumber daya dengan hub IoT.

Kami juga menyarankan untuk mengaktifkan rute cadangan jika Anda ingin mempertahankan pesan yang tidak cocok dengan kueri di rute mana pun. Pesan-pesan ini dapat dipertahankan di titik akhir bawaan untuk jumlah hari retensi yang dikonfigurasi.

Masalah teratas

Berikut adalah masalah paling umum yang diamati pada perutean pesan. Untuk memulai pemecahan masalah, pilih masalah untuk langkah-langkah terperinci.

Pesan dari perangkat saya tidak dirutekan sesuai harapan

Untuk memecahkan masalah ini, analisis informasi berikut.

Metrik pengaturan rute untuk endpoint ini

Semua metrik IoT Hub yang terkait dengan perutean diawali dengan Perutean. Anda dapat menggabungkan informasi dari beberapa metrik untuk mengidentifikasi akar penyebab masalah. Misalnya, gunakan metrik Pengiriman Perutean untuk mengidentifikasi jumlah pesan yang dikirim ke titik akhir atau dijatuhkan saat pesan tersebut tidak cocok dengan kueri di salah satu rute dan rute cadangan dinonaktifkan. Periksa metrik Latensi Perutean untuk mengamati apakah latensi untuk pengiriman pesan stabil atau meningkat. Latensi yang meningkat dapat menunjukkan masalah dengan titik akhir tertentu dan sebaiknya periksa kesehatan titik akhir. Metrik perutean ini juga memiliki dimensi yang memberikan detail tentang metrik seperti jenis titik akhir, nama titik akhir tertentu, dan alasan mengapa pesan tidak dikirimkan.

Log sumber daya untuk masalah operasional apa pun

Amati log sumber daya Rute untuk mendapatkan informasi lebih lanjut tentang operasi perutean dan titik akhir, serta mengidentifikasi kesalahan dan kode kesalahan yang relevan untuk memahami masalah lebih lanjut. Misalnya, nama operasi RouteEvaluationError dalam log menunjukkan rute tidak dapat dievaluasi karena masalah dengan format pesan. Gunakan kiat yang diberikan untuk nama operasi tertentu untuk mengurangi masalah. Ketika peristiwa dicatat sebagai kesalahan, log juga memberikan informasi lebih lanjut tentang mengapa evaluasi gagal. Misalnya, jika nama operasi adalah EndpointUnhealthy, kode Kesalahan 403004 menunjukkan titik akhir kehabisan ruang.

Kesehatan perangkat akhir

Gunakan REST API Get Endpoint Health untuk mendapatkan status kesehatan titik akhir. API ini juga menyediakan informasi tentang terakhir kali pesan berhasil dikirim ke titik akhir, kesalahan terakhir yang diketahui, waktu kesalahan terakhir yang diketahui, dan terakhir kali upaya pengiriman dilakukan untuk titik akhir ini. Gunakan kemungkinan mitigasi yang disediakan untuk kesalahan spesifik terakhir yang diketahui.

Saya tiba-tiba berhenti menerima pesan di titik akhir bawaan

Untuk memecahkan masalah ini, analisis informasi berikut.

Apakah rute baru dibuat?

Setelah rute dibuat, data berhenti mengalir ke titik akhir bawaan, kecuali jika rute dibuat ke titik akhir tersebut. Untuk memastikan pesan terus mengalir ke titik akhir bawaan jika rute baru ditambahkan, konfigurasikan rute ke titik akhir peristiwa .

Apakah rute Fallback dinonaktifkan?

Rute fallback mengirimkan semua pesan yang tidak memenuhi salah satu kondisi kueri pada salah satu rute yang ada ke Azure Event Hubs bawaan (pesan/peristiwa), yang kompatibel dengan Azure Event Hubs. Jika perutean pesan diaktifkan, Anda dapat mengaktifkan kemampuan jalur pengalihan. Jika tidak ada rute ke titik akhir bawaan dan rute fallback diaktifkan, hanya pesan yang tidak cocok dengan kondisi kueri apa pun pada rute yang dikirim ke titik akhir bawaan. Juga, jika semua rute yang ada dihapus, rute fallback harus diaktifkan untuk menerima semua data di titik akhir bawaan.

Anda dapat mengaktifkan atau menonaktifkan jalur cadangan di portal Azure dengan menggunakan panel Perutean Pesan untuk hub IoT. Anda juga dapat menggunakan Azure Resource Manager untuk FallbackRouteProperties guna menggunakan titik akhir khusus untuk rute fallback.

Kesalahan terbaru yang diketahui untuk titik akhir perutean IoT Hub

Memeriksa Kesehatan Endpoint di REST API memberikan kondisi kesehatan endpoint dan kesalahan terakhir yang diketahui, untuk mengidentifikasi alasan mengapa sebuah endpoint tidak sehat. Tabel ini mencantumkan kesalahan yang paling umum.

Kesalahan Terakhir yang Diketahui Deskripsi/kapan itu terjadi Kemungkinan Mitigasi
Sementara Terjadi kesalahan sementara dan IoT Hub akan mencoba kembali operasi. Amati log sumber daya rute.
Kesalahan Internal Terjadi kesalahan saat mengirimkan pesan ke titik akhir. Kesalahan ini adalah pengecualian internal, namun perhatikan juga log sumber daya rute.
Tidak diizinkan IoT Hub tidak berwenang untuk mengirim pesan ke titik akhir yang ditentukan. Validasi bahwa string koneksi sudah diperbarui untuk titik akhir. Jika berubah, pertimbangkan pembaruan di IoT Hub Anda. Jika titik akhir menggunakan identitas terkelola, periksa apakah perwakilan IoT Hub memiliki izin yang diperlukan pada target.
Dibatasi IoT Hub dibatasi saat menulis pesan ke endpoint. Tinjau batas kecepatan untuk titik akhir yang terpengaruh. Ubah konfigurasi agar titik akhir dapat ditingkatkan skalanya jika diperlukan.
Jeda Waktu Waktu operasi habis. Coba lagi operasi.
Tidak Ditemukan Sumber daya target tidak ada. Pastikan sumber daya target ada.
Kontainer Tidak Ditemukan Kontainer penyimpanan tidak ada. Pastikan kontainer penyimpanan ada.
Kontainer dinonaktifkan Kontainer penyimpanan dinonaktifkan. Pastikan kontainer penyimpanan diaktifkan.
UkuranPesanMaksimumTerlampaui Perutean pesan memiliki batas ukuran pesan 256 Kb. Ukuran pesan yang dirutekan melebihi batas ini. Periksa apakah ukuran pesan dapat dikurangi dengan menggunakan lebih sedikit properti aplikasi atau lebih sedikit pengayaan pesan.
PartisiDanPendeteksianDuplikatTidakDidukung Bus layanan mungkin tidak mengaktifkan fitur deteksi duplikat. Nonaktifkan deteksi duplikat dari Azure Service Bus atau pertimbangkan untuk menggunakan entitas tanpa deteksi duplikat.
SessionfulEntityTidakDidukung Mungkin sesi pada bus layanan belum diaktifkan. Nonaktifkan sesi dari Azure Service Bus atau pertimbangkan untuk menggunakan entitas tanpa sesi.
Tidak Ada Langganan yang Cocok untuk Pesan Tidak ada langganan untuk menulis pesan pada topik bus layanan. Buat langganan untuk pesan IoT Hub yang akan dirutekan.
Titik Akhir Dinonaktifkan Secara Eksternal Titik akhir tidak dalam status aktif sehingga IoT Hub dapat mengirim pesan ke dalamnya. Aktifkan titik akhir untuk mengembalikannya ke status aktif.
Kedalaman Antrian Maksimal Perangkat Terlampaui Batas ukuran bus layanan telah tercapai. Pertimbangkan untuk menghapus pesan dari Event Hubs target untuk memungkinkan pesan baru diterima di Event Hubs.

Mengarahkan log sumber daya

Berikut ini adalah nama operasi dan kode kesalahan yang dicatat dalam log sumber daya rute.

Nama Operasi

Nama Operasi Tingkat Deskripsi
EvaluasiRuteTakDidefinisikan Informasi Pesan tidak dapat dievaluasi dengan kondisi yang diberikan. Misalnya, jika properti pada kueri kondisi rute tidak ada pada pesan. Pelajari selengkapnya tentang sintaks kueri perutean.
RuteEvaluasiKesalahan Kesalahan Terjadi kesalahan saat mengevaluasi pesan karena masalah dengan format pesan. Misalnya, kesalahan ini akan dicatat jika pengodean konten tidak ditentukan atau Tipe konten tidak valid dalam pesan. Ini harus diatur dalam properti sistem.
Pesan Terbuang Kesalahan Pesan dihilangkan dan tidak dirutekan. Ini bisa disebabkan oleh alasan seperti pesan tidak cocok dengan kueri perutean atau titik akhir tidak berfungsi dan pesan tidak dapat dikirimkan meskipun sudah beberapa kali dicoba ulang. Sebaiknya dapatkan detail selengkapnya tentang titik akhir dengan menggunakan REST API mendapatkan kesehatan titik akhir.
Endpoint Tidak Sehat Kesalahan Titik akhir belum menerima pesan dari IoT Hub dan IoT Hub mencoba mengirim ulang pesan. Sebaiknya mengamati kesalahan terakhir yang diketahui melalui REST API periksa kesehatan titik akhir.
Titik Akhir Mati Kesalahan Titik akhir belum menerima pesan dari IoT Hub selama lebih dari satu jam. Sebaiknya mengamati kesalahan terakhir yang diketahui melalui REST API periksa kesehatan titik akhir.
Titik AkhirSehat Informasi Titik akhir sehat dan menerima pesan dari IoT Hub. Pesan ini tidak dicatat terus menerus, tetapi dicatat hanya ketika titik akhir menjadi sehat lagi. Pesan ini berarti IoT Hub tidak dapat mengirim pesan ke titik akhir, tetapi titik akhir sekarang sehat.
Pesan Terlantar Informasi Pesan tidak cocok dengan rute apa pun.
PesanTidakValid Kesalahan Pesan tidak valid karena ketidaksesuaian dengan titik akhir. Sebaiknya periksa konfigurasi titik akhir.

Operasi UndefinedRouteEvaluation, RouteEvaluationError dan OrphanedMessage dibatasi dan dicatat tidak lebih dari sekali semenit per IoT Hub.

Kode kesalahan umum

Kode Kesalahan Deskripsi
401002 Akses Tidak Sah IoT Hub
413001 Pesan terlalu besar
403004 Kedalaman antrean maksimum perangkat terlampaui
503008 Menerima tautan yang diperlambat
500000 Kesalahan Server Generik
401 Tidak diizinkan
503 Layanan Tidak Tersedia
500001 Kesalahan Server
400103 Pengodean Isi Atau Tipe Isi Tidak Valid
404001 Perangkat Tidak Ditemukan

Langkah selanjutnya

Jika Anda memerlukan bantuan lebih lanjut, Anda dapat menghubungi pakar Azure di forum Tanya Jawab Microsoft dan Stack Overflow. Atau, Anda dapat mengajukan insiden dukungan Azure. Buka situs dukungan Azure dan pilih Dapatkan Dukungan.