مراقبة توائم الوحدة
ينطبق على: 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 Hub من مراقبة الاتصال وصحة عمليات نشر IoT Edge. تخزن الوحدة المزدوجة معلومات مفيدة في مركز IoT الخاص بك حول أداء الوحدات النمطية قيد التشغيل. يحتفظ كل من عامل IoT Edge ووحدات وقت تشغيل مركز IoT Edge بتوائم الوحدة النمطية الخاصة بهم، و$edgeHub
، $edgeAgent
على التوالي:
$edgeAgent
يحتوي على بيانات الصحة والاتصال حول كل من عامل IoT Edge ووحدات وقت تشغيل مركز IoT Edge والوحدات النمطية المخصصة. وكيل IoT Edge مسؤول عن نشر الوحدات النمطية ومراقبتها والإبلاغ عن حالة الاتصال بمركز Azure IoT.$edgeHub
يحتوي على بيانات حول الاتصالات بين مركز IoT Edge الذي يعمل على جهاز ومركز Azure IoT. يتضمن ذلك معالجة الرسائل الواردة من أجهزة انتقال البيانات من الخادم. مركز IoT Edge مسؤول عن معالجة الاتصالات بين Azure IoT Hub وأجهزة ووحدات IoT Edge.
يتم تنظيم البيانات في بيانات التعريف والعلامات، جنبا إلى جنب مع مجموعات الخصائص المطلوبة والمبلغ عنها في بنيات JSON للوحدة النمطية المزدوجة. يتم نسخ الخصائص المطلوبة التي حددتها في ملف deployment.json إلى الوحدة النمطية المزدوجة. يقوم كل من عامل IoT Edge ومركز IoT Edge بتحديث الخصائص المبلغ عنها للوحدات النمطية الخاصة بهم.
وبالمثل، يتم نسخ الخصائص المطلوبة المحددة للوحدات النمطية المخصصة في ملف deployment.json إلى الوحدة النمطية المزدوجة الخاصة به، ولكن الحل الخاص بك مسؤول عن توفير قيم الخصائص التي تم الإبلاغ عنها.
توضح هذه المقالة كيفية مراجعة الوحدة المزدوجة في مدخل Microsoft Azure وAzure CLI وفي Visual Studio Code. للحصول على معلومات حول مراقبة كيفية تلقي أجهزتك عمليات التوزيع، راجع مراقبة عمليات توزيع IoT Edge. للحصول على نظرة عامة حول مفهوم الوحدة المزدوجة، راجع فهم واستخدام توائم الوحدة النمطية في IoT Hub.
تلميح
قد تكون الخصائص المبلغ عنها لوحدة وقت التشغيل قديمة إذا تم قطع اتصال جهاز IoT Edge من مركز IoT الخاص به. يمكنك اختبار اتصال الوحدة النمطية $edgeAgent
لتحديد ما إذا كان الاتصال قد فقد.
مراقبة توائم وحدة وقت التشغيل
لاستكشاف مشكلات اتصال النشر وإصلاحها، راجع عامل IoT Edge وتوائم وحدة وقت تشغيل مركز IoT Edge ثم انتقل لأسفل إلى وحدات نمطية أخرى.
مراقبة الوحدة النمطية المزدوجة لعامل IoT Edge
يظهر JSON التالي الوحدة المزدوجة $edgeAgent
في Visual Studio Code مع طي معظم أقسام JSON.
{
"deviceId": "Windows109",
"moduleId": "$edgeAgent",
"etag": "AAAAAAAAAAU=",
"deviceEtag": "NzgwNjA1MDUz",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00Z",
"connectionState": "Disconnected",
"lastActivityTime": "0001-01-01T00:00:00Z",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 53,
"properties": {
"desired": { "···" },
"reported": {
"schemaVersion": "1.0",
"version": { "···" },
"lastDesiredStatus": { "···" },
"runtime": { "···" },
"systemModules": {
"edgeAgent": { "···" },
"edgeHub": { "···" }
},
"lastDesiredVersion": 5,
"modules": {
"SimulatedTemperatureSensor": { "···" }
},
"$metadata": { "···" },
"$version": 48
}
}
}
يمكن وصف JSON في الأقسام التالية، بدءا من الأعلى:
- بيانات التعريف - تحتوي على بيانات الاتصال. ومن المثير للاهتمام أن حالة الاتصال لعامل IoT Edge دائما في حالة قطع الاتصال:
"connectionState": "Disconnected"
. السبب في حالة الاتصال يتعلق برسائل من جهاز إلى سحابة (D2C) ولا يرسل عامل IoT Edge رسائل D2C. - الخصائص - يحتوي على
desired
الأقسام الفرعية وreported
. - Properties.desired - (المعروضة مطوية) قيم الخصائص المتوقعة التي تم تعيينها بواسطة عامل التشغيل في ملف deployment.json.
- Properties.reported - أحدث قيم الخصائص التي أبلغ عنها عامل IoT Edge.
يحتوي كلا المقطعين و properties.reported
على properties.desired
بنية مماثلة ويحتويان على بيانات تعريف إضافية لمعلومات المخطط والإصدار ووقت التشغيل. يتم modules
تضمين أيضا القسم لأي وحدات نمطية مخصصة (مثل SimulatedTemperatureSensor
)، والمقطع systemModules
الخاص $edgeAgent
بوحدات $edgeHub
وقت التشغيل و.
من خلال مقارنة قيم الخصائص المبلغ عنها بالقيم المطلوبة، يمكنك تحديد التناقضات وتحديد حالات قطع الاتصال التي يمكن أن تساعدك على استكشاف المشكلات وإصلاحها. عند إجراء هذه المقارنات، تحقق من $lastUpdated
القيمة المبلغ عنها في metadata
القسم للخاصية التي تحقق فيها.
الخصائص التالية مهمة لفحصها لاستكشاف الأخطاء وإصلاحها:
exitcode - تشير أي قيمة أخرى غير الصفر إلى أن الوحدة النمطية توقفت مع فشل. ومع ذلك، يتم استخدام رموز الخطأ 137 أو 143 إذا تم تعيين وحدة نمطية عن قصد إلى حالة متوقفة.
lastStartTimeUtc - يعرض التاريخ والوقت الذي تم فيه بدء تشغيل الحاوية آخر مرة. هذه القيمة هي 0001-01-01T00:00:00Z إذا لم يتم بدء تشغيل الحاوية.
lastExitTimeUtc - يعرض التاريخ والوقت الذي انتهت فيه الحاوية آخر مرة. هذه القيمة هي 0001-01-01T00:00:00Z إذا كانت الحاوية قيد التشغيل ولم يتم إيقافها أبدا.
runtimeStatus - يمكن أن تكون إحدى القيم التالية:
قيمة الوصف غير معروف الحالة الافتراضية حتى يتم إنشاء النشر. التراجع من المقرر أن تبدأ الوحدة النمطية ولكنها لا تعمل حاليا. هذه القيمة مفيدة لوحدة نمطية تخضع لتغييرات الحالة في إعادة التشغيل. عندما تنتظر الوحدة النمطية الفاشلة إعادة التشغيل أثناء فترة التهدئة، ستكون الوحدة النمطية في حالة تراجع. تشغيل يشير إلى أن الوحدة النمطية قيد التشغيل حاليا. غير صحي يشير إلى فشل فحص فحص السلامة أو انتهاء مهلته. موقوف يشير إلى أنه تم إنهاء الوحدة النمطية بنجاح (مع رمز خروج صفري). فشل يشير إلى أن الوحدة النمطية قد تم إنهاءها باستخدام رمز إنهاء فشل (بدون صفر). يمكن للوحدة النمطية الانتقال مرة أخرى إلى التراجع من هذه الحالة اعتمادا على نهج إعادة التشغيل الساري. يمكن أن تشير هذه الحالة إلى أن الوحدة النمطية واجهت خطأ غير قابل للاسترداد. يحدث الفشل عندما لا يمكن لعامل مراقبة Microsoft (MMA) إعادة تنشيط الوحدة النمطية، مما يتطلب نشرا جديدا.
راجع خصائص EdgeAgent التي تم الإبلاغ عنها للحصول على التفاصيل.
مراقبة وحدة مركز IoT Edge المزدوجة
يظهر JSON التالي الوحدة المزدوجة $edgeHub
في Visual Studio Code مع طي معظم أقسام JSON.
{
"deviceId": "Windows109",
"moduleId": "$edgeHub",
"etag": "AAAAAAAAAAU=",
"deviceEtag": "NzgwNjA1MDU2",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00Z",
"connectionState": "Connected",
"lastActivityTime": "0001-01-01T00:00:00Z",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 102,
"properties": {
"desired": { "···" },
"reported": {
"schemaVersion": "1.0",
"version": { "···" },
"lastDesiredVersion": 5,
"lastDesiredStatus": { "···" },
"clients": {
"Windows109/SimulatedTemperatureSensor": {
"status": "Disconnected",
"lastConnectedTimeUtc": "2020-04-08T21:42:42.1743956Z",
"lastDisconnectedTimeUtc": "2020-04-09T07:02:42.1398325Z"
}
},
"$metadata": { "···" },
"$version": 97
}
}
}
يمكن وصف JSON في الأقسام التالية، بدءا من الأعلى:
بيانات التعريف - تحتوي على بيانات الاتصال.
الخصائص - يحتوي على
desired
الأقسام الفرعية وreported
.Properties.desired - (المعروضة مطوية) قيم الخصائص المتوقعة التي تم تعيينها بواسطة عامل التشغيل في ملف deployment.json.
Properties.reported - أحدث قيم الخصائص التي تم الإبلاغ عنها بواسطة مركز IoT Edge.
إذا كنت تواجه مشكلات في أجهزة انتقال البيانات من الخادم، فإن فحص هذه البيانات سيكون مكانا جيدا للبدء.
مراقبة توائم الوحدة النمطية المخصصة
يتم الاحتفاظ بالمعلومات حول اتصال الوحدات النمطية المخصصة في الوحدة النمطية المزدوجة لعامل IoT Edge. يتم استخدام الوحدة المزدوجة للوحدة النمطية المخصصة بشكل أساسي للحفاظ على البيانات للحل الخاص بك. تنعكس الخصائص المطلوبة التي حددتها في ملف deployment.json في الوحدة النمطية المزدوجة، ويمكن لوحدتك تحديث قيم الخصائص المبلغ عنها حسب الحاجة.
يمكنك استخدام لغة البرمجة المفضلة لديك مع Azure IoT Hub Device SDKs لتحديث قيم الخصائص المبلغ عنها في الوحدة المزدوجة، استنادا إلى التعليمات البرمجية لتطبيق الوحدة النمطية. يستخدم الإجراء التالي Azure SDK ل .NET للقيام بذلك، باستخدام التعليمات البرمجية من الوحدة النمطية SimulatedTemperatureSensor :
إنشاء مثيل ModuleClient باستخدام الأسلوب CreateFromEnvironmentAysnc.
احصل على مجموعة من خصائص الوحدة النمطية المزدوجة باستخدام أسلوب GetTwinAsync .
إنشاء وحدة استماع (تمرير رد اتصال) لالتقاط التغييرات على الخصائص المطلوبة باستخدام الأسلوب SetDesiredPropertyUpdateCallbackAsync .
في أسلوب رد الاتصال، قم بتحديث الخصائص التي تم الإبلاغ عنها في الوحدة النمطية المزدوجة باستخدام أسلوب UpdateReportedPropertiesAsync ، مع تمرير TwinCollection لقيم الخاصية التي تريد تعيينها.
الوصول إلى الوحدة النمطية المزدوجة
يمكنك مراجعة JSON لتوائم الوحدة النمطية في Azure IoT Hub، وفي Visual Studio Code، ومع Azure CLI.
المراقبة في Azure IoT Hub
لعرض JSON للوحدة النمطية المزدوجة:
سجل الدخول إلى مدخل Microsoft Azure والانتقال إلى IoT hub الخاص بك.
حدد الأجهزة ضمن قائمة إدارة الأجهزة.
حدد معرف الجهاز لجهاز IoT Edge مع الوحدات النمطية التي تريد مراقبتها.
حدد اسم الوحدة النمطية من علامة التبويب Modules ثم حدد Module Identity Twin من شريط القوائم العلوي.
إذا رأيت الرسالة "هوية الوحدة النمطية غير موجودة لهذه الوحدة النمطية"، يشير هذا الخطأ إلى أن الحل الخلفي لم يعد متوفرا أنشأ الهوية في الأصل.
مراقبة توائم الوحدة النمطية في Visual Studio Code
لمراجعة وتحرير وحدة نمطية مزدوجة:
إذا لم يكن مثبتا بالفعل، فقم بتثبيت ملحقات Azure IoT Edge وAzure IoT Hub . أدوات Azure IoT Edge لملحق Visual Studio Code في وضع الصيانة.
في المستكشف، قم بتوسيع Azure IoT Hub، ثم قم بتوسيع الجهاز بالوحدة النمطية التي تريد مراقبتها.
انقر بزر الماوس الأيمن فوق الوحدة النمطية وحدد Edit Module Twin. يتم تنزيل ملف مؤقت من الوحدة النمطية المزدوجة على الكمبيوتر الخاص بك وعرضه في Visual Studio Code.
إذا قمت بإجراء تغييرات، فحدد تحديث الوحدة النمطية المزدوجة أعلى التعليمات البرمجية في المحرر لحفظ التغييرات على مركز IoT الخاص بك.
مراقبة توائم الوحدة النمطية في Azure CLI
لمعرفة ما إذا كان IoT Edge قيد التشغيل، استخدم az iot hub invoke-module-method ل ping عامل IoT Edge.
توفر بنية az iot hub module-twin هذه الأوامر:
- az iot hub module-twin show - Show a module twin definition.
- az iot hub module-twin update - تحديث تعريف الوحدة النمطية المزدوجة.
- az iot hub module-twin replace - استبدال تعريف الوحدة النمطية المزدوجة ب JSON الهدف.
تلميح
لاستهداف وحدات وقت التشغيل باستخدام أوامر CLI، قد تحتاج إلى إلغاء $
الحرف في معرف الوحدة النمطية. على سبيل المثال:
az iot hub module-twin show -m '$edgeAgent' -n <hub name> -d <device name>
أو:
az iot hub module-twin show -m \$edgeAgent -n <hub name> -d <device name>
الخطوات التالية
تعرف على كيفية التواصل مع EdgeAgent باستخدام أساليب مباشرة مضمنة.