كيفية تصحيح الدالات المعرفة من قبل المستخدم في Azure Digital Twins

هام

تم إصدار إصدار جديد من خدمة Azure Digital Twins. في ضوء القدرات الموسعة للخدمة الجديدة، تم إيقاف خدمة Azure Digital Twins الأصلية (الموضحة في مجموعة الوثائق هذه).

لعرض وثائق الخدمة الجديدة، قم بزيارة وثائق Azure Digital Twins النشطة.

تلخص هذه المقالة كيفية تشخيص الدالات المعرفة من قبل المستخدم وتصحيحها في Azure Digital Twins. بعد ذلك ، يحدد بعض السيناريوهات الأكثر شيوعا التي تم العثور عليها عند تصحيحها.

تلميح

اقرأ كيفية تكوين المراقبة والتسجيل لمعرفة المزيد حول إعداد أدوات تصحيح الأخطاء في Azure Digital Twins باستخدام سجلات النشاط وسجلات التشخيص وشاشة Azure.

مشكلات تصحيح الأخطاء

تتيح لك معرفة كيفية تشخيص المشكلات داخل Azure Digital Twins تحليل المشكلات بشكل فعال وتحديد أسبابها وتوفير الحلول المناسبة لها.

يتم توفير مجموعة متنوعة من أدوات التسجيل والتحليلات والتشخيص لتحقيق هذه الغاية.

تمكين تسجيل الدخول للمثيل الخاص بك

يدعم Azure Digital Twins عمليات تسجيل الدخول والمراقبة والتحليلات القوية. يمكن لمطوري الحلول استخدام سجلات Azure Monitor وسجلات التشخيص وسجلات الأنشطة والخدمات الأخرى لدعم احتياجات المراقبة المعقدة لتطبيق إنترنت الأشياء. يمكن دمج خيارات التسجيل للاستعلام عن السجلات أو عرضها عبر العديد من الخدمات وتوفير تغطية تسجيل دقيقة للعديد من الخدمات.

بمجرد تكوينها، ستتمكن من تحديد جميع فئات السجلات والمقاييس واستخدام مساحات عمل تحليلات سجل Azure Monitor القوية لدعم جهود تصحيح الأخطاء.

القياس عن بعد لمستشعر التتبع

لتتبع القياس عن بعد للمستشعر، تحقق من تمكين إعدادات التشخيص لمثيل Azure Digital Twins. بعد ذلك ، تأكد من تحديد جميع فئات السجل المطلوبة. وأخيرا، تأكد من إرسال السجلات المطلوبة إلى سجلات Azure Monitor.

لمطابقة رسالة قياس عن بعد للمستشعر مع سجلاتها المعنية، يمكنك تحديد معرف ارتباط على بيانات الحدث التي يتم إرسالها. للقيام بذلك، قم بتعيين x-ms-client-request-id الخاصية إلى GUID.

بعد إرسال القياس عن بعد، افتح تحليلات سجل Azure Monitor للاستعلام عن السجلات باستخدام معرف الارتباط المعين:

AzureDiagnostics
| where CorrelationId == 'YOUR_CORRELATION_IDENTIFIER'
قيمة الاستعلام استبدال بـ
YOUR_CORRELATION_IDENTIFIER معرف الارتباط الذي تم تحديده في بيانات الحدث

لقراءة كافة استعلام سجلات القياس عن بعد الأخير:

AzureDiagnostics
| order by CorrelationId desc

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

AzureDiagnostics
| where Category == 'UserDefinedFunction'

لمزيد من المعلومات حول عمليات الاستعلام الفعالة، اقرأ بدء استخدام الاستعلامات.

تحديد المشكلات الشائعة

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

في الأمثلة أدناه ، YOUR_MANAGEMENT_API_URL يشير إلى عنوان URI لواجهات برمجة تطبيقات Digital Twins:

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
الاسم استبدال بـ
YOUR_INSTANCE_NAME اسم مثيل Azure Digital Twins الخاص بك
YOUR_LOCATION المنطقة التي تتم استضافة المثيل عليها

التحقق مما إذا تم إنشاء تعيين دور

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

تحقق مما إذا كان تعيين دور موجودا للوظيفة المعرفة من قبل المستخدم من خلال واجهة برمجة تطبيقات الإدارة:

GET YOUR_MANAGEMENT_API_URL/roleassignments?path=/&traverse=Down&objectId=YOUR_USER_DEFINED_FUNCTION_ID
قيمة المعلمة استبدال بـ
YOUR_USER_DEFINED_FUNCTION_ID معرف الدالة المعرفة من قبل المستخدم لاسترداد تعيينات الأدوار ل

تعرف على كيفية إنشاء تعيين دور للدالة المعرفة من قبل المستخدم، في حالة عدم وجود تعيينات دور.

تحقق مما إذا كان المطابق يعمل مع القياس عن بعد لمستشعر

من خلال المكالمة التالية مقابل واجهة برمجة تطبيقات إدارة مثيلات Azure Digital Twins، يمكنك تحديد ما إذا كان مطابق معين ينطبق على المستشعر المحدد.

GET YOUR_MANAGEMENT_API_URL/matchers/YOUR_MATCHER_IDENTIFIER/evaluate/YOUR_SENSOR_IDENTIFIER?enableLogging=true
المعلمة استبدال بـ
YOUR_MATCHER_IDENTIFIER معرف المطابقة التي ترغب في تقييمها
YOUR_SENSOR_IDENTIFIER معرف المستشعر الذي ترغب في تقييمه

الاستجابة:

{
    "success": true,
    "logs": [
        "$.dataType: \"Motion\" Equals \"Motion\" => True"
    ]
}

التحقق مما يشغله المستشعر

باستخدام الاستدعاء التالي مقابل واجهات برمجة تطبيقات Azure Digital Twins Management، يمكنك تحديد معرفات الوظائف المعرفة من قبل المستخدم والتي يتم تشغيلها بواسطة القياس عن بعد الوارد للمستشعر المحدد:

GET YOUR_MANAGEMENT_API_URL/sensors/YOUR_SENSOR_IDENTIFIER/matchers?includes=UserDefinedFunctions
المعلمة استبدال بـ
YOUR_SENSOR_IDENTIFIER معرف المستشعر لإرسال القياس عن بعد

الاستجابة:

[
    {
        "id": "48a64768-797e-4832-86dd-de625f5f3fd9",
        "name": "MotionMatcher",
        "spaceId": "2117b3e1-b6ce-42c1-9b97-0158bef59eb7",
        "conditions": [
            {
                "id": "024a067a-414f-415b-8424-7df61392541e",
                "target": "Sensor",
                "path": "$.dataType",
                "value": "\"Motion\"",
                "comparison": "Equals"
            }
        ],
        "userDefinedFunctions": [
            {
                "id": "373d03c5-d567-4e24-a7dc-f993460120fc",
                "spaceId": "2117b3e1-b6ce-42c1-9b97-0158bef59eb7",
                "name": "Motion User-Defined Function",
                "disabled": false
            }
        ]
    }
]

مشكلة في تلقي الإشعارات

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

خطأ مثل:

var customNotification = {
    Message: 'Custom notification that will not work'
};

sendNotification(telemetry.SensorId, "Space", JSON.stringify(customNotification));

ينشأ هذا السيناريو لأن المعرف المستخدم يشير إلى مستشعر بينما نوع كائن الطبولوجيا المحدد هو Space.

صحيح مثل:

var customNotification = {
    Message: 'Custom notification that will work'
};

sendNotification(telemetry.SensorId, "Sensor", JSON.stringify(customNotification));

أسهل طريقة لعدم الوقوع في هذه المشكلة هي استخدام الطريقة الموجودة Notify على كائن بيانات التعريف.

مثال:

function process(telemetry, executionContext) {
    var sensorMetadata = getSensorMetadata(telemetry.SensorId);

    var customNotification = {
        Message: 'Custom notification'
    };

    // Short-hand for above methods where object type is known from metadata.
    sensorMetadata.Notify(JSON.stringify(customNotification));
}

الاستثناءات التشخيصية الشائعة

إذا قمت بتمكين إعدادات التشخيص، فقد تواجه هذه الاستثناءات الشائعة:

  1. الاختناق: إذا تجاوزت الدالة المعرفة من قبل المستخدم حدود معدل التنفيذ الموضحة في مقالة حدود الخدمة ، خنقها. لا يتم تنفيذ أي عمليات أخرى بنجاح حتى تنتهي صلاحية حدود الاختناق.

  2. لم يتم العثور على البيانات: إذا حاولت الدالة المعرفة من قبل المستخدم الوصول إلى بيانات التعريف غير الموجودة، تفشل العملية.

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

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