تحليل بيانات تتبع الاستخدام لـ Azure Functions في Application Insights

تتكامل Azure Functions مع Application Insights لتمكينك من مراقبة تطبيقات الدوال بشكل أفضل. يجمع Application Insights بيانات تتبع الاستخدام عن بعد التي تم إنشاؤها بواسطة تطبيق الوظائف، بما في ذلك المعلومات التي يكتبها التطبيق إلى السجلات. عادةً ما يتم تمكين تكامل Application Insights عند إنشاء تطبيق الدالة. إذا لم يكن تطبيق وظيفتك يحتوي على مجموعة مفاتيح الأجهزة، فيجب عليك أولاً تمكين تكامل Application Insights.

بشكل افتراضي، يتم تخزين البيانات التي تم جمعها من تطبيق وظيفتك في Application Insights. في مدخل Microsoft Azure، توفر Application Insights مجموعة واسعة من التمثيلات المرئية لبيانات تتبع الاستخدام عن بُعد الخاصة بك. يمكنك التعمق في سجلات الأخطاء وأحداث الاستعلام والمقاييس. توفر هذه المقالة أمثلة أساسية حول كيفية عرض البيانات التي تم تجميعها والاستعلام عنها. لمعرفة المزيد حول استكشاف بيانات تطبيق الوظيفة في Application Insights، راجع ما هو Application Insights؟.

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

لمعرفة المزيد حول استبقاء البيانات وتكاليف التخزين المحتملة، راجع جمع البيانات والاحتفاظ بها وتخزينها في Application Insights.

عرض بيانات تتبع الاستخدام في علامة تبويب الشاشة

مع تمكين تكامل Application Insightsيمكنك عرض بيانات القياس عن بعد في علامة التبويب مراقبة.

  1. في صفحة تطبيق الوظيفة، حدد وظيفة تم تشغيلها مرة واحدة على الأقل بعد تكوين Application Insights. ثم حدد مراقبة من الجزء الأيسر. حدد تحديث بشكل دوري، حتى تظهر قائمة استدعاءات الدالة.

    Invocations list

    إشعار

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

  2. لمشاهدة سجلات استدعاء دالة معينة حدد الارتباط العمود التاريخ (UTC) هذا الاستدعاء. يظهر إخراج التسجيل لهذا الاستدعاء في صفحة جديدة.

    Invocation details

  3. اختر تشغيل في Application Insights لعرض مصدر الاستعلام الذي يسترد بيانات سجل Azure Monitor في سجل Azure. في حال كانت هذه هي المرة الأولى التي تستخدم فيها Azure Log Analytics في اشتراكك، يطلب منك تمكينه.

  4. بعد تمكين Log Analytics، يتم عرض الاستعلام التالي. يمكنك أن ترى أن نتائج الاستعلام تقتصر على آخر 30 يومًا (where timestamp > ago(30d))، ولا تظهر النتائج أكثر من 20 صفًا (take 20). في المقابل، قائمة تفاصيل الاستدعاء لوظيفتك هي لآخر 30 يومًا بدون حد.

    Application Insights Analytics invocation list

لمزيد من المعلومات، راجع الاستعلام عن بيانات التتبع عن بعد لاحقًا في هذه المقالة.

عرض بيانات تتبع الاستخدام في Application Insights

لفتح Application Insights من تطبيق دالة في مدخل Microsoft Azure:

  1. استعرض للوصول إلى تطبيق الوظائف في المدخل.

  2. حدد Application Insights ضمن الإعدادات في الصفحة اليسرى.

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

Open Application Insights from the function app Overview page

لمزيد من المعلومات حول Application Insights، راجع وثائق Application Insights. يعرض هذا القسم بعض الأمثلة على كيفية عرض البيانات في Application Insights. إذا كنت معتادا بالفعل على Application Insights، يمكنك الانتقال مباشرة إلى الأقسام حول كيفية تكوين بيانات القياس عن بعد وتخصيصها.

Application Insights Overview tab

يمكن أن تكون المجالات التالية في Application Insights مفيدة عند تقييم السلوك والأداء والأخطاء في وظائفك:

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

الاستعلام عن بيانات تتبع الاستخدام

يمنحك Application Insights Analyticsالوصول إلى جميع بيانات القياس عن بُعد في شكل جداول في قاعدة بيانات. يوفر Analytics لغة استعلام لاستخراج البيانات ومعالجتها وتصورها.

اختر سجلات لاستكشاف الأحداث المسجلة أو الاستعلام عنها.

Analytics example

فيما يلي مثال على استعلام يوضح توزيع الطلبات لكل عامل خلال آخر 30 دقيقة.

requests
| where timestamp > ago(30m) 
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart

تظهر الجداول المتوفرة في علامة التبويب مخطط على اليسار. يمكنك العثور على البيانات التي تم إنشاؤها بواسطة استدعاءات الدالة في الجداول التالية:

جدول ‏‏الوصف
traces السجلات التي تم إنشاؤها بواسطة وقت التشغيل وحدة تحكم مقياس و تتبعات من التعليمات البرمجية الدالة.
requests طلب واحد لكل استدعاء دالة.
الاستثناءات أي استثناءات طرحها وقت التشغيل.
customMetrics عدد الاستحضارات الناجحة والفاشلة، ومعدل النجاح، والمدة.
customEvents الأحداث التي يتم تعقبها بواسطة وقت التشغيل، على سبيل المثال: طلبات HTTP التي تقوم بتشغيل دالة.
عدادات الأداء معلومات حول أداء الملقمات التي تعمل على الدالات.

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

داخل كل جدول، توجد بعض البيانات الخاصة بالوظائف في حقل customDimensions. على سبيل المثال، يقوم الاستعلام التالي باسترداد كافة عمليات التتبع التي لها مستوى السجلError.

traces 
| where customDimensions.LogLevel == "Error"

يوفر وقت التشغيل الحقلين customDimensions.LogLevel و customDimensions.Category. يمكنك توفير حقول إضافية في السجلات التي تكتبها في التعليمات البرمجية الدالة. للحصول على مثال في C#، راجع التسجيل المنظم في دليل مطور مكتبة فئة .NET.

استدعاءات دالة الاستعلام

يتم تعيين معرف فريد لكل استدعاء دالة. InvocationId مضمن في البعد المخصص ويمكن استخدامه لربط جميع السجلات من تنفيذ دالة معينة.

traces
| project customDimensions["InvocationId"], message

ارتباط القياس عن بعد

يمكن ربط السجلات من وظائف مختلفة باستخدام operation_Id. استخدم الاستعلام التالي لإرجاع كافة السجلات لعملية منطقية معينة.

traces
| where operation_Id == '45fa5c4f8097239efe14a2388f8b4e29'
| project timestamp, customDimensions["InvocationId"], message
| order by timestamp

النسبة المئوية لأخذ العينات

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

union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType

سجلات وحدة تحكم مقياس الاستعلام

هذه الميزة في مرحلة المعاينة.

بعد تمكين كل من تسجيل وحدة التحكم بالمقياس وتكامل Application Insights، يمكنك استخدام البحث في سجل Application Insights للاستعلام عن سجلات وحدة التحكم في المقياس المنبعثة. يتم حفظ سجلات وحدة تحكم مقياس في traces المجموعة ضمن الفئة ScaleControllerLogs.

يمكن استخدام الاستعلام التالي للبحث عن كافة سجلات وحدة تحكم المقياس لتطبيق الدالة الحالي خلال الفترة الزمنية المحددة:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"

يتوسع الاستعلام التالي على الاستعلام السابق لإظهار كيفية الحصول على سجلات تشير إلى تغيير في المقياس:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
| where message == "Instance count changed"
| extend Reason = CustomDimensions.Reason
| extend PreviousInstanceCount = CustomDimensions.PreviousInstanceCount
| extend NewInstanceCount = CustomDimensions.CurrentInstanceCount

مقاييس خطة الاستهلاك الخاصة

عند التشغيل في خطة الاستهلاك، يتم قياس تكلفة تنفيذ وظيفة واحدة بالجيجابايت بالثواني. يتم حساب تكلفة التنفيذ من خلال الجمع بين استخدام الذاكرة ووقت التنفيذ. لمعرفة المزيد، راجع تقدير تكاليف خطة الاستهلاك.

استعلامات القياس عن بُعد التالية خاصة بالمقاييس التي تؤثر على تكلفة تشغيل الوظائف في خطة الاستهلاك.

تحديد استخدام الذاكرة

ضمن Monitoring، قم بتحديدLogs (Analytics)، ثم انسخ استعلام القياس عن بعد التالي والصقه في نافذة الاستعلام وحدد Run. يقوم هذا الاستعلام بإرجاع إجمالي استخدام الذاكرة في كل وقت يتم أخذ عينات منه.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

تبدو النتائج مثل المثال التالي:

الطابع الزمني [التوقيت العالمي المتفق عليه] الاسم قيمة
9/12/2019, 1:05:14.947 AM وحداتِ البايت الخاصة 209932288
9/12/2019, 1:06:14.994 AM وحداتِ البايت الخاصة 212189184
9/12/2019, 1:06:30.010 AM وحداتِ البايت الخاصة 231714816
9/12/2019, 1:07:15.040 AM وحداتِ البايت الخاصة 210591744
9/12/2019, 1:12:16.285 AM وحداتِ البايت الخاصة 216285184
9/12/2019, 1:12:31.376 AM وحداتِ البايت الخاصة 235806720

حدد المدة

يقوم جهاز مراقبة (Azure Monitor) بتتبع القياسات على مستوى الموارد، والتي بالنسبة للوظائف هي Function App. يقوم تكامل Application Insights بإصدار القياسات على أساس كل وظيفة. فيما يلي مثال لاستعلام تحليلات للحصول على متوسط ​​مدة الوظيفة:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
الاسم averageDurationMilliseconds
QueueTrigger AvgDurationMs 16.087
QueueTrigger MaxDurationMs 90.249
QueueTrigger MinDurationMs 8.522

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

تعرف على المزيد حول مراقبة Azure Functions: