استكشاف مسار الرسالة وإصلاحه

توفر هذه المقالة إرشادات المراقبة واستكشاف الأخطاء وإصلاحها للمشكلات الشائعة لتوجيه رسائل IoT Hub.

مراقبة توجيه الرسائل

نوصي بمراقبة مقاييس IoT Hub المتعلقة بتوجيه الرسائل ونقاط النهاية ليتوفر لديك نظرة عامة على الرسائل المرسلة. يمكنك أيضا إنشاء إعداد تشخيص لإرسال العمليات للمسارات في سجلات موارد IoT Hub إلى سجلات Azure Monitor أو مراكز الأحداث أو تخزين Azure للمعالجة المخصصة. لمعرفة المزيد حول استخدام المقاييس وسجلات الموارد وإعدادات التشخيص، راجع Monitor IoT Hub. للحصول على برنامج تعليمي، راجع إعداد واستخدام المقاييس وسجلات الموارد مع مركز IoT.

نوصي أيضا بتمكين المسار الاحتياطي إذا كنت تريد الاحتفاظ بالرسائل التي لا تتطابق مع الاستعلام على أي من المسارات. يمكن الاحتفاظ بها في نقطة النهاية المضمنة لمقدار أيام الاستبقاء التي تم تكوينها.

المشكلات الشائعة

فيما يلي المشكلات الأكثر شيوعا التي لاحظناها في توجيه الرسائل. لبدء استكشاف الأخطاء وإصلاحها، انقر فوق المشكلة للحصول على خطوات مفصلة.

أجهزتي لا توجه الرسائل كما هو متوقع

لاستكشاف هذه المشكلة وإصلاحها، قم بتحليل ما يلي.

مقاييس التوجيه لنقطة النهاية

جميع مقاييس IoT Hub المتعلقة بالتصنيف مسبوقة بالتوجيه. يمكنك دمج المعلومات من مقاييس متعددة لتحديد السبب الجذري للمشكلات. على سبيل المثال، استخدم المقياس عمليات تسليم التوجيه أو لتحديد عدد الرسائل التي تم تسليمها عندما لم تتطابق مع الاستعلامات على أي من التوجيهات وعند تعطيل التوجيه البديل. تحقق من مقياس زمن انتقال التوجيه لمراقبة ما إذا كان زمن الانتقال لتسليم الرسائل ثابتا أو متزايدا. يمكن أن يشير زمن الانتقال المتزايد إلى وجود مشكلة في نقطة نهاية معينة، ونوصي بالتحقق من صحة نقطة النهاية. تحتوي مقاييس التوجيه هذه أيضا على أبعاد توفر تفاصيل حول المقياس مثل نوع نقطة النهاية واسم نقطة النهاية المحددة وسبب عدم تسليم الرسالة.

سجلات الموارد لأي مشكلات تشغيلية

لاحظ سجلات موارد المسارات للحصول على مزيد من المعلومات حول عمليات التوجيه ونقطة النهاية أو تحديد الأخطاء ورمز الخطأ الخاص بفهم تفاصيل المشكلة. على سبيل المثال، يشير اسم العملية RouteEvaluationError في السجل إلى تعذر تقييم المسار بسبب مشكلة في تنسيق الرسالة. استخدم التلميحات المتوفرة لأسماء العمليات المحددة للتخفيف من المشكلة. عند تسجيل حدث كخطأ، سيوفر السجل أيضا المزيد من المعلومات حول سبب فشل التقييم. على سبيل المثال، إذا كان اسم العملية هو EndpointUnhealthy، يشير رمز خطأ 403004 إلى نفاد مساحة نقطة النهاية.

صحة نقطة النهاية

استخدم REST API Get Endpoint Health للحصول على الحالة الصحية لنقاط النهاية. توفر واجهة برمجة تطبيقات Get Endpoint Health أيضا معلومات حول آخر مرة تم فيها إرسال رسالة بنجاح إلى نقطة النهاية وآخر خطأ معروف وآخر وقت خطأ معروف وآخر مرة حدث فيها إجراء محاولة إرسال لنقطة النهاية. استخدم التخفيف المحتمل المتوفر لآخر خطأ معروف محدد.

توقفت فجأة عن تلقي الرسائل في نقطة النهاية المضمنة

لاستكشاف هذه المشكلة وإصلاحها، قم بتحليل ما يلي.

هل تم إنشاء مسار جديد؟

بمجرد إنشاء توجيه، تتوقف البيانات عن التدفق إلى نقطة النهاية المضمنة، ما لم يتم إنشاء توجيه إلى نقطة النهاية هذه. لضمان استمرار تدفق الرسائل إلى نقطة النهاية المضمنة في حالة إضافة مسار جديد، قم بتكوين مسار إلى نقطة نهاية الأحداث.

هل تم تعطيل المسار الاحتياطي؟

يرسل التوجيه البديل كافة الرسائل التي لا تطابق شروط الاستعلام على أي من التوجيهات الموجودة إلى مراكز الأحداث المضمنة (الرسائل/الأحداث)، المتوافقة مع مراكز الأحداث. إذا تم تشغيل توجيه الرسائل، يمكنك تمكين قدرة التوجيه البديل. إذا لم تكن هناك توجيهات إلى نقطة النهاية المضمنة وتم تمكين توجيه بديل، سيتم إرسال الرسائل التي لا تتطابق مع أي شروط استعلام على التوجيهات إلى نقطة النهاية المضمنة فقط. أيضًا، إذا تم حذف كافة التوجيهات الموجودة، يجب تمكين التوجيه البديل لتلقي كافة البيانات عند نقطة النهاية المضمنة.

يمكنك تمكين أو تعطيل المسار الاحتياطي في مدخل Azure باستخدام شفرة توجيه الرسائل لمركز IoT. يمكنك أيضًا استخدام مدير موارد Azure لـ FallbackRouteProperties لاستخدام نقطة نهاية مخصصة للتوجيه البديل.

آخر الأخطاء المعروفة لنقاط نهاية توجيه IoT Hub

تعطي Get Endpoint Health في واجهة برمجة تطبيقات REST الحالة الصحية لنقاط النهاية، بالإضافة إلى الخطأ الأخير المعروف، لتحديد سبب عدم صحة نقطة النهاية. يسرد الجدول أدناه الأخطاء الأكثر شيوعا.

آخر خطأ معروف الوصف/وقت الحدوث التخفيف المحتمل من المخاطر
مؤقت حدث خطأ عابر وسيقوم IoT Hub بإعادة محاولة العملية. مراقبة سجلات موارد المسارات.
InternalError حدث خطأ أثناء تسليم رسالة إلى نقطة نهاية. هذا استثناء داخلي ولكنه يلاحظ أيضا سجلات موارد المسارات.
غير مصرح به ليس مصرح لـ IoT Hub بإرسال رسائل إلى نقطة النهاية المحددة. تحقق من أن سلسلة الاتصال محدثة لنقطة النهاية. إذا تم تغييره، جرب التحديث على IoT Hub. إذا كانت نقطة النهاية تستخدم الهوية المدارة، فتحقق من أن كيان IoT Hub لديه الأذونات المطلوبة على الهدف.
مقيد يتم تقييد IoT Hub أثناء كتابة الرسائل في نقطة النهاية. راجع حدود التقييد لنقطة النهاية المتأثرة. تعديل التكوينات لنقطة النهاية لتوسيع نطاقها إذا لزم الأمر.
المهلة مهلة التشغيل. يُرجى إعادة محاولة تنفيذ العملية.
غير موجود المورد الهدف غير موجود. تأكد من وجود المورد الهدف.
لم يتم العثور على الحاوية حاوية التخزين غير موجودة. تأكد من وجود حاوية التخزين.
تعطيل الحاوية تم تعطيل حاوية التخزين. تأكد من تمكين حاوية التخزين.
MaxMessageSizeExceeded يحتوي توجيه الرسائل على حد لحجم الرسالة الذي يبلغ 256 كيلوبايت. يتجاوز حجم الرسالة التي يتم توجيهها هذا الحد. تحقق من إمكانية تقليل حجم الرسالة باستخدام عدد أقل من خصائص التطبيق أو إثراء رسائل أقل.
PartitioningAndDuplicateDetectionNotSupported قد يتعذر تمكين الكشف عن التكرارات في ناقل الخدمة. قم بتعطيل الكشف عن التكرارات من ناقل خدمة Azure أو ضع في اعتبارك استخدام كيان بدون الكشف عن التكرارات.
SessionfulEntityNotSupported قد لا يكون لدى ناقل الخدمة جلسات عمل ممكنة. قم بتعطيل جلسة العمل من ناقل خدمة Azure أو جرب استخدام كيان بدون جلسات عمل.
NoMatchingSubscriptionsForMessage لا يوجد اشتراك لكتابة رسالة في موضوع ناقل الخدمة. إنشاء اشتراك لرسائل IoT Hub التي سيتم توجيهها إليها.
EndpointExternallyDisabled نقطة النهاية ليست في حالة نشطة بحيث يمكن لـ IoT Hub إرسال رسائل إليها. تمكين نقطة النهاية لإعادتها إلى الحالة النشطة.
DeviceMaximumQueueDepthExceeded تم الوصول إلى حد حجم ناقل الخدمة. ضع في اعتبارك إزالة الرسائل من Event Hubs المستهدفة للسماح باستيعاب الرسائل الجديدة في Event Hubs.

الوصول إلى سجلات الموارد

فيما يلي أسماء العمليات ورموز الأخطاء المسجلة في سجلات موارد المسارات.

أسماء العمليات

اسم العملية المستوى ‏‏الوصف
UndefinedRouteEvaluation ‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏المعلومات لا يمكن تقييم الرسالة بالشرط الحالي. على سبيل المثال، إذا كانت الخاصية في شرط استعلام التوجيه غير موجودة في الرسالة. تعرف على المزيد حول بناء جملة استعلام التوجيه.
RouteEvaluationError خطأ حدث خطأ أثناء تقييم الرسالة بسبب مشكلة في تنسيق الرسالة. على سبيل المثال، سيتم تسجيل هذا الخطأ إذا لم يتم تحديد ترميز المحتوى أو إذا كان نوع المحتوى غير صحيح في الرسالة. يجب تعينها في خصائص النظام.
تاريخ الإفلات خطأ تم إفلات الرسالة ولم يتم توجيهها. قد يرجع ذلك إلى أسباب مثل عدم تطابق الرسالة مع أي استعلام توجيه أو أن نقطة النهاية كانت غير سليمة وتعذر تسليم الرسالة بعد العديد من عمليات إعادة المحاولة. نوصي بالحصول على مزيد من التفاصيل حول نقطة النهاية باستخدام واجهة برمجة تطبيقات REST الحصول على صحة نقطة النهاية.
EndpointUnhealthy خطأ لم تقبل نقطة النهاية الرسائل من IoT Hub ويحاول IoT Hub إعادة إرسال الرسائل. نوصي بملاحظة الخطأ الأخير المعروف عبر واجهة برمجة تطبيقات REST الحصول على صحة نقطة النهاية.
EndpointDead خطأ لم تقبل نقطة النهاية الرسائل من IoT Hub لأكثر من ساعة. نوصي بملاحظة الخطأ الأخير المعروف عبر واجهة برمجة تطبيقات REST الحصول على صحة نقطة النهاية.
EndpointHealthy ‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏المعلومات نقطة النهاية سليمة وتتلقى رسائل من IoT Hub. لا تسجل هذه الرسالة بشكل مستمر، ولكن يتم تسجيلها فقط عندما تصبح نقطة النهاية سليمة مرة أخرى. تعني هذه الرسالة أن IoT Hub لم يتمكن من إرسال رسائل إلى نقطة النهاية، ولكن نقطة النهاية سليمة الآن.
OrphanedMessage ‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏المعلومات لا تتطابق الرسالة مع أي مسار.
InvalidMessage خطأ الرسالة غير صحيحة بسبب عدم التوافق مع نقطة النهاية. نوصي بالتحقق من تكوينات نقطة النهاية.

يتم تقييد العمليات UndefinedRouteEvaluation و RouteEvaluationError و OrphanedMessage وتسجيلها لا أكثر من مرة واحدة في الدقيقة لكل مركز IoT.

رموز الخطأ الشائعة

رمز الخطأ ‏‏الوصف
401002 الوصول غير المصرح به إلى Iot Hub
413001 رسالة كبيرة جدا
403004 تجاوز الحد الأقصى لعمق قائمة انتظار الجهاز
503008 تقييد تلقي ارتباط
500000 خطأ عام في الخادم
401 غير مصرح به
503 الخدمة غير متوفرة
500001 Server Error
400103 ترميز المحتوى أو نوع المحتوى غير صحيح
404001 تعذر العثور على الجهاز

الخطوات التالية

إذا كنت بحاجة إلى مزيد من المساعدة، يمكنك الاتصال بخبراء Azure في منتديات Microsoft Q&A و Stack Overflow. بدلاً من ذلك، يمكنك تقديم حدث دعم Azure. انتقل إلى موقع دعم Azure وحدد Get Support.