استرداد السجلات من عمليات نشر IoT Edge
ينطبق على: IoT Edge 1.5
هام
IoT Edge 1.5 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"
}
يمكنك أيضا توجيه إخراج 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 أو Running Completed أو 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"
}
تحميل تشخيصات حزمة الدعم
استخدم الأسلوب المباشر 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 أو Running Completed أو 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
}
الحصول على حالة طلب التحميل
استخدم الأسلوب المباشر GetTaskStatus للاستعلام عن حالة طلب سجلات التحميل.
تستخدم correlationId
حمولة طلب GetTaskStatus طلب سجلات التحميل للحصول على حالة المهمة.
correlationId
يتم إرجاع استجابة لاستدعاء الأسلوب المباشر UploadModuleLogs.
يقبل هذا الأسلوب حمولة JSON مع المخطط التالي:
{
"schemaVersion": "1.0",
"correlationId": "<GUID>"
}
يرجع الطلب الناجح لتحميل السجلات "الحالة": 200 متبوعا بحمولة بنفس المخطط كاستجابة UploadModuleLogs :
{
"status": "string",
"message": "string",
"correlationId": "GUID"
}
Name | كتابة | الوصف |
---|---|---|
الحالة | سلسلة | واحد من NotStarted أو Running أو Completed Failed أو أو "تم الإلغاء" أو 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>"
}