كيفية تكوين المراقبة لـ Azure Functions

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

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

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

إشعار

يمكنك استخدام إعدادات التطبيق المكونة خصيصا لتمثيل إعدادات معينة في ملف host.json لبيئة معينة. يتيح لك القيام بذلك تغيير إعدادات host.json بشكل فعال دون الحاجة إلى إعادة نشر ملف host.json في مشروعك. لمزيد من المعلومات، يُرجى الرجوع إلى تجاوز قيم host.json.

سجلات التطبيقات المخصصة

بشكل افتراضي، يتم إرسال سجلات التطبيق المخصصة التي تكتبها إلى مضيف الوظائف، والذي يرسلها بعد ذلك إلى Application Insights ضمن فئة Worker. تسمح لك بعض مكدسات اللغة بإرسال السجلات مباشرة إلى Application Insights، ما يمنحك التحكم الكامل في كيفية إرسال السجلات التي تكتبها. في هذه الحالة، يتغير مسار التسجيل من worker -> Functions host -> Application Insights إلى worker -> Application Insights.

يلخص الجدول التالي خيارات التكوين المتوفرة لكل مكدس:

مكدس اللغة مكان تكوين السجلات المخصصة
.NET (نموذج قيد المعالجة) host.json
.NET (نموذج معزول) الافتراضي (إرسال سجلات مخصصة إلى مضيف الوظائف): host.json
لإرسال السجلات مباشرة إلى Application Insights، راجع: تكوين Application Insights في HostBuilder
Node.JS host.json
Python host.json
Java الافتراضي (إرسال سجلات مخصصة إلى مضيف الوظائف): host.json
لإرسال السجلات مباشرة إلى Application Insights، راجع: تكوين وكيل Application Insights Java
PowerShell host.json

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

تكوين الفئات

يحتوي مسجّل Azure Functions على فئة لكل سجل. تشير الفئة إلى أي جزء من التعليمة البرمجية لوقت التشغيل أو التعليمة البرمجية للدالة التي استُخدمت لكتابة السجل. تختلف الفئات بالنسبة للإصدار 1.x والإصدارات الأعلى.

يتم تعيين أسماء الفئات بشكل مختلف في Functions مقارنة أطر عمل .NET الأخرى. على سبيل المثال، عند استخدام ILogger<T> في ASP.NET، تكون الفئة هي اسم النوع العام. تستخدم ILogger<T>وظائف C# أيضا ، ولكن بدلا من تعيين اسم النوع العام كفئة، يقوم وقت التشغيل بتعيين فئات استنادا إلى المصدر. على سبيل المثال:

  • يتم تعيين فئة الإدخالات المتعلقة بتشغيل دالة إلى Function.<FUNCTION_NAME>.
  • يتم تعيين فئة الإدخالات التي تم إنشاؤها بواسطة التعليمات البرمجية للمستخدم داخل الدالة، مثل عند استدعاء logger.LogInformation()، لفئة Function.<FUNCTION_NAME>.User.

يصف الجدول التالي الفئات الرئيسية للسجلات التي ينشئها وقت التشغيل:

الفئة جدول ‏‏الوصف
Function traces يتضمن الدالة التي بدأت والسجلات المكتملة لجميع عمليات تشغيل الدالة. إذا كان نجح التنفيذ، فستكون هذه السجلات في المستوى Information. يتم تسجيل الاستثناءات على المستوى Error. يُنشئ وقت التشغيل أيضًا سجلات بمستوى Warning، على سبيل المثال ، عند إرسال الرسائل الموضوعة في قائمة الانتظار إلى قائمة انتظار الرسائل التي لم تتم معالجتها.
Function.<YOUR_FUNCTION_NAME> التبعيات يتم جمع بيانات التبعية تلقائيًا لبعض الخدمات. إذا كان نجح التنفيذ، فستكون هذه السجلات في المستوى Information. لمزيد من المعلومات، انظر التبعيات. يتم تسجيل الاستثناءات على المستوى Error. يُنشئ وقت التشغيل أيضًا سجلات بمستوى Warning، على سبيل المثال ، عند إرسال الرسائل الموضوعة في قائمة الانتظار إلى قائمة انتظار الرسائل التي لم تتم معالجتها.
Function.<YOUR_FUNCTION_NAME> customMetrics
customEvents
تتيح لك حزم C# و JavaScript SDKs جمع المقاييس المخصصة وتسجيل الأحداث المخصصة. لمزيد من المعلومات،راجع بيانات القياس عن بُعد المخصصة.
Function.<YOUR_FUNCTION_NAME> traces يحتوي على الدالة التي تم البدء فيها والسجلات المكتملة لعمليات تنفيذ دوال معينة. إذا كان نجح التنفيذ، فستكون هذه السجلات في المستوى Information. يتم تسجيل الاستثناءات على المستوى Error. يُنشئ وقت التشغيل أيضًا سجلات بمستوى Warning، على سبيل المثال ، عند إرسال الرسائل الموضوعة في قائمة الانتظار إلى قائمة انتظار الرسائل التي لم تتم معالجتها.
Function.<YOUR_FUNCTION_NAME>.User traces السجلات التي ينشئها المستخدم، والتي يمكن أن تكون على أي مستوى سجل. لمعرفة المزيد حول الكتابة إلى السجلات من الدوال، راجع الكتابة إلى السجلات.
Host.Aggregator customMetrics توفر هذه السجلات التي تم إنشاؤها في وقت التشغيل أعدادًا ومتوسطات لاستدعاءات الدوال على مدار فترة زمنية قابلة للتكوين. الفترة الافتراضية هي 30 ثانية أو 1000 نتيجة، أيهما يأتي أولاً. ومن الأمثلة على ذلك عدد مرات التشغيل ومعدل النجاح والفترة الزمنية. تتم كتابة كل هذه السجلات على Information المستوى . إذا قمت بالتصفية على Warning أو أعلى، فلن ترى أي من هذه البيانات.
Host.Results requests تشير هذه السجلات التي تم إنشاؤها في وقت التشغيل إلى نجاح أو فشل إحدى الدوال. تتم كتابة كل هذه السجلات على Information المستوى . إذا قمت بالتصفية على Warning أو أعلى، فلن ترى أي من هذه البيانات.
Microsoft traces فئة سجل مؤهلة بالكامل تعكس مكوّن وقت تشغيل .NET الذي دعا إليه المضيف.
Worker traces السجلات التي تم إنشاؤها من خلال عملية عامل اللغة بالنسبة للغات غير .NET. قد يتم أيضًا تسجيل سجلات العامل في اللغة في الفئة Microsoft.*، مثل Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcFunctionInvocationDispatcher. تتم كتابة هذه السجلات على Information المستوى .

إشعار

بالنسبة لوظائف مكتبة فئة .NET، تفترض هذه الفئات أنك تستخدم ILogger وليس ILogger<T>. لمزيد من المعلومات، راجع وثائق سجل الدوال.

يشير عمود Table إلى الجدول الذي تمت كتابة السجل إليه في Application Insights.

تكوين مستويات السجل

يتم تعيين مستوى سجل لكل سجل. تعبر القيمة عن عدد صحيح يشير إلى الأهمية النسبية:

LogLevel الرمز ‏‏الوصف
Trace 0 السجلات التي تحتوي على الرسائل الأكثر تفصيلاً. قد تحتوي هذه الرسائل على بيانات تطبيق حساسة. يتم تعطيل هذه الرسائل افتراضياً، ويجب ألا يتم تمكينها أبداً في بيئة إنتاج.
تصحيح 1 السجلات المستخدمة للتحقيق التفاعلي أثناء التطوير. يجب أن تحتوي هذه السجلات بشكل أساسي على معلومات مفيدة لتصحيح الأخطاء، وليس لها قيمة طويلة المدى.
‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏المعلومات 2 سجلات تتبع التدفق العام للتطبيق. يجب أن تكون لهذه السجلات قيمة طويلة الأجل.
تحذير 3 السجلات التي تبرز حدثاً غير طبيعي أو غير متوقع في تدفق التطبيق، ولكن لا تتسبب في توقف تنفيذ التطبيق.
خطأ 4 السجلات التي تبرز عند إيقاف التدفق الحالي للتنفيذ بسبب فشل. يجب أن تشير هذه السجلات إلى الإخفاقات في النشاط الحالي، وليس الفشل على مستوى التطبيق.
هام 5 يصف تطبيقاً غير قابل للاسترداد أو تعطلاً في النظام، أو فشلاً ذريعًا يتطلب اهتماماً فورياً.
بلا 6 تعطيل التسجيل للفئة المحددة.

يحدد تكوين ملف host.json مقدار تسجيل تطبيق الوظائف الذي يرسله إلى Application Insights.

لكل فئة ، تشير إلى مستوى السجل الأدنى للإرسال. تختلف إعدادات host.json بناءً على إصدار وقت تشغيل الدوال.

تعرف الأمثلة التالية التسجيل استنادا إلى القواعد التالية:

  • يتم تعيين مستوى التسجيل الافتراضي إلى Warning لمنع التسجيل المفرط للفئات غير المتوقعة.
  • Host.Aggregator ويتم تعيينها Host.Results إلى مستويات أقل. يمكن أن يؤدي تعيين مستويات تسجيل عالية جدا (خاصة أعلى من Information) إلى فقدان المقاييس وبيانات الأداء.
  • يتم تعيين تسجيل تشغيل الدالة إلى Information. إذا لزم الأمر، يمكنك تجاوز هذا الإعداد في التطوير المحلي إلى Debug أو Trace.
{
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Warning",
      "Host.Aggregator": "Trace",
      "Host.Results": "Information",
      "Function": "Information"
    }
  }
}

إذا تضمن host.json سجلات متعددة تبدأ بنفس السلسلة، فستتم مطابقة سجلات السجلات الأكثر تحديدًا أولاً. أمعن النظر في المثال التالي، حيث يتم تسجيل جميع عناصر وقت التشغيل، باستثناء Host.Aggregator، عند المستوى Error:

{
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Information",
      "Host": "Error",
      "Function": "Error",
      "Host.Aggregator": "Information"
    }
  }
}

يمكنك استخدام إعداد مستوى السجل None واحد لمنع كتابة السجلات للفئة.

تنبيه

تتكامل Azure Functions مع Application Insights عن طريق تخزين أحداث بيانات تتبع الاستخدام في جداول Application Insights. إذا قمت بتعيين مستوى سجل فئة إلى أي قيمة مختلفة عن Information، فإنه يمنع بيانات تتبع الاستخدام من التدفق إلى تلك الجداول، ولن تتمكن من رؤية البيانات ذات الصلة في علامات التبويب Application Insights و Function Monitor .

على سبيل المثال، للعينات السابقة:

  • إذا قمت بتعيين Host.Results الفئة إلى Error مستوى السجل، يجمع Azure أحداث بيانات تتبع الاستخدام لتنفيذ المضيف فقط في requests الجدول لعمليات تنفيذ الوظائف الفاشلة، ما يمنع عرض تفاصيل تنفيذ المضيف لعمليات التنفيذ الناجحة في كل من علامتي التبويب Application Insights و Function Monitor .
  • إذا قمت بتعيين Function الفئة إلى Error مستوى السجل، فإنه يتوقف عن جمع بيانات تتبع الاستخدام للدالة customMetricsdependenciesالمتعلقة بجميع الدالات و وcustomEvents، مما يمنعك من عرض أي من هذه البيانات في Application Insights. تجمع Azure المسجلة فقط traces على Error المستوى.

في كلتا الحالتين، يستمر Azure في جمع بيانات الأخطاء والاستثناءات في علامات التبويب Application Insights و Function Monitor . لمزيد من المعلومات، راجع الحلول التي تحتوي على حجم كبير من بيانات تتبع الاستخدام.

تكوين المجمع

كما هو مذكور في القسم السابق، يقوم وقت التشغيل بتجميع البيانات حول عمليات تنفيذ الدوال خلال فترة زمنية معينة. الفترة الافتراضية هي 30 ثانية أو 1000 مرة، أيهما يأتي أولاً. يمكنك تهيئة هذا الإعداد في ملف host.json . على سبيل المثال:

{
    "aggregator": {
      "batchSize": 1000,
      "flushTimeout": "00:00:30"
    }
}

تكوين أخذ العينات

يحتوي Application Insights على ميزة أخذ العينات التي يمكن أن تحميك من إنتاج الكثير من بيانات تتبع الاستخدام في عمليات التنفيذ المكتملة في أوقات ذروة التحميل. عندما يتجاوز معدل عمليات التنفيذ الواردة حدًا معينًا، يبدأ Application Insights في تجاهل بعض عمليات التنفيذ الواردة بشكل عشوائي. الإعداد الافتراضي لأقصى عدد من عمليات التنفيذ في الثانية هو 20 (five in version 1.x). يمكنك تهيئة أخذ العينات في host.json . إليك مثال:

{
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond" : 20,
        "excludedTypes": "Request;Exception"
      }
    }
  }
}

يمكنك استبعاد أنواع معينة من بيانات تتبع الاستخدام من أخذ العينات. في هذا المثال، يتم استبعاد البيانات من نوع Request و Exception من أخذ العينات. يضمن تسجيل جميع عمليات تنفيذ الوظائف (الطلبات) والاستثناءات بينما تظل الأنواع الأخرى من بيانات تتبع الاستخدام خاضعة لأخذ العينات.

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

تمكين مجموعة استعلام SQL

يجمع Application Insights تلقائيا البيانات على التبعيات لطلبات HTTP واستدعاءات قاعدة البيانات والعديد من الروابط. لمزيد من المعلومات، انظر التبعيات. بالنسبة لاستدعاءات SQL، يتم دائما تجميع اسم الخادم وقاعدة البيانات وتخزينها، ولكن لا يتم تجميع نص استعلام SQL بشكل افتراضي. يمكنك استخدام dependencyTrackingOptions.enableSqlCommandTextInstrumentation لتمكين تسجيل نص استعلام SQL باستخدام الإعدادات التالية (كحد أدنى) في ملف host.json:

"logging": {
    "applicationInsights": {
        "enableDependencyTracking": true,    
        "dependencyTrackingOptions": {
            "enableSqlCommandTextInstrumentation": true
        }
    }
}

لمزيد من المعلومات، راجع تعقب SQL المتقدم للحصول على استعلام SQL الكامل.

تكوين سجلات عنصر تحكم في التحجيم

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

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

لتمكين هذه الميزة، أضف إعداد تطبيق يسمى SCALE_CONTROLLER_LOGGING_ENABLED إلى إعدادات تطبيق الوظائف. يجب أن تكون القيمة التالية للإعداد بالتنسيق <DESTINATION>:<VERBOSITY>. لمزيد من المعلومات، راجع الجدول التالي:

الخاصية ‏‏الوصف
<DESTINATION> الوجهة التي يتم إرسال السجلات إليها. القيم الصالحة هي AppInsights و Blob.
عند استخدام AppInsights، تأكد من تمكين Application Insights في تطبيق وظيفتك.
عند تعيين الوجهة على Blob، يتم إنشاء السجلات في حاوية تخزين البيانات الثنائية الكبيرة المسماة azure-functions-scale-controller في حساب التخزين الافتراضي الذي تم تعيينه في إعداد التطبيق AzureWebJobsStorage.
<VERBOSITY> يحدد مستوى التسجيل. القيم المعتمدة هي None و Warning و Verbose.
عند ضبطه على Verbose، يسجل مراقب المقياس سببًا لكل تغيير في عدد العمال، ومعلومات حول المحفزات التي تدخل في تلك القرارات. تتضمن السجلات المطولة تحذيرات التشغيل والتجزئة المستخدمة بواسطة المشغلات قبل وبعد تشغيل وحدة التحكم في الميزان.

تلميح

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

على سبيل المثال، يقوم أمر Azure CLI التالي بتشغيل التسجيل المطول من وحدة التحكم في التحجيم إلى Application Insights:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:Verbose

في هذا المثال، استبدل <FUNCTION_APP_NAME> و<RESOURCE_GROUP_NAME> باسم تطبيق وظيفتك دالتك واسم مجموعة الموارد، على التوالي.

يعمل الأمر Azure CLI التالي على تعطيل التسجيل عن طريق تعيين وضع التطويل على None:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:None

يمكنك أيضًا تعطيل التسجيل عن طريق إزالة إعداد SCALE_CONTROLLER_LOGGING_ENABLED باستخدام الأمر Azure CLI التالي:

az functionapp config appsettings delete --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--setting-names SCALE_CONTROLLER_LOGGING_ENABLED

مع تمكين تسجيل وحدة التحكم في التحجيم، يمكنك الآن الاستعلام عن سجلات وحدة التحكم في التحجيم.

تمكين تكامل نتائج تحليل التطبيق (Application Insights)

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

اسم الإعداد ‏‏الوصف
APPLICATIONINSIGHTS_CONNECTION_STRING يوصى بهذا الإعداد وهو مطلوب عند تشغيل مثيل Application Insights في سحابة ذات سيادة. يدعم سلسلة الاتصال قدرات جديدة أخرى.
APPLICATIONINSIGHTS_AUTHENTICATION_STRING يتصل ب Application Insights باستخدام مصادقة Microsoft Entra. تحتوي القيمة على معرف العميل إما لهوية مدارة معينة من قبل النظام أو من قبل المستخدم مخولة بنشر بيانات تتبع الاستخدام إلى مساحة عمل Application Insights. تحتوي السلسلة على تنسيق .ClientId=<YOUR_CLIENT_ID>;Authorization=AAD لمزيد من المعلومات، راجع مصادقة Microsoft Entra ل Application Insights.
APPINSIGHTS_INSTRUMENTATIONKEY الإعداد القديم، الذي إهماله Application Insights لصالح إعداد سلسلة الاتصال.

سواء كنت تقوم بإنشاء تطبيق الدالة في مدخل Microsoft Azure، من سطر الأوامر باستخدام Azure Functions Core Tools، أو Visual Studio Code، فإن التكامل مع Application Insights يتم تمكينه تلقائيًا. يحتوي مورد Application Insights على نفس اسم تطبيق الوظائف الخاص بك، ويتم إنشاؤه إما في نفس المنطقة أو في أقرب منطقة.

تطبيق دالة جديد في مدخل Microsoft Azure

لمراجعة مورد Application Insights الذي يتم إنشاؤه، حدده لتوسيع نافذة Application Insights. يمكنك تغيير New resource name أو اختيار Location مختلف في Azure geography حيث تريد تخزين بياناتك.

لقطة شاشة توضح كيفية تمكين Application Insights أثناء إنشاء تطبيق دالة.

عندما تختار Create، يتم إنشاء مورد Application Insights باستخدام تطبيق الدالة، والذي تم تعيين APPLICATIONINSIGHTS_CONNECTION_STRING في إعدادات التطبيق. كل شيء أصبح جاهزًا.

إضافة إلى تطبيق دالة موجود

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

  1. في مدخل Microsoft Azure، ابحث عن تطبيق الدالة وحدده، ثم اختر تطبيق الدالة.

  2. حدد شعار Application Insights is not configured في أعلى النافذة. إذا لم تر هذا الشعار، فقد يكون تطبيق Application Insights ممكّنًا بالفعل لتطبيقك.

    لقطة شاشة توضح كيفية تمكين Application Insights من المدخل.

  3. وسّع تغيير المورد خاصتك وأنشئ مورد Application Insights باستخدام الإعدادات المحددة في الجدول التالي:

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

    لقطة شاشة توضح كيفية إنشاء مورد Application Insights.

  4. حدد تطبيق.

    يتم إنشاء مورد Application Insights في نفس مجموعة الموارد والاشتراك مثل تطبيق دالتك. بعد إنشاء المورد، أغلق نافذة Application Insights .

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

إشعار

قد تستخدم APPINSIGHTS_INSTRUMENTATIONKEY تطبيقات الوظائف القديمة بدلا من APPLICATIONINSIGHTS_CONNECTION_STRING. عندما يكون ذلك ممكنا، قم بتحديث تطبيقك لاستخدام سلسلة الاتصال بدلا من مفتاح تقرير عن حالة النظام.

تعطيل التسجيل المضمن

لقد استخدمت الإصدارات السابقة من Azure Functions المراقبة المضمنة، والتي لم يعد موصى بها. عند تمكين Application Insights، عطّل التسجيل المضمن الذي يستخدم Azure Storage. يُعد التسجيل المدمج مفيدًا للاختبار باستخدام أحمال العمل الخفيفة، ولكنه غير مخصص للاستخدام الإنتاجي عالي الأحمال. لمراقبة الإنتاج، نوصي باستخدام Application Insights. إذا كنت تستخدم تسجيل الدخول المضمن في الإنتاج، فقد يكون سجل التسجيل غير مكتمل بسبب التقييد على Azure Storage.

لتعطيل التسجيل المضمن، احذف إعداد التطبيق AzureWebJobsDashboard. للحصول على معلومات حول كيفية حذف إعدادات التطبيق في مدخل Microsoft Azure، راجع القسم Application settings في كيفية إدارة تطبيق الدالة. قبل حذف إعداد التطبيق، تأكد من عدم وجود دالة حالية في نفس تطبيق الدالة والتي تستخدم الإعداد لمشغلات أو روابط Azure Storage.

الحلول التي تحتوي على حجم كبير من بيانات تتبع الاستخدام

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

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

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

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

  • ضبط القياس عن بعد للوظائف: مع تعيين مستوى السجل الافتراضي إلى Error أو Warning، لا يتم جمع أي معلومات مفصلة من كل دالة (التبعيات والمقاييس المخصصة والأحداث المخصصة والتتبعات). بالنسبة إلى تلك الدالات التي تعد مفتاحا لمراقبة الإنتاج، حدد إدخالا صريحا للفئة Function.<YOUR_FUNCTION_NAME> وقم بتعيينه إلى Information، بحيث يمكنك جمع معلومات مفصلة. لتجنب جمع السجلات التي أنشأها المستخدم على Information المستوى، قم بتعيين Function.<YOUR_FUNCTION_NAME>.User الفئة إلى Error مستوى السجل أو Warning .

  • فئة Host.Aggregator: كما هو موضح في تكوين الفئات، توفر هذه الفئة معلومات مجمعة لاستدعاءات الدوال. يتم جمع المعلومات من هذه الفئة في جدول Application InsightscustomMetrics، ويتم عرضها في علامة التبويب نظرة عامة على الدالة في مدخل Microsoft Azure. اعتمادا على كيفية تكوين المجمع، ضع في اعتبارك أنه يمكن أن يكون هناك تأخير، يحدده flushTimeout الإعداد، في بيانات تتبع الاستخدام التي تم جمعها. إذا قمت بتعيين هذه الفئة إلى قيمة مختلفة عن Information، فإنك تتوقف عن جمع البيانات في customMetrics الجدول ولا تعرض المقاييس في علامة التبويب نظرة عامة على الدالة.

    تعرض لقطة الشاشة التالية Host.Aggregator بيانات القياس عن بُعد المعروضة في علامة التبويب نظرة عامة الخاصة بالوظيفة:

    لقطة شاشة تعرض بيانات تتبع الاستخدام Host.Aggregator المعروضة في علامة التبويب نظرة عامة على الدالة.

    تعرض لقطة الشاشة التالية Host.Aggregator بيانات القياس عن بُعد في جدول رؤى التطبيقات customMetrics:

    لقطة شاشة تعرض بيانات تتبع الاستخدام Host.Aggregator في جدول customMetrics Application Insights.

  • الفئة Host.Results: كما هو موضح في تكوين الفئات، توفر هذه الفئة السجلات التي تم إنشاؤها في وقت التشغيل والتي تشير إلى نجاح أو فشل استدعاء الدالة. يتم جمع المعلومات من هذه الفئة في جدول Application Insights requests ، ويتم عرضها في علامة التبويب Function Monitor وفي لوحات معلومات Application Insights المختلفة (الأداء والفشل وما إلى ذلك). إذا قمت بتعيين هذه الفئة إلى قيمة مختلفة عن Information، يمكنك جمع بيانات تتبع الاستخدام التي تم إنشاؤها فقط على مستوى السجل المحدد (أو أعلى). على سبيل المثال، يؤدي تعيينه إلى error تتبع بيانات الطلبات لعمليات التنفيذ الفاشلة فقط.

    تُظهر لقطة الشاشة التالية Host.Results بيانات القياس عن بُعد المعروضة في علامة تبويب الدالة المراقبة :

    لقطة شاشة تعرض بيانات تتبع الاستخدام Host.Results في علامة التبويب Function Monitor.

    تعرض لقطة الشاشة التالية Host.Results بيانات القياس عن بُعد المعروضة في لوحة بيانات أداء مؤشرات التطبيق:

    لقطة شاشة تعرض بيانات تتبع الاستخدام Host.Results في لوحة معلومات أداء Application Insights.

  • Host.Aggregator مقابل Host.Results: توفر كلتا الفئتين رؤى جيدة حول عمليات تنفيذ الوظائف. إذا لزم الأمر، يمكنك إزالة المعلومات التفصيلية من إحدى هذه الفئات، بحيث يمكنك استخدام الأخرى للمراقبة والتنبيه. إليك مثال على هذا الأمر:

{
  "version": "2.0",  
  "logging": {
    "logLevel": {
      "default": "Warning",
      "Function": "Error",
      "Host.Aggregator": "Error",
      "Host.Results": "Information", 
      "Function.Function1": "Information",
      "Function.Function1.User": "Error"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 1,
        "excludedTypes": "Exception"
      }
    }
  }
} 

مع هذا التكوين:

  • يتم تعيين القيمة الافتراضية لجميع الدوال وفئات القياس عن بُعد إلى Warning (بما في ذلك فئات Microsoft وWorker). لذلك، بشكل افتراضي، يتم جمع جميع الأخطاء والتحذيرات التي تم إنشاؤها بواسطة وقت التشغيل والتسجيل المخصص.

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

  • بالنسبة للفئة Host.Aggregator ، عندما يتم تعيينها على Error مستوى السجل، لا يتم جمع المعلومات المجمعة من استدعاءات الوظائف في customMetrics جدول Application Insights، ولا تظهر معلومات حول عدد عمليات التنفيذ (الإجمالي والناجح والفشل) في لوحة معلومات نظرة عامة على الدالة.

  • بالنسبة للفئة Host.Results، يتم تجميع جميع معلومات تنفيذ المضيف في الجدول requests Application Insights . يتم عرض جميع نتائج استدعاءات في لوحة معلومات مراقبة الوظيفة وفي لوحات معلومات Application Insights.

  • بالنسبة للدالة المسماة Function1، قمنا بتعيين مستوى السجل إلى Information. لذلك، بالنسبة لهذه الدالة الملموسة، يتم تجميع جميع القياسات عن بُعد (التبعية والمقاييس المخصصة والأحداث المخصصة). لنفس الدالة، قمنا بتعيين Function1.User الفئة (التتبعات التي أنشأها المستخدم) إلى Error، لذلك يتم جمع تسجيل الأخطاء المخصص فقط.

    إشعار

    التكوين لكل وظيفة غير مدعوم في v1.x من وقت تشغيل الوظائف.

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

    إشعار

    يتم تعديل أعداد المقاييس مثل معدل الطلب ومعدل الاستثناء للتعويض عن معدل أخذ العينات، بحيث تُظهر القيم الصحيحة تقريبًا في Metric Explorer.

تلميح

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

تجاوز تكوين المراقبة في وقت التشغيل

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

لتهيئة هذه القيم على مستوى إعدادات التطبيق (وتجنب إعادة النشر على تغييرات host.json فقط)، يجب تجاوز قيم host.json معينة عن طريق إنشاء قيمة مكافئة كإعداد للتطبيق. عندما يكتشف وقت التشغيل أحد إعدادات التطبيق بتنسيقAzureFunctionsJobHost__path__to__setting، يتم تجاوز إعداد host.json المقابل في ملف path.to.setting ضمن إعداد JSON. عند التعبير عنه كإعداد تطبيق، يستبدل التسطير السفلي المزدوج (__) النقطة (.) المستخدمة للإشارة إلى التسلسل الهرمي ل JSON. على سبيل المثال، يمكنك استخدام إعدادات التطبيق التالية لتكوين مستويات سجل الوظائف الفردية في host.json.

مسار Host.json إعداد التطبيق
logging.logLevel.default AzureFunctionsJobHost__logging__logLevel__default
logging.logLevel.Host.Aggregator AzureFunctionsJobHost__logging__logLevel__Host__Aggregator
logging.logLevel.Function AzureFunctionsJobHost__logging__logLevel__Function
logging.logLevel.Function.Function1 AzureFunctionsJobHost__logging__logLevel__Function__Function1
logging.logLevel.Function.Function1.User AzureFunctionsJobHost__logging__logLevel__Function__Function1__User

يمكنك تجاوز الإعدادات مباشرة في جزء تكوين تطبيق وظيفة مدخل Microsoft Azure أو باستخدام برنامج نصي Azure CLI أو PowerShell.

az functionapp config appsettings set --name MyFunctionApp --resource-group MyResourceGroup --settings "AzureFunctionsJobHost__logging__logLevel__Host__Aggregator=Information"

إشعار

سيؤدي تجاوز host.json من خلال تغيير إعدادات التطبيق إلى إعادة تشغيل تطبيق الدالة. لا يتم دعم إعدادات التطبيق التي تحتوي على فترة عند التشغيل على Linux في خطة Elastic Premium أو خطة مخصصة (App Service). في بيئات الاستضافة هذه، يجب الاستمرار في استخدام ملف host.json .

مراقبة تطبيقات الوظائف باستخدام التحقق من الصحة

يمكنك استخدام ميزة Health Check لمراقبة تطبيقات الوظائف على خطط Premium (Elastic Premium) و Dedicated (App Service). التحقق من الصحة ليس خيارا لخطة الاستهلاك. لمعرفة كيفية تكوينه، راجع مراقبة مثيلات App Service باستخدام التحقق من الصحة. يجب أن يحتوي تطبيق الوظائف على دالة مشغل HTTP تستجيب برمز حالة HTTP 200 على نفس نقطة النهاية كما تم تكوينها على Path معلمة فحص الصحة. يمكنك أيضًا أن تقوم هذه الوظيفة بإجراء فحوصات إضافية لضمان إمكانية الوصول إلى الخدمات التابعة والعمل عليها.

للحصول على مزيدٍ من المعلومات حول المراقبة، راجع: