استرداد السجلات من عمليات نشر IoT Edge

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

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

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

يتم التعامل مع أسماء هذه الأساليب المباشرة الحساسة لحالة الأحرف.

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

<{Log Level}> {Timestamp} {Message Text}

{Timestamp} يجب تنسيقه ك yyyy-MM-dd HH:mm:ss.fff zzz، ويجب {Log Level} أن يستخدم الجدول التالي، الذي يستمد مستويات الخطورة الخاصة به من التعليمات البرمجية للخطورة في معيار Syslog.

القيمة‬ الأهمية
0 الطوارئ
1 التنبيه
2 هام
3 خطأ
4 تحذير
5 إشعار
6 معلوماتي
7 تصحيح

تعمل فئة المسجل في IoT Edge كتنفيذ متعارف عليه.

استرداد سجلات الوحدة النمطية

استخدم الأسلوب المباشر GetModuleLogs لاسترداد سجلات وحدة IoT Edge.

تلميح

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

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

يقبل هذا الأسلوب حمولة JSON مع المخطط التالي:

    {
       "schemaVersion": "1.0",
       "items": [
          {
             "id": "regex string",
             "filter": {
                "tail": "int",
                "since": "string",
                "until": "string",
                "loglevel": "int",
                "regex": "regex string"
             }
          }
       ],
       "encoding": "gzip/none",
       "contentType": "json/text" 
    }
Name كتابة ‏‏الوصف
schemaVersion سلسلة تعيين إلى 1.0
العناصر مصفوفة JSON صفيف مع id ومجموعات filter .
المعرف سلسلة تعبير عادي يوفر اسم الوحدة النمطية. يمكن أن يتطابق مع وحدات متعددة على جهاز حافة. من المتوقع تنسيق .NET Regular Expressions . في حالة وجود عناصر متعددة يتطابق معرفها مع نفس الوحدة النمطية، يتم تطبيق خيارات التصفية للمعرف المطابق الأول فقط على تلك الوحدة النمطية.
filter قسم JSON عوامل تصفية السجل لتطبيقها على الوحدات النمطية المطابقة id للتعبير العادي في المجموعة.
ذيل integer عدد أسطر السجل في الماضي لاستردادها بدءا من الأحدث. اختياري.
منذ سلسلة إرجاع السجلات فقط منذ هذا الوقت، ك طابع زمني rfc3339 أو طابع زمني UNIX أو مدة (أيام (د) ساعات (ساعة) دقائق (m)). على سبيل المثال، يمكن تحديد مدة ليوم واحد و12 ساعة و30 دقيقة على أنها يوم واحد 12 ساعة و30 دقيقة أو 1d 12h 30m. إذا تم تحديد كل من tail و since ، يتم استرداد السجلات باستخدام since القيمة أولا. tail ثم يتم تطبيق القيمة على النتيجة، ويتم إرجاع النتيجة النهائية. اختياري.
حتى سلسلة إرجاع السجلات قبل الوقت المحدد فقط، كطوابع زمنية rfc3339 أو الطابع الزمني UNIX أو المدة (أيام (د) ساعات (ساعة) دقائق (m)). على سبيل المثال، يمكن تحديد مدة 90 دقيقة على أنها 90 دقيقة أو 90m. إذا تم تحديد كل من tail و since ، يتم استرداد السجلات باستخدام since القيمة أولا. tail ثم يتم تطبيق القيمة على النتيجة، ويتم إرجاع النتيجة النهائية. اختياري.
مستوى السجل integer تصفية خطوط السجل المساوية لمستوى السجل المحدد. يجب أن تتبع خطوط السجل تنسيق التسجيل الموصى به وتستخدم معيار مستوى خطورة Syslog. إذا كنت بحاجة إلى التصفية حسب قيم خطورة مستوى السجل المتعددة، ثم الاعتماد على مطابقة regex، شريطة أن تتبع الوحدة بعض التنسيق المتناسق عند تسجيل مستويات خطورة مختلفة. اختياري.
regex سلسلة تصفية خطوط السجل التي تحتوي على محتوى يتطابق مع التعبير العادي المحدد باستخدام تنسيق .NET Regular Expressions . اختياري.
الترميز سلسلة إما gzip أو none. القيمة الافتراضية هي none.
نوع المحتوى سلسلة إما json أو text. القيمة الافتراضية هي text.

إشعار

إذا تجاوز محتوى السجلات حد حجم الاستجابة للأساليب المباشرة، وهو حاليا 128 كيلوبايت، ترجع الاستجابة خطأ.

يرجع الاسترداد الناجح للسجلات "الحالة": 200 متبوعا بحمولة تحتوي على السجلات التي تم استردادها من الوحدة النمطية، تمت تصفيتها حسب الإعدادات التي تحددها في طلبك.

على سبيل المثال:

az iot hub invoke-module-method --method-name 'GetModuleLogs' -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
       "schemaVersion": "1.0",
       "items": [
          {
             "id": "edgeAgent",
             "filter": {
                "tail": 10
             }
          }
       ],
       "encoding": "none",
       "contentType": "text"
    }
'

في مدخل Microsoft Azure، استدع الأسلوب باسم GetModuleLogs الأسلوب وحمولة JSON التالية:

    {
       "schemaVersion": "1.0",
       "items": [
          {
             "id": "edgeAgent",
             "filter": {
                "tail": 10
             }
          }
       ],
       "encoding": "none",
       "contentType": "text"
    }

لقطة شاشة لكيفية استدعاء الأسلوب المباشر GetModuleLogs في مدخل Microsoft Azure.

يمكنك أيضا توجيه إخراج CLI إلى أدوات Linux المساعدة، مثل gzip، لمعالجة استجابة مضغوطة. على سبيل المثال:

az iot hub invoke-module-method \
  --method-name 'GetModuleLogs' \
  -n <hub name> \
  -d <device id> \
  -m '$edgeAgent' \
  --method-payload '{"contentType": "text","schemaVersion": "1.0","encoding": "gzip","items": [{"id": "edgeHub","filter": {"since": "2d","tail": 1000}}],}' \
  -o tsv --query 'payload[0].payloadBytes' \
  | base64 --decode \
  | gzip -d

تحميل سجلات الوحدة النمطية

استخدم الأسلوب المباشر UploadModuleLogs لإرسال السجلات المطلوبة إلى حاوية تخزين Azure Blob محددة.

إشعار

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

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

يقبل هذا الأسلوب حمولة JSON مشابهة ل GetModuleLogs، مع إضافة مفتاح "sasUrl":

    {
       "schemaVersion": "1.0",
       "sasUrl": "Full path to SAS URL",
       "items": [
          {
             "id": "regex string",
             "filter": {
                "tail": "int",
                "since": "string",
                "until": "string",
                "loglevel": "int",
                "regex": "regex string"
             }
          }
       ],
       "encoding": "gzip/none",
       "contentType": "json/text" 
    }
Name كتابة ‏‏الوصف
sasURL سلسلة (URI) عنوان URL لتوقيع الوصول المشترك مع حق الوصول للكتابة إلى حاوية Azure Blob Storage.

يرجع الطلب الناجح لتحميل السجلات "الحالة": 200 متبوعا بحمولة بالمخطط التالي:

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Name كتابة ‏‏الوصف
الحالة سلسلة واحد من NotStartedأو RunningCompletedأو Failedأو أو Unknown.
رسالة سلسلة رسالة إذا كانت خطأ، فسلسلة فارغة بخلاف ذلك.
correlationId سلسلة معرف للاستعلام عن حالة طلب التحميل.

على سبيل المثال:

يقوم استدعاء التالي بتحميل آخر 100 سطر سجل من جميع الوحدات النمطية بتنسيق JSON مضغوط:

az iot hub invoke-module-method --method-name UploadModuleLogs -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
        "schemaVersion": "1.0",
        "sasUrl": "<sasUrl>",
        "items": [
            {
                "id": ".*",
                "filter": {
                    "tail": 100
                }
            }
        ],
        "encoding": "gzip",
        "contentType": "json"
    }
'

يقوم الاستدعاء التالي بتحميل آخر 100 سطر سجل من edgeAgent وedgeHub مع آخر 1000 سطر سجل من وحدة tempSensor بتنسيق نصي غير مضغوط:

az iot hub invoke-module-method --method-name UploadModuleLogs -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
        "schemaVersion": "1.0",
        "sasUrl": "<sasUrl>",
        "items": [
            {
                "id": "edge",
                "filter": {
                    "tail": 100
                }
            },
            {
                "id": "tempSensor",
                "filter": {
                    "tail": 1000
                }
            }
        ],
        "encoding": "none",
        "contentType": "text"
    }
'

في مدخل Microsoft Azure، استدع الأسلوب باسم UploadModuleLogs الأسلوب وحمولة JSON التالية بعد ملء sasURL بمعلوماتك:

    {
       "schemaVersion": "1.0",
       "sasUrl": "<sasUrl>",
       "items": [
          {
             "id": "edgeAgent",
             "filter": {
                "tail": 10
             }
          }
       ],
       "encoding": "none",
       "contentType": "text"
    }

لقطة شاشة لكيفية استدعاء الأسلوب المباشر UploadModuleLogs في مدخل Microsoft Azure.

تحميل تشخيصات حزمة الدعم

استخدم الأسلوب المباشر UploadSupportBundle لتجميع وتحميل ملف مضغوط من سجلات وحدة IoT Edge إلى حاوية Azure Blob Storage المتوفرة. يقوم هذا الأسلوب المباشر بتشغيل iotedge support-bundle الأمر على جهاز IoT Edge للحصول على السجلات.

إشعار

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

يقبل هذا الأسلوب حمولة JSON مع المخطط التالي:

    {
        "schemaVersion": "1.0",
        "sasUrl": "Full path to SAS url",
        "since": "2d",
        "until": "1d",
        "edgeRuntimeOnly": false
    }
Name كتابة ‏‏الوصف
schemaVersion سلسلة تعيين إلى 1.0
sasURL سلسلة (URI) عنوان URL لتوقيع الوصول المشترك مع حق الوصول للكتابة إلى حاوية تخزين Azure Blob
منذ سلسلة إرجاع السجلات فقط منذ هذا الوقت، ك طابع زمني rfc3339 أو طابع زمني UNIX أو مدة (أيام (د) ساعات (ساعة) دقائق (m)). على سبيل المثال، يمكن تحديد مدة ليوم واحد و12 ساعة و30 دقيقة على أنها يوم واحد 12 ساعة و30 دقيقة أو 1d 12h 30m. اختياري.
حتى سلسلة إرجاع السجلات قبل الوقت المحدد فقط، كطوابع زمنية rfc3339 أو الطابع الزمني UNIX أو المدة (أيام (د) ساعات (ساعة) دقائق (m)). على سبيل المثال، يمكن تحديد مدة 90 دقيقة على أنها 90 دقيقة أو 90m. اختياري.
edgeRuntimeOnly boolean إذا كان صحيحا، فسترجع السجلات فقط من Edge Agent و Edge Hub و Edge Security Daemon. الافتراضي: False. اختياري.

هام

قد تحتوي مجموعة دعم IoT Edge على معلومات تعريف شخصية.

يرجع الطلب الناجح لتحميل السجلات "الحالة": 200 متبوعا بحمولة بنفس المخطط كاستجابة UploadModuleLogs :

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Name كتابة ‏‏الوصف
الحالة سلسلة واحد من NotStartedأو RunningCompletedأو Failedأو أو Unknown.
رسالة سلسلة رسالة إذا كانت خطأ، فسلسلة فارغة بخلاف ذلك.
correlationId سلسلة معرف للاستعلام عن حالة طلب التحميل.

على سبيل المثال:

az iot hub invoke-module-method --method-name 'UploadSupportBundle' -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
        "schemaVersion": "1.0",
        "sasUrl": "Full path to SAS url",
        "since": "2d",
        "until": "1d",
        "edgeRuntimeOnly": false
    }
'

في مدخل Microsoft Azure، استدع الأسلوب باسم UploadSupportBundle الأسلوب وحمولة JSON التالية بعد ملء sasURL بمعلوماتك:

    {
        "schemaVersion": "1.0",
        "sasUrl": "Full path to SAS url",
        "since": "2d",
        "until": "1d",
        "edgeRuntimeOnly": false
    }

لقطة شاشة توضح كيفية استدعاء الأسلوب المباشر UploadSupportBundle في مدخل Microsoft Azure.

الحصول على حالة طلب التحميل

استخدم الأسلوب المباشر GetTaskStatus للاستعلام عن حالة طلب سجلات التحميل. تستخدم correlationId حمولة طلب GetTaskStatus طلب سجلات التحميل للحصول على حالة المهمة. correlationId يتم إرجاع استجابة لاستدعاء الأسلوب المباشر UploadModuleLogs.

يقبل هذا الأسلوب حمولة JSON مع المخطط التالي:

    {
      "schemaVersion": "1.0",
      "correlationId": "<GUID>"
    }

يرجع الطلب الناجح لتحميل السجلات "الحالة": 200 متبوعا بحمولة بنفس المخطط كاستجابة UploadModuleLogs :

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Name كتابة ‏‏الوصف
الحالة سلسلة واحد من NotStartedأو Runningأو CompletedFailedأو أو "تم الإلغاء" أو Unknown.
رسالة سلسلة رسالة إذا كانت خطأ، فسلسلة فارغة بخلاف ذلك.
correlationId سلسلة معرف للاستعلام عن حالة طلب التحميل.

على سبيل المثال:

az iot hub invoke-module-method --method-name 'GetTaskStatus' -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
      "schemaVersion": "1.0",
      "correlationId": "<GUID>"
    }
'

في مدخل Microsoft Azure، استدع الأسلوب باسم GetTaskStatus الأسلوب وحمولة JSON التالية بعد ملء GUID بمعلوماتك:

    {
      "schemaVersion": "1.0",
      "correlationId": "<GUID>"
    }

لقطة شاشة توضح كيفية استدعاء الأسلوب المباشر GetTaskStatus في مدخل Microsoft Azure.

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

خصائص عامل IoT Edge وتوائم وحدة مركز IoT Edge