Pemecahan masalah perutean pesan

Artikel ini memberikan panduan pemantauan dan pemecahan masalah untuk masalah dan resolusi umum untuk perutean pesan Azure 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 setelan diagnostik untuk mengirim operasi rute di log sumber daya IoT Hub ke Log Azure Monitor, Azure Event Hubs, atau Azure Storage untuk pemrosesan kustom. Untuk mempelajari lebih lanjut tentang menggunakan metrik, log sumber daya, dan pengaturan diagnostik, lihat Memantau Azure IoT Hub. Untuk tutorial, lihat Menyiapkan dan menggunakan metrik dan log sumber daya dengan IoT hub.

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

Masalah teratas

Berikut ini adalah masalah paling umum yang diamati dengan perutean pesan. Untuk memulai pemecahan masalah, klik pada masalah untuk langkah-langkah mendetail.

Pesan dari perangkat saya tidak dirutekan seperti yang diharapkan

Untuk memecahkan masalah ini, analisis berikut ini.

Metrik perutean untuk titik akhir 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 terkirim.

Log sumber daya untuk masalah operasional apa pun

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

Kesehatan titik akhir

Gunakan REST API Get Endpoint Health untuk mendapatkan status kesehatan titik akhir. API Dapatkan Kesehatan Titik Akhir juga memberikan informasi tentang kapan terakhir kali pesan berhasil dikirim ke titik akhir, kesalahan terakhir yang diketahui, waktu kesalahan terakhir yang diketahui, dan terakhir kali upaya pengiriman dilakukan. dibuat untuk titik akhir ini. Gunakan kemungkinan mitigasi yang disediakan untuk kesalahan terakhir yang diketahui tertentu.

Saya tiba-tiba berhenti menerima pesan di titik akhir bawaan

Untuk memecahkan masalah ini, analisis berikut ini.

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 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 rute fallback. Jika tidak ada rute ke titik akhir bawaan dan rute cadangan diaktifkan, hanya pesan yang tidak cocok dengan kondisi kueri apa pun pada rute yang akan 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 rute mundur di portal Azure dengan menggunakan bilah Perutean Pesan untuk hub IoT. Anda juga dapat menggunakan Azure Resource Manager untuk FallbackRouteProperties guna menggunakan titik akhir khusus untuk rute fallback.

Kesalahan terakhir yang diketahui untuk titik akhir perutean IoT Hub

Dapatkan Kesehatan Titik Akhir di REST API memberikan status kesehatan titik akhir, serta kesalahan terakhir yang diketahui, untuk mengidentifikasi alasan titik akhir tidak sehat. Tabel di bawah ini mencantumkan kesalahan paling umum.

Kesalahan Terakhir yang Diketahui Deskripsi/ketika itu terjadi Kemungkinan Mitigasi
Perubahan sementara Terjadi kesalahan sementara dan IoT Hub akan mencoba kembali operasi. Baca merutekan log sumber daya.
InternalError Terjadi kesalahan saat mengirimkan pesan ke titik akhir. Ini adalah pengecualian internal, tetapi baca juga merutekan log sumber daya.
Tidak diizinkan IoT Hub tidak diizinkan untuk mengirim pesan ke titik akhir yang ditentukan. Validasi string koneksi sudah diperbarui untuk titik akhir. Jika sudah berubah, pertimbangkan pembaruan pada IoT Hub Anda. Jika titik akhir menggunakan identitas terkelola, periksa apakah prinsipal IoT Hub memiliki izin yang diperlukan pada target.
Dibatasi IoT Hub dibatasi saat menulis pesan ke titik akhir. Ulas batas pembatasan untuk titik akhir yang terpengaruh. Ubah konfigurasi titik akhir untuk meningkatkan skala jika diperlukan.
Waktu habis 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.
MaxMessageSizeExceeded Perutean pesan memiliki batas ukuran pesan sebesar 256 Kb.Ukuran pesan yang dirutekan melebihi batas ini. Periksa apakah ukuran pesan dapat dikurangi menggunakan lebih sedikit properti aplikasi atau lebih sedikit pengayaan pesan.
PartitioningAndDuplicateDetectionNotSupported Bus layanan mungkin tidak mengaktifkan deteksi duplikat. Nonaktifkan deteksi duplikat dari Bus Layanan atau pertimbangkan untuk menggunakan entitas tanpa deteksi duplikat.
SessionfulEntityNotSupported Bus layanan mungkin tidak mengaktifkan sesi. Nonaktifkan sesi dari Bus Layanan atau pertimbangkan untuk menggunakan entitas tanpa sesi.
NoMatchingSubscriptionsForMessage Tidak ada langganan untuk menulis pesan tentang topik bus layanan. Buat langganan pesan IoT Hub yang akan dirutekan.
EndpointExternallyDisabled Titik akhir tidak dalam status aktif sehingga IoT Hub dapat mengirim pesan ke dalamnya. Aktifkan titik akhir untuk mengaktifkannya kembali.
DeviceMaximumQueueDepthExceeded Batas ukuran bus layanan telah tercapai. Pertimbangkan untuk menghapus pesan dari Pusat Aktivitas target untuk memungkinkan pesan baru diserap ke Pusat Aktivitas.

Merutekan log sumber daya

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

Nama Operasi

Nama Operasi Tingkat Deskripsi
UndefinedRouteEvaluation Informasi Pesan tidak dapat dievaluasi dengan kondisi tertentu. Misalnya, jika properti dalam kondisi kueri rute tidak ada dalam pesan. Pelajari selengkapnya tentang sintaks kueri perutean.
RuteEvaluationError Error Timbul kesalahan saat mengevaluasi pesan karena ada masalah dengan format pesan. Misalnya, kesalahan ini akan di-log jika pengkodean konten tidak ditentukan atau Tipe konten tidak valid dalam pesan. Ini harus diset dalam properti sistem.
DroppedMessage Error Pesan telah dijatuhkan dan tidak dirutekan. Hl ini bisa disebabkan oleh alasan seperti pesan tidak cocok dengan kueri perutean atau titik akhir mati dan pesan tidak dapat dikirimkan setelah beberapa coba ulang. Sebaiknya dapatkan detail lebih lanjut tentang titik akhir dengan menggunakan REST API get endpoint health.
EndpointUnhealthy Error Titik akhir belum menerima pesan dari IoT Hub dan IoT Hub mencoba mengirim ulang pesan. Kami sarankan untuk mengamati kesalahan terakhir yang diketahui melalui REST API get endpoint health.
EndpointDead Error Titik akhir belum menerima pesan dari IoT Hub selama lebih dari satu jam. Kami sarankan untuk mengamati kesalahan terakhir yang diketahui melalui REST API get endpoint health.
EndpointHealthy Informasi Titik akhir sehat dan menerima pesan dari IoT Hub. Pesan ini tidak di-log terus menerus, tetapi hanya di-log ketika titik akhir menjadi sehat kembali. Pesan ini berarti IoT Hub tidak dapat mengirim pesan ke titik akhir, tetapi titik akhir sekarang sehat.
OrphanedMessage Informasi Pesan tidak cocok dengan rute apa pun.
InvalidMessage Error Pesan tidak valid karena ketidakcocokan dengan titik akhir. Sebaiknya periksa konfigurasi titik akhir.

Operasi UndefinedRouteEvaluation, RouteEvaluationError dan OrphanedMessage dibatasi dan di-log 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 Terima tautan dibatasi
500000 Kesalahan Server Umum
401 Tidak diizinkan
503 Layanan Tidak Tersedia
500001 Kesalahan Server
400103 Pengodean Konten atau Jenis Konten Tidak Valid
404001 Perangkat Tidak ditemukan

Langkah berikutnya

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, lalu pilih Dapatkan Dukungan.