مراقبة وظائف Azure باستخدام Azure Monitor Application Insights

توفر Azure Functions تكاملا مضمنا مع Application Insights لمراقبة الوظائف. بالنسبة للغات الأخرى غير .NET و.NET Core، هناك حاجة إلى عمال/ملحقات أخرى خاصة باللغة للحصول على الفوائد الكاملة للتتبع الموزع.

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

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

إشعار

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

للحصول على قائمة بسيناريوهات البنية التلقائية المدعومة، راجع البيئات واللغات وموفري الموارد المعتمدين.

التتبع الموزع لتطبيقات Java

إشعار

كانت هذه الميزة لها تأثير على بدء التشغيل البارد من 8 إلى 9 ثوان، والذي تم تقليله إلى أقل من ثانية. إذا كنت مستخدما مبكرا لهذه الميزة (على سبيل المثال، قبل فبراير 2023)، فراجع قسم "استكشاف الأخطاء وإصلاحها" للتحديث إلى الإصدار الحالي والاستفادة من بدء التشغيل الأسرع الجديد.

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

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

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

تمكين التتبع الموزع لتطبيقات وظائف Java

في جزء نظرة عامة على تطبيق الوظائف، انتقل إلى Application Insights. ضمن مستوى المجموعة، حدد مستحسن.

لقطة شاشة توضح كيفية تمكين AppInsights Java Agent.

استكشاف الأخطاء وإصلاحها

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

Windows

  1. تحقق لمعرفة ما إذا كانت الإعدادات التالية موجودة وقم بإزالتها:

    XDT_MicrosoftApplicationInsights_Java -> 1
    ApplicationInsightsAgent_EXTENSION_VERSION -> ~2
    
  2. قم بتمكين أحدث إصدار عن طريق إضافة هذا الإعداد:

    APPLICATIONINSIGHTS_ENABLE_AGENT: true
    

Linux مخصص/Premium

  1. تحقق لمعرفة ما إذا كانت الإعدادات التالية موجودة وقم بإزالتها:

    ApplicationInsightsAgent_EXTENSION_VERSION -> ~3
    
  2. قم بتمكين أحدث إصدار عن طريق إضافة هذا الإعداد:

    APPLICATIONINSIGHTS_ENABLE_AGENT: true
    

إشعار

إذا لم يكن الإصدار الأخير من وكيل Application Insights Java متوفرا في Azure Functions، فحمله يدويا باتباع هذه الإرشادات.

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

ترسل Application Insights SDKs والوكلاء بيانات تتبع الاستخدام للحصول على استيعابها كمكالمات REST إلى نقاط نهاية الاستيعاب الخاصة بنا. يمكنك اختبار الاتصال من خادم الويب أو الجهاز المضيف للتطبيق إلى نقاط نهاية خدمة الاستيعاب باستخدام عملاء REST الخام من أوامر PowerShell أو curl. راجع استكشاف أخطاء بيانات تتبع استخدام التطبيق المفقودة وإصلاحها في Azure Monitor Application Insights.

سجلات مكررة

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

Log4j

أضف عامل التصفية التالي إلى log4j.xml:

<Filters>
  <ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>

مثال:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
      <Filters>
        <ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
      </Filters>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>
تسجيل الدخول

أضف عامل التصفية التالي إلى logback.xml:

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  <level>OFF</level>
</filter>  

مثال:

<configuration debug="true">
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are  by default assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>OFF</level>
      </filter>  
    </encoder>
  </appender>
  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

التتبع الموزع لتطبيقات الوظائف Node.js

لعرض المزيد من البيانات من تطبيقات Node Azure Functions أكثر مما يتم جمعه بشكل افتراضي، ضع علامة على الدالة باستخدام Azure Monitor OpenTelemetry Distro.

التتبع الموزع لتطبيقات وظائف Python

لجمع بيانات تتبع الاستخدام من خدمات مثل الطلبات وurllib3 وhttpx وPsycoPG2 والمزيد، استخدم Azure Monitor OpenTelemetry Distro. لن ترتبط الطلبات الواردة المتعقبة الواردة إلى تطبيق Python المستضاف في Azure Functions تلقائيا ببيانات تتبع الاستخدام التي يتم تعقبها داخله. يمكنك تحقيق ارتباط التتبع يدويا عن طريق استخراج TraceContext مباشرة كما هو موضح أدناه:

import azure.functions as func

from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.propagate import extract

# Configure Azure monitor collection telemetry pipeline
configure_azure_monitor()

def main(req: func.HttpRequest, context) -> func.HttpResponse:
   ...
   # Store current TraceContext in dictionary format
   carrier = {
      "traceparent": context.trace_context.Traceparent,
      "tracestate": context.trace_context.Tracestate,
   }
   tracer = trace.get_tracer(__name__)
   # Start a span using the current context
   with tracer.start_as_current_span(
      "http_trigger_span",
      context=extract(carrier),
   ):
      ...

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