مراقبة توائم الوحدة

ينطبق على: علامة اختيار IoT Edge 1.5 IoT Edge 1.5 علامة اختيار IoT Edge 1.4 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 :

  1. إنشاء مثيل ModuleClient باستخدام الأسلوب CreateFromEnvironmentAysnc.

  2. احصل على مجموعة من خصائص الوحدة النمطية المزدوجة باستخدام أسلوب GetTwinAsync .

  3. إنشاء وحدة استماع (تمرير رد اتصال) لالتقاط التغييرات على الخصائص المطلوبة باستخدام الأسلوب SetDesiredPropertyUpdateCallbackAsync .

  4. في أسلوب رد الاتصال، قم بتحديث الخصائص التي تم الإبلاغ عنها في الوحدة النمطية المزدوجة باستخدام أسلوب UpdateReportedPropertiesAsync ، مع تمرير TwinCollection لقيم الخاصية التي تريد تعيينها.

الوصول إلى الوحدة النمطية المزدوجة

يمكنك مراجعة JSON لتوائم الوحدة النمطية في Azure IoT Hub، وفي Visual Studio Code، ومع Azure CLI.

المراقبة في Azure IoT Hub

لعرض JSON للوحدة النمطية المزدوجة:

  1. سجل الدخول إلى مدخل Microsoft Azure والانتقال إلى IoT hub الخاص بك.

  2. حدد الأجهزة ضمن قائمة إدارة الأجهزة.

  3. حدد معرف الجهاز لجهاز IoT Edge مع الوحدات النمطية التي تريد مراقبتها.

  4. حدد اسم الوحدة النمطية من علامة التبويب Modules ثم حدد Module Identity Twin من شريط القوائم العلوي.

    لقطة شاشة توضح كيفية تحديد وحدة نمطية مزدوجة لعرضها في مدخل Microsoft Azure.

إذا رأيت الرسالة "هوية الوحدة النمطية غير موجودة لهذه الوحدة النمطية"، يشير هذا الخطأ إلى أن الحل الخلفي لم يعد متوفرا أنشأ الهوية في الأصل.

مراقبة توائم الوحدة النمطية في Visual Studio Code

لمراجعة وتحرير وحدة نمطية مزدوجة:

  1. إذا لم يكن مثبتا بالفعل، فقم بتثبيت ملحقات Azure IoT Edge وAzure IoT Hub . أدوات Azure IoT Edge لملحق Visual Studio Code في وضع الصيانة.

  2. في المستكشف، قم بتوسيع Azure IoT Hub، ثم قم بتوسيع الجهاز بالوحدة النمطية التي تريد مراقبتها.

  3. انقر بزر الماوس الأيمن فوق الوحدة النمطية وحدد Edit Module Twin. يتم تنزيل ملف مؤقت من الوحدة النمطية المزدوجة على الكمبيوتر الخاص بك وعرضه في Visual Studio Code.

    لقطة شاشة توضح كيفية الحصول على وحدة نمطية مزدوجة للتحرير في Visual Studio Code.

إذا قمت بإجراء تغييرات، فحدد تحديث الوحدة النمطية المزدوجة أعلى التعليمات البرمجية في المحرر لحفظ التغييرات على مركز IoT الخاص بك.

لقطة شاشة توضح كيفية تحديث وحدة نمطية مزدوجة في Visual Studio Code.

مراقبة توائم الوحدة النمطية في 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 باستخدام أساليب مباشرة مضمنة.