İleti yönlendirme sorunlarını giderme

Bu makalede, IoT Hub ileti yönlendirmeyle ilgili yaygın sorunlar ve çözüm için izleme ve sorun giderme yönergeleri sağlanır.

İleti yönlendirmeyi izleme

Gönderilen iletilere genel bir bakış sağlamak için ileti yönlendirme ve uç noktalarla ilgili IoT Hub ölçümlerini izlemenizi öneririz. Ayrıca IoT Hub kaynak günlüklerindeki yollara yönelik işlemleri özel işleme için Azure İzleyici Günlüklerine, Event Hubs'a veya Azure Depolama göndermek için bir tanılama ayarı da oluşturabilirsiniz. Ölçümleri, kaynak günlüklerini ve tanılama ayarlarını kullanma hakkında daha fazla bilgi edinmek için bkz . IoT Hub'ı izleme. Öğretici için bkz . IoT hub'ı ile ölçümleri ve kaynak günlüklerini ayarlama ve kullanma.

Ayrıca, yollardan herhangi birinde sorguyla eşleşmeyen iletileri korumak istiyorsanız geri dönüş yolunu etkinleştirmenizi öneririz. Bunlar, yapılandırılan saklama günlerinin miktarı için yerleşik uç noktada tutulabilir.

En sık karşılaşılan sorunlar

İleti yönlendirme ile ilgili en yaygın sorunlar aşağıdadır. Sorun gidermeye başlamak için ayrıntılı adımlar için soruna tıklayın.

Cihazlarımdan gelen iletiler beklendiği gibi yönlendirilmiyor

Bu sorunu gidermek için aşağıdakileri analiz edin.

Bu uç nokta için yönlendirme ölçümleri

Yönlendirmeyle ilgili tüm IoT Hub ölçümlerine Yönlendirme ön eki eklenir. Sorunların kök nedenini belirlemek için birden çok ölçümden bilgileri birleştirebilirsiniz. Örneğin, bir uç noktaya teslim edilen veya herhangi bir rotadaki sorgularla eşleşmediğinde bırakılan iletilerin sayısını belirlemek için Yönlendirme Teslimleri ölçümünü kullanın ve geri dönüş yolu devre dışı bırakıldı. İleti tesliminde gecikme süresinin sabit mi yoksa artan mı olduğunu gözlemlemek için Yönlendirme Gecikme süresi ölçümünü denetleyin. Artan gecikme süresi belirli bir uç noktayla ilgili bir sorunu gösterebilir ve uç noktanın durumunu denetlemenizi öneririz. Bu yönlendirme ölçümleri ayrıca uç nokta türü, belirli uç nokta adı ve iletinin teslim edilmeme nedeni gibi ölçümlerle ilgili ayrıntılar sağlayan boyutlara sahiptir.

İşletimsel sorunlar için kaynak günlükleri

Yönlendirme ve uç nokta işlemleri hakkında daha fazla bilgi edinmek veya sorunu daha fazla anlamak için hataları ve ilgili hata kodunu belirlemek için Rotalar kaynak günlüklerini inceleyin. Örneğin, günlükteki RouteEvaluationError işlem adı, ileti biçimiyle ilgili bir sorun nedeniyle yolun değerlendirilemediğini gösterir. Sorunu azaltmak için belirli işlem adları için sağlanan ipuçlarını kullanın. Bir olay hata olarak günlüğe kaydedildiğinde, günlük değerlendirmenin neden başarısız olduğuna ilişkin daha fazla bilgi de sağlar. Örneğin, işlem adı EndpointUnhealthy ise, 403004 Hata kodu uç noktanın boş alanı olmadığını gösterir.

Uç noktanın durumu

Uç noktaların sistem durumunu almak için REST API Uç Nokta Durumu Al'ı kullanın. Uç Nokta Durumu Al API'sinde ayrıca uç noktaya bir iletinin en son ne zaman başarıyla gönderildiği, bilinen son hata, bilinen son hata zamanı ve bu uç nokta için en son gönderme girişiminde bulunulma zamanı hakkında bilgi sağlanır. Bilinen son hata için sağlanan olası azaltmayı kullanın.

Yerleşik uç noktada iletileri almayı aniden durdurdum

Bu sorunu gidermek için aşağıdakileri analiz edin.

Yeni bir yol oluşturuldu mu?

Bir yol oluşturulduktan sonra, bu uç noktaya bir yol oluşturulmadığı sürece veriler yerleşik uç noktaya akmaya son verir. Yeni bir yol eklenirse iletilerin yerleşik uç noktaya akmaya devam ettiğinden emin olmak için olay uç noktasına bir yol yapılandırın.

Geri dönüş yolu devre dışı bırakıldı mı?

Geri dönüş yolu, mevcut yollardan herhangi birinde sorgu koşullarını karşılamayen tüm iletileri Event Hubs ile uyumlu yerleşik Event Hubs'a (iletiler/olaylar) gönderir. İleti yönlendirme açıksa geri dönüş yolu özelliğini etkinleştirebilirsiniz. Yerleşik uç noktaya yol yoksa ve geri dönüş yolu etkinleştirilirse, yalnızca yollardaki sorgu koşullarıyla eşleşmeyen iletiler yerleşik uç noktaya gönderilir. Ayrıca, tüm mevcut yollar silinirse, yerleşik uç noktadaki tüm verileri almak için geri dönüş yolunun etkinleştirilmesi gerekir.

IoT hub'ına yönelik İleti Yönlendirme dikey penceresini kullanarak Azure portalında geri dönüş yolunu etkinleştirebilir veya devre dışı bırakabilirsiniz. Geri dönüş yolu için özel uç nokta kullanmak üzere FallbackRouteProperties için Azure Resource Manager'ı da kullanabilirsiniz.

IoT Hub yönlendirme uç noktaları için bilinen son hatalar

REST API'de Uç Nokta Durumu Alma, uç noktanın iyi durumda olmamasının nedenini belirlemek için uç noktaların sistem durumunu ve bilinen son hatayı verir. Aşağıdaki tabloda en yaygın hatalar listelenmiştir.

Bilinen Son Hata Açıklama/oluştuğunda Olası Risk Azaltma
Geçici Geçici bir hata oluştu ve IoT Hub işlemi yeniden deneyecek. Yol kaynak günlüklerini gözlemleyin.
InternalError Uç noktaya ileti teslim ederken bir hata oluştu. Bu bir iç özel durumdur, ancak yol kaynak günlüklerini de gözlemleyin.
Yetkisiz IoT Hub' ın belirtilen uç noktaya ileti gönderme yetkisi yok. uç nokta için bağlantı dizesi güncel olduğunu doğrulayın. Değiştiyse IoT Hub'ınızdaki bir güncelleştirmeyi göz önünde bulundurun. Uç nokta yönetilen kimlik kullanıyorsa, IoT Hub sorumlusunun hedefte gerekli izinlere sahip olup olmadığını denetleyin.
Kısıtlandı Uç noktaya ileti yazarken IoT Hub kısıtlanıyor. Etkilenen uç nokta için kısıtlama sınırlarını gözden geçirin. Gerekirse ölçeği artıracak şekilde uç nokta yapılandırmalarını değiştirin.
Timeout İşlem zaman aşımı. İşlemi yeniden deneyin.
Bulunamadı Hedef kaynak yok. Hedef kaynağın var olduğundan emin olun.
Kapsayıcı Bulunamadı Depolama kapsayıcı yok. Depolama kapsayıcısının mevcut olduğundan emin olun.
Kapsayıcı devre dışı bırakıldı Depolama kapsayıcı devre dışı bırakıldı. Depolama kapsayıcısının etkinleştirildiğinden emin olun.
MaxMessageSizeExceeded İleti yönlendirmenin ileti boyutu sınırı 256 KB.Yönlendirilmekte olan ileti boyutu bu sınırı aştı. Daha az uygulama özelliği veya daha az ileti zenginleştirmesi kullanarak ileti boyutunun küçültülebilir olup olmadığını denetleyin.
PartitioningAndDuplicateDetectionNotSupported Service Bus'ta yinelenen algılama etkinleştirilmemiş olabilir. Service Bus'tan yinelenen algılamayı devre dışı bırakın veya yinelenen algılama olmadan bir varlık kullanmayı göz önünde bulundurun.
SessionfulEntityNotSupported Service Bus'ta oturumlar etkinleştirilmemiş olabilir. Service Bus oturumu devre dışı bırakın veya oturumları olmayan bir varlık kullanmayı göz önünde bulundurun.
NoMatchingSubscriptionsForMessage Service Bus konusuna ileti yazacak abonelik yok. Yönlendirilecek IoT Hub iletileri için bir abonelik oluşturun.
EndpointExternallyDisabled Uç nokta etkin durumda olmadığından IoT Hub bu noktaya ileti gönderebilir. Uç noktayı etkin duruma geri getirmek için etkinleştirin.
DeviceMaximumQueueDepthExceeded Hizmet veri yolu boyut sınırına ulaşıldı. Yeni iletilerin Event Hubs'a alınmasına izin vermek için iletileri hedef Event Hubs'dan kaldırmayı göz önünde bulundurun.

Kaynak günlüklerini yönlendirir

Yol kaynak günlüklerinde günlüğe kaydedilen işlem adları ve hata kodları aşağıdadır.

İşlem Adları

İşlem Adı Level Açıklama
UndefinedRouteEvaluation Bilgiler İleti bir verme koşuluyla değerlendirilemez. Örneğin, yönlendirme sorgusu koşulundaki bir özellik iletide yoksa. Yönlendirme sorgusu söz dizimi hakkında daha fazla bilgi edinin.
RouteEvaluationError Hata İleti biçimiyle ilgili bir sorun nedeniyle ileti değerlendirilirken bir hata oluştu. Örneğin, içerik kodlaması belirtilmediyse veya İçerik türü iletide geçerli değilse bu hata günlüğe kaydedilir. Bunlar sistem özelliklerinde ayarlanmalıdır.
DroppedMessage Hata İleti bırakıldı ve yönlendirilmedi. Bunun nedeni iletinin herhangi bir yönlendirme sorgusuyla eşleşmemesi veya uç noktanın ölü olması ve birkaç yeniden denemeden sonra iletinin teslim edilememesi olabilir. REST API'sini kullanarak uç nokta durumu hakkında daha fazla ayrıntı almanızı öneririz.
EndpointUnhealthy Hata Uç nokta IoT Hub'dan gelen iletileri kabul ediyor ve IoT Hub iletileri yeniden göndermeye çalışıyor. REST API'sinin uç nokta durumunu alma yoluyla bilinen son hatayı gözlemlemenizi öneririz.
EndpointDead Hata Uç nokta bir saatten uzun süredir IoT Hub'dan gelen iletileri kabul etmemiştir. REST API'sinin uç nokta durumunu alma yoluyla bilinen son hatayı gözlemlemenizi öneririz.
EndpointHealthy Bilgiler Uç nokta iyi durumda ve IoT Hub'dan ileti alıyor. Bu ileti sürekli günlüğe kaydedilmez, ancak yalnızca uç nokta yeniden iyi duruma geldiğinde günlüğe kaydedilir. Bu ileti, IoT Hub'ın uç noktaya ileti gönderemediği, ancak uç noktanın artık iyi durumda olduğu anlamına gelir.
OrphanedMessage Bilgiler İleti hiçbir yol ile eşleşmiyor.
InvalidMessage Hata uç noktayla uyumsuzluk nedeniyle ileti geçersiz. Uç nokta yapılandırmalarını denetlemenizi öneririz.

UndefinedRouteEvaluation, RouteEvaluationError ve OrphanedMessage işlemleri, IoT Hub'ı başına dakikada en fazla bir kez kısıtlanır ve günlüğe kaydedilir.

Sık karşılaşılan hata kodları

Hata Kodu Açıklama
401002 Iot Hub Yetkisiz Erişimi
413001 İleti çok büyük
403004 Cihaz kuyruk derinliği üst sınırı aşıldı
503008 Bağlantı kısıtlanmış alma
500000 Genel Sunucu hatası
Kategori 401 Yetkisiz
503 Hizmet Kullanılamıyor
500001 Sunucu Hatası
400103 Geçersiz İçerik Kodlaması veya İçerik Türü
404001 Cihaz Bulunamadı

Sonraki adımlar

Daha fazla yardıma ihtiyacınız varsa Microsoft Soru-Cevap ve Stack Overflow forumlarında Azure uzmanlarına başvurabilirsiniz. Alternatif olarak, bir Azure desteği olayı da oluşturabilirsiniz. Azure desteği sitesine gidin ve Destek Al'ı seçin.