استكشاف أخطاء جهاز IoT Edge وإصلاحها
ينطبق على: IoT Edge 1.5 IoT Edge 1.4
هام
IoT Edge 1.5 LTS وIoT Edge 1.4 LTS هي إصدارات مدعومة. IoT Edge 1.4 LTS هو نهاية العمر الافتراضي في 12 نوفمبر 2024. إذا كنت تستخدم إصدارا سابقا، فشاهد تحديث IoT Edge.
إذا واجهت مشكلات في تشغيل Azure IoT Edge في بيئتك، فاستخدم هذه المقالة كدليل لاستكشاف الأخطاء وإصلاحها والتشخيصات.
تشغيل الأمر "التحقق"
يجب أن تكون خطوتك الأولى عند استكشاف أخطاء IoT Edge وإصلاحها هي استخدام check
الأمر الذي يقوم بتشغيل مجموعة من اختبارات التكوين والاتصال للمشكلات الشائعة. check
يتوفر الأمر في الإصدار 1.0.7 والإصدارات الأحدث.
إشعار
لا يمكن لأداة استكشاف الأخطاء وإصلاحها تشغيل عمليات التحقق من الاتصال إذا كان جهاز IoT Edge خلف خادم وكيل.
يمكنك تشغيل الأمر كما check
يلي، أو تضمين العلامة --help
لمشاهدة قائمة كاملة بالخيارات:
sudo iotedge check
تقوم أداة استكشاف الأخطاء وإصلاحها بتشغيل العديد من عمليات التحقق التي تم فرزها في هذه الفئات الثلاث:
- تفحص فحوصات التكوين التفاصيل التي قد تمنع أجهزة IoT Edge من الاتصال بالسحابة، بما في ذلك المشكلات المتعلقة بملف التكوين ومحرك الحاوية.
- تتحقق عمليات التحقق من الاتصال من أن وقت تشغيل IoT Edge يمكنه الوصول إلى المنافذ على الجهاز المضيف وأن جميع مكونات IoT Edge يمكنها الاتصال بمركز IoT. ترجع هذه المجموعة من عمليات التحقق أخطاء إذا كان جهاز IoT Edge خلف وكيل.
- تبحث عمليات التحقق من جاهزية الإنتاج عن أفضل ممارسات الإنتاج الموصى بها، مثل حالة شهادات المرجع المصدق للجهاز (CA) وتكوين ملف سجل الوحدة النمطية.
تستخدم أداة فحص IoT Edge حاوية لتشغيل التشخيصات الخاصة بها. صورة الحاوية، mcr.microsoft.com/azureiotedge-diagnostics:latest
، متاحة من خلال سجل حاويات Microsoft. إذا كنت بحاجة إلى إجراء فحص على جهاز دون الوصول المباشر إلى الإنترنت، فستحتاج أجهزتك إلى الوصول إلى صورة الحاوية.
في سيناريو يستخدم أجهزة IoT Edge المتداخلة، يمكنك الوصول إلى صورة التشخيص على أجهزة انتقال البيانات من الخادم عن طريق توجيه سحب الصورة عبر الأجهزة الأصل.
sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:<port_for_api_proxy_module>/azureiotedge-diagnostics:1.2
للحصول على معلومات حول كل من عمليات التحقق التشخيصية التي تعمل عليها هذه الأداة، بما في ذلك ما يجب فعله إذا تلقيت خطأ أو تحذيرا، راجع عمليات التحقق من استكشاف أخطاء IoT Edge وإصلاحها.
جمع معلومات تتبع الأخطاء باستخدام الأمر "حزمة الدعم"
عندما تحتاج إلى جمع السجلات من جهاز IoT Edge، فإن الطريقة الأكثر ملاءمة هي استخدام support-bundle
الأمر. بشكل افتراضي، يجمع هذا الأمر الوحدة النمطية ومدير أمان IoT Edge وسجلات محرك الحاوية وإخراج iotedge check
JSON ومعلومات تصحيح الأخطاء المفيدة الأخرى. يقوم بضغطها في ملف واحد لسهولة المشاركة. support-bundle
يتوفر الأمر في الإصدار 1.0.9 والإصدارات الأحدث.
support-bundle
قم بتشغيل الأمر مع العلامة --since
لتحديد المدة من الماضي الذي تريد الحصول على السجلات. على سبيل المثال 6h
يحصل على سجلات منذ الساعات الست الماضية، 6d
منذ آخر ستة أيام، 6m
منذ آخر ست دقائق وما إلى ذلك. قم بتضمين العلامة --help
لمشاهدة قائمة كاملة بالخيارات.
sudo iotedge support-bundle --since 6h
بشكل افتراضي، support-bundle
يقوم الأمر بإنشاء ملف مضغوط يسمى support_bundle.zip في الدليل حيث يتم استدعاء الأمر. استخدم العلامة --output
لتحديد مسار أو اسم ملف مختلف للإخراج.
لمزيد من المعلومات حول الأمر، اعرض معلومات التعليمات الخاصة به.
iotedge support-bundle --help
يمكنك أيضا استخدام استدعاء الأسلوب المباشر المضمن UploadSupportBundle لتحميل إخراج الأمر حزمة الدعم إلى Azure Blob Storage.
تحذير
يمكن أن يحتوي الإخراج من support-bundle
الأمر على أسماء المضيف والجهاز والوحدة النمطية والمعلومات المسجلة بواسطة الوحدات وما إلى ذلك. يرجى أن تكون على علم بذلك في حالة مشاركة الإخراج في منتدى عام.
مراجعة المقاييس التي تم جمعها من وقت التشغيل
تنتج وحدات وقت تشغيل IoT Edge مقاييس لمساعدتك في مراقبة وفهم صحة أجهزة IoT Edge. أضف وحدة جامع المقاييس إلى عمليات النشر الخاصة بك للتعامل مع جمع هذه المقاييس وإرسالها إلى السحابة لتسهيل المراقبة.
لمزيد من المعلومات، راجع تجميع مقاييس النقل.
تحقق من إصدار IoT Edge
إذا كنت تقوم بتشغيل إصدار أقدم من IoT Edge، فقد تعمل الترقية على حل المشكلة. iotedge check
تتحقق الأداة من أن البرنامج الخفي لأمان IoT Edge هو أحدث إصدار، ولكنها لا تتحقق من إصدارات مركز IoT Edge والوحدات النمطية للعامل. للتحقق من إصدار وحدات وقت التشغيل على جهازك، استخدم الأوامر iotedge logs edgeAgent
و iotedge logs edgeHub
. يتم تعريف رقم الإصدار في السجلات عند بدء تشغيل الوحدة النمطية.
للحصول على إرشادات حول كيفية تحديث جهازك، راجع تحديث البرنامج الخفي لأمان IoT Edge ووقت التشغيل.
تحقق من تثبيت IoT Edge على أجهزتك
يمكنك التحقق من تثبيت IoT Edge على أجهزتك من خلال مراقبة وحدة edgeAgent المزدوجة.
للحصول على أحدث وحدة نمطية edgeAgent المزدوجة، قم بتشغيل الأمر التالي من Azure Cloud Shell:
az iot hub module-twin show --device-id <edge_device_id> --module-id '$edgeAgent' --hub-name <iot_hub_name>
يقوم هذا الأمر إخراج كافة خصائص edgeAgent التي تم الإبلاغ عنها. فيما يلي بعض النصائح المفيدة التي تراقب حالة الجهاز:
- حالة وقت التشغيل
- وقت بدء وقت التشغيل
- وقت التشغيل الأخير للخروج
- عدد إعادة تشغيل وقت التشغيل
تحقق من حالة مدير أمان IoT Edge وسجلاته
مدير أمان IoT Edge مسؤول عن عمليات مثل تهيئة نظام IoT Edge عند بدء التشغيل وتوفير الأجهزة. إذا لم يبدأ تشغيل IoT Edge، فقد توفر سجلات إدارة الأمان معلومات مفيدة.
عرض حالة خدمات نظام IoT Edge:
sudo iotedge system status
عرض سجلات خدمات نظام IoT Edge:
sudo iotedge system logs -- -f
تمكين السجلات على مستوى التصحيح لعرض سجلات أكثر تفصيلا لخدمات نظام IoT Edge:
تمكين سجلات على مستوى التصحيح.
sudo iotedge system set-log-level debug sudo iotedge system restart
قم بالتبديل مرة أخرى إلى سجلات مستوى المعلومات الافتراضية بعد تصحيح الأخطاء.
sudo iotedge system set-log-level info sudo iotedge system restart
التحقق من سجلات الحاوية بحثا عن المشكلات
بمجرد تشغيل البرنامج الخفي لأمان IoT Edge، انظر إلى سجلات الحاويات للكشف عن المشكلات. ابدأ بالحاويات المنشورة، ثم انظر إلى الحاويات التي تشكل وقت تشغيل IoT Edge: edgeAgent وedgeHub. عادة ما توفر سجلات عامل IoT Edge معلومات حول دورة حياة كل حاوية. توفر سجلات مركز IoT Edge معلومات حول المراسلة والتوجيه.
يمكنك استرداد سجلات الحاوية من عدة أماكن:
على جهاز IoT Edge، قم بتشغيل الأمر التالي لعرض السجلات:
iotedge logs <container name>
في مدخل Microsoft Azure، استخدم أداة استكشاف الأخطاء وإصلاحها المضمنة. مراقبة أجهزة IoT Edge واستكشاف الأخطاء وإصلاحها من مدخل Microsoft Azure
استخدم الأسلوب المباشر UploadModuleLogs لتحميل سجلات وحدة نمطية إلى Azure Blob Storage.
تنظيف سجلات الحاوية
بشكل افتراضي، لا يقوم محرك حاوية Moby بتعيين حدود حجم سجل الحاوية. بمرور الوقت يمكن أن تؤدي السجلات الشاملة إلى ملء الجهاز بالسجلات ونفاد مساحة القرص. إذا كانت سجلات الحاوية الكبيرة تؤثر على أداء جهاز IoT Edge، فاستخدم الأمر التالي لفرض إزالة الحاوية مع سجلاتها ذات الصلة.
إذا كنت لا تزال تقوم باستكشاف الأخطاء وإصلاحها، فانتظر حتى بعد فحص سجلات الحاوية لاتخاذ هذه الخطوة.
تحذير
إذا قمت بفرض إزالة حاوية edgeHub أثناء وجود تراكم رسالة لم يتم تسليمه ولم يتم إعداد تخزين مضيف، فقدان الرسائل التي لم يتم تسليمها.
docker rm --force <container name>
بالنسبة لسيناريوهات صيانة السجلات والإنتاج المستمرة، قم بإعداد برنامج تشغيل التسجيل الافتراضي.
عرض الرسائل التي تمر عبر مركز IoT Edge
يمكنك عرض الرسائل التي تمر عبر مركز IoT Edge وجمع الرؤى من السجلات المطولة من حاويات وقت التشغيل. لتشغيل السجلات المطولة على هذه الحاويات، قم بتعيين RuntimeLogLevel
متغير البيئة في بيان النشر.
لعرض الرسائل التي تمر عبر مركز IoT Edge، قم بتعيين RuntimeLogLevel
متغير البيئة إلى debug
لوحدة edgeHub.
تحتوي كل من الوحدات النمطية edgeHub وedgeAgent على متغير بيئة سجل وقت التشغيل هذا، مع تعيين القيمة الافتراضية إلى info
. يمكن أن يأخذ متغير البيئة هذا القيم التالية:
- fatal
- error
- تحذير
- معلومات
- debug
- verbose
يمكنك أيضا التحقق من الرسائل التي يتم إرسالها بين IoT Hub وأجهزة IoT. عرض هذه الرسائل باستخدام ملحق Azure IoT Hub ل Visual Studio Code. لمزيد من المعلومات، راجع أداة مفيدة عند التطوير باستخدام Azure IoT.
إعادة تشغيل الحاويات
بعد التحقق من السجلات والرسائل للحصول على معلومات، يمكنك محاولة إعادة تشغيل الحاويات.
على جهاز IoT Edge، استخدم الأوامر التالية لإعادة تشغيل الوحدات النمطية:
iotedge restart <container name>
أعد تشغيل حاويات وقت تشغيل IoT Edge:
iotedge restart edgeAgent && iotedge restart edgeHub
يمكنك أيضاً إعادة تشغيل الوحدات النمطية عن بعد من مدخل Microsoft Azure. لمزيد من المعلومات، راجع مراقبة واستكشاف أخطاء أجهزة IoT Edge وإصلاحها من مدخل Microsoft Azure.
التحقق من جدار الحماية وقواعد تكوين المنفذ
يسمح Azure IoT Edge بالاتصال من خادم محلي إلى سحابة Azure باستخدام بروتوكولات IoT Hub المدعومة. لمزيد من المعلومات، راجع اختيار بروتوكول اتصال. لتحسين الأمان، يتم دائما تكوين قنوات الاتصال بين Azure IoT Edge وAzure IoT Hub لتكون صادرة. يستند هذا التكوين إلى نمط الاتصال المساعد للخدمات، والذي يقلل من سطح الهجوم لكي يقوم كيان ضار باستكشافه. الاتصال الوارد مطلوب فقط لسيناريوهات محددة حيث يحتاج Azure IoT Hub إلى دفع الرسائل إلى جهاز Azure IoT Edge. الرسائل من سحابة إلى جهاز محمية باستخدام قنوات TLS آمنة ويمكن تأمينها بشكل أكبر باستخدام شهادات X.509 ووحدات جهاز TPM. يحكم Azure IoT Edge Security Manager كيفية إنشاء هذا الاتصال، راجع IoT Edge Security Manager.
بينما يوفر IoT Edge تكوينا محسنا لتأمين وقت تشغيل Azure IoT Edge والوحدات النمطية المنشورة، فإنه لا يزال يعتمد على الجهاز الأساسي وتكوين الشبكة. ومن ثم، من الضروري ضمان إعداد قواعد الشبكة وجدار الحماية المناسبة للحافة الآمنة للاتصال السحابي. يمكن استخدام الجدول التالي كإرشادات عند قواعد جدار حماية التكوين للخوادم الأساسية حيث تتم استضافة وقت تشغيل Azure IoT Edge:
البروتوكول | المنفذ | الوارد | الصادر | الإرشاد |
---|---|---|---|---|
MQTT | 8883 | محظور (افتراضي) | محظور (افتراضي) |
|
AMQP | 5671 | محظور (افتراضي) | فتح (افتراضي) |
|
HTTPS | 443 | محظور (افتراضي) | فتح (افتراضي) |
|
الملاذ الأخير: إيقاف وإعادة إنشاء جميع الحاويات
في بعض الأحيان، قد يتطلب النظام تعديلا خاصا كبيرا للعمل مع قيود الشبكات أو نظام التشغيل الموجودة. على سبيل المثال، قد يتطلب النظام إعدادات مختلفة لتحميل قرص البيانات والوكيل. إذا جربت جميع الخطوات السابقة ولا تزال تحصل على فشل الحاوية، فقد لا تكون ذاكرة التخزين المؤقت لنظام docker أو إعدادات الشبكة المستمرة محدثة بأحدث إعادة تكوين. في هذه الحالة، الخيار الأخير هو استخدام docker prune
الحصول على بداية نظيفة من الصفر.
يوقف الأمر التالي نظام IoT Edge (وبالتالي جميع الحاويات)، ويستخدم الخيار "الكل" و"وحدة التخزين" لإزالة docker prune
جميع الحاويات ووحدات التخزين. راجع التحذير من أن الأمر يصدر وتأكيد عند y
الاستعداد.
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]
ابدأ تشغيل النظام مرة أخرى. لتكون آمنا، قم بتطبيق أي تكوين متبق محتمل وابدأ النظام بأمر واحد.
sudo iotedge config apply
انتظر بضع دقائق وتحقق مرة أخرى.
sudo iotedge list
الخطوات التالية
هل تعتقد أنك عثرت على خطأ في النظام الأساسي ل IoT Edge؟ أرسل مشكلة حتى نتمكن من الاستمرار في التحسين.
إذا كانت لديك المزيد من الأسئلة، فبادر بإنشاء طلب دعم للحصول على المساعدة.