مشاركة عبر


تعقب التبعية في Application Insights

تنبيه

نوصي ب Azure Monitor OpenTelemetry Distro للتطبيقات الجديدة أو العملاء لتشغيل Azure Monitor Application Insights. يوفر Azure Monitor OpenTelemetry Distro وظيفة وتجربة مماثلة ل Application Insights SDK. من الممكن الترحيل من Application Insights SDK باستخدام أدلة الترحيل ل .NET Node.js وPython، ولكننا ما زلنا نعمل على إضافة بعض الميزات الإضافية للتوافق مع الإصدارات السابقة.

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

التبعيات المتعقبة تلقائيًّا

Application Insights SDKs لـ.NET وذاكرة .NET الأساسية المشحونة مع DependencyTrackingTelemetryModule، وهي وحدة نمطية لبيانات تتبع الاستخدام التي تجمع التبعيات تلقائيًّا. يتم تمكين مجموعة التبعية هذه تلقائيا ASP.NET والتطبيقات الأساسية ASP.NET عند تكوينها وفقا للمستندات الرسمية المرتبطة. يتم شحن الوحدة النمطية DependencyTrackingTelemetryModule كحزمة Microsoft.ApplicationInsights.DependencyCollector NuGet ويتم إحضارها تلقائيا عند استخدام حزمة Microsoft.ApplicationInsights.Web NuGet أو حزمة Microsoft.ApplicationInsights.AspNetCore NuGet.

يتعقب DependencyTrackingTelemetryModule حاليًا التبعيات التالية تلقائيًّا:

التبعيات التفاصيل
HTTP/HTTPS المكالمات المحلية أو البعيدة لـ HTTP/HTTPS.
مكالمات Windows Communication Foundation يتم تعقبها تلقائيًّا فقط في حال تم استخدام الارتباطات المسندة إلى HTTP.
SQL المكالمات التي أجريت بـSqlClient. راجع القسم Advanced SQL Tracking للحصول على استعلام SQL الكامل لالتقاط استعلامات SQL.
Azure Blob Storage أو Table Storage أو Queue Storage المكالمات التي أُجريت مع عميل موقع تخزين Azure.
مراكز أحداث Azure لعميل SDK استخدم أحدث حزمة: https://nuget.org/packages/Azure.Messaging.EventHubs.
ناقل خدمة Azure SDK لعميل SDK استخدم أحدث حزمة: https://nuget.org/packages/Azure.Messaging.ServiceBus.
Azure Cosmos DB يتم تعقبه تلقائيا إذا تم استخدام HTTP/HTTPS. يتم التقاط تتبع العمليات في الوضع المباشر باستخدام TCP تلقائيا باستخدام حزمة >المعاينة = 3.33.0-preview. لمزيد من التفاصيل، تفضل بزيارة الوثائق.

في حال التبعية المفقودة، أو استخدام SDK مختلفة تأكد من أنه في قائمة التبعيات المُجمّعة تلقائيًّا. إذا لم يتم تجميع التبعية تلقائيًّا، فبإمكانك تعقبها يدويًّا باستخدام استدعاء تبعية المسار.

إعداد تعقب التبعية التلقائي في تطبيقات وحدة التحكم

لتعقب التبعيات تلقائيًّا من تطبيقات وحدة التحكم .NET، قم بتثبيت حزمة NuGetMicrosoft.ApplicationInsights.DependencyCollector، ثم قم بتهيئة DependencyTrackingTelemetryModule:

    DependencyTrackingTelemetryModule depModule = new DependencyTrackingTelemetryModule();
    depModule.Initialize(TelemetryConfiguration.Active);

بالنسبة لتطبيقات .NET Core console، فإن TelemetryConfiguration.Active قديم. راجع الإرشادات فيوثائق منتج العامل ووثائق مراقبة ASP.NET.

كيفية عمل مراقبة التبعية التلقائية؟

يتم تجميع التبعيات تلقائيًّا باستخدام إحدى التقنيات التالية:

  • استخدام تقرير عن حالة النظام للتعليمات البرمجية البايت حول الأساليب المحددة. استخدم InstrumentationEngine إما من StatusMonitor أو ملحق Azure App Service Web Apps.
  • استدعاءات EventSource.
  • عمليات رد اتصال DiagnosticSource في أحدث .NET أو .NET Core SDKs.

تعقب التبعيات يدويًّا

فيما يلي أمثلة على التبعيات، التي لا تُجمع تلقائيًّا، وتتطلب التعقب يدويًّا:

  • يتم تعقب Azure Cosmos DB تلقائيًّا فقط إذا استُخدم HTTP/HTTPS. لن يتم التقاط وضع TCP تلقائيا بواسطة Application Insights لإصدارات SDK الأقدم من 2.22.0-Beta1.
  • Redis

لهذه التبعيات التي لم يتم جمعها تلقائيًّا من قِبل SDK، يمكنك تعقبها يدويًّا باستخدامTrackDependency APIالمستخدمة من قِبل وحدات التجميع التلقائية القياسية.

مثال

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

لعرض هذه البيانات في المخططات البيانية للتبعية في Application Insights، أرسلها باستخدام TrackDependency:


    var startTime = DateTime.UtcNow;
    var timer = System.Diagnostics.Stopwatch.StartNew();
    try
    {
        // making dependency call
        success = dependency.Call();
    }
    finally
    {
        timer.Stop();
        telemetryClient.TrackDependency("myDependencyType", "myDependencyCall", "myDependencyData",  startTime, timer.Elapsed, success);
    }

بدلًا من ذلك،TelemetryClientيوفر أساليب التوسيعStartOperationوالتيStopOperationيمكن استخدامها لتعقب التبعيات يدويًّا، كما هو موضح في تعقب التبعيات الصادرة.

إذا كنت ترغب في إيقاف تشغيل الوحدة النمطية تعقب التبعية القياسية، قم بإزالة المرجع DependencyTrackingTelemetryModule في ApplicationInsights.config لتطبيقات ASP.NET. بالنسبة لتطبيقات ASP.NET Core، اتبع الإرشادات الواردة في Application Insights لتطبيقات ASP.NET Core.

تعقب مكالمات AJAX من صفحات الويب

بالنسبة لصفحات الويب، يقوم Application Insights JavaScript SDK بتجميع مكالمات AJAX تلقائيًّا كتبعيات.

تعقب SQL المتقدم للحصول على استعلام SQL كامل

إشعار

تتطلب وظائف Azure إعدادات منفصلة لتمكين مجموعة SQL النصية. لمزيد من المعلومات، راجع تمكين مجموعة استعلام SQL.

بالنسبة لمكالمات SQL، يتم دائمًا تجميع اسم الخادم وقاعدة البيانات وتخزينها كاسم للمجمع DependencyTelemetry. حقل إضافي يُسمى البيانات يمكنه أن يحتوي على نص استعلام SQL المتكامل.

بالنسبة لتطبيقات الذاكرة الأساسية ASP.NET، يتطلب ذلك الآن الاشتراك في مجموعة SQL النصية باستخدام:

services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module. EnableSqlCommandTextInstrumentation = true; });

بالنسبة لتطبيقات ASP.NET، يتم تجميع نص الاستعلام SQL الكامل بمساعدة تقرير عن حالة النظام للتعليمات البرمجية البايت، التي تتطلب استخدام تقرير عن حالة نظام المحرك أو باستخدام حزمةMicrosoft.Data.SqlClientNuGet بدلا من مكتبة System.Data.SqlClient. ويرد في الجدول التالي وصف لخطوات النظام الأساسي المحددة لتمكين مجموعة استعلام SQL المتكاملة.

النظام الأساسي الخطوات اللازمة للحصول على استعلام SQL متكامل
تطبيقات الويب في Azure App Service في لوحة التحكم بتطبيق الويب، افتح جزء Application Insights وقم بتمكن أوامر SQL ضمن .NET.
خادم IIS (أجهزة Azure الظاهرية، المحلية، وما إلى ذلك) إما استخدام حزمة Microsoft.Data.SqlClient NuGet أو استخدام وحدة PowerShell لعامل Application Insights لتثبيت محرك الأجهزة وإعادة تشغيل IIS.
خدمات Azure السحابية إضافة مهمة بدء التشغيل لتركيب StatusMonitor.
يجب أن يكون التطبيق الخاص بك الذي تم إعداده لـ ApplicationInsights SDK في وقت الإنشاء من خلال تثبيت حزم NuGetASP.NETأوتطبيقات الذاكرة الأساسية ASP.NET.
IIS Express: استخدام حزمةMicrosoft.Data.SqlClientNuGet.
WebJobs في Azure App Service استخدام حزمةMicrosoft.Data.SqlClientNuGet.

بالإضافة إلى الخطوات السابقة الخاصة بالنظام الأساسي، يجب عليك أيضًا الاشتراك بشكل صريح لتمكين مجموعة أوامر SQL عن طريق تعديل الملف applicationInsights.config بالرمز التالي:

<TelemetryModules>
  <Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
    <EnableSqlCommandTextInstrumentation>true</EnableSqlCommandTextInstrumentation>
  </Add>

في الحالات السابقة، الطريقة الصحيحة للتحقق من تثبيت محرك الأجهزة بشكل صحيح هي التحقق من صحة إصدار SDK للـ DependencyTelemetry المجمع هو rddp. استخدام rdddsd أو rddf يشير إلى التبعيات التي يتم جمعها عبر استدعاءات DiagnosticSource أو EventSource، لذلك لن يتم التقاط استعلام SQL الكامل.

أين تجد بيانات التبعية

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

تشخيص الطلبات البطيئة

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

التعقب من الطلبات إلى التبعيات

حدد علامة التبويب Performance اليسرى وحدد علامة التبويب Dependencies في الأعلى.

اختار اسم التبعية ضمن الإجمالي. بعد تحديد تبعية، فإنه يعرض رسما بيانيا لتوزيع تلك التبعية للمدد.

لقطة شاشة تعرض علامة تبويب التبعيات مفتوحة لتحديد اسم التبعية في الرسم البياني.

حدد الزر العينات في أسفل اليمين. ثم حدد عينة للاطلاع على تفاصيل المعاملة من البداية إلى النهاية.

لقطة شاشة توضح اختيار عينة للاطلاع على تفاصيل المعاملة من البداية إلى النهاية.

ملف تعريف موقعك المباشر

يقوم محلل ملفات التعريف .NET بتتبع مكالمات HTTP إلى موقعك المباشر ويعرض لك الوظائف في التعليمات البرمجية الخاصة بك التي استغرقت أطول وقت.

طلبات فاشلة

قد تكون الطلبات التي باءت بالفشل مقترنة أيضًا بالمكالمات التي باءت بالفشل إلى التبعيات.

حدد علامة التبويب حالات الفشل اليسرى ثم حدد علامة التبويب التبعيات في الأعلى.

لقطة شاشة توضح اختيار مخطط الطلبات الفاشلة.

هنا ترى عدد التبعيات الفاشلة. للحصول على مزيد من المعلومات حول حدوث فشل، حدد اسم تبعية في الجدول السفلي. حدد زر التبعيات في أسفل اليمين لرؤية تفاصيل المعاملة من البداية إلى النهاية.

سجلات (التحليلات)

يمكن تعقب التبعيات فيلغة الاستعلام Kusto. وإليك بعض الأمثلة.

  • ابحث عن أي مكالمات تبعية باءت بالفشل:

    
        dependencies | where success != "True" | take 10
    
  • ابحث عن مكالمات AJAX:

    
        dependencies | where client_Type == "Browser" | take 10
    
  • ابحث عن مكالمات التبعية المرتبطة بالطلبات:

    
        dependencies
        | where timestamp > ago(1d) and  client_Type != "Browser"
        | join (requests | where timestamp > ago(1d))
          on operation_Id  
    
  • ابحث عن مكالمات AJAX المرتبطة بعرض الصفحة:

    
        dependencies
        | where timestamp > ago(1d) and  client_Type == "Browser"
        | join (browserTimings | where timestamp > ago(1d))
          on operation_Id
    

الأسئلة الشائعة

يقدم هذا القسم إجابات للأسئلة الشائعة.

كيف يقوم تقرير مُجمع التبعيات التلقائي بتقرير المكالمات التي باءت بالفشل إلى التبعيات؟

تم تعيين الحقل على False لاستدعاءات التبعية الفاشلة success . لا تبلغ الوحدة النمطية DependencyTrackingTelemetryModule عن ExceptionTelemetry. يتم وصف نموذج البيانات الكامل للتبعية في نموذج بيانات تتبع الاستخدام Application Insights.

كيف أعمل حساب زمن الانتقال التحويلي بيانات تتبع استخدام التبعية؟

استخدم هذه التعليمة البرمجية:

dependencies
| extend E2EIngestionLatency = ingestion_time() - timestamp 
| extend TimeIngested = ingestion_time()

كيف أعمل تحديد الوقت الذي بدأت فيه مكالمة التبعية؟

في عرض سجل استعلام التحليلات، يمثل timestamp لحظة بدء مكالمة (TrackDependency) الذي يحدث مباشرة بعد تلقي استجابة مكالمة التبعية. لحساب الوقت الذي بدأت فيه مكالمة التبعية، يمكنك أخذtimestampوطرح التسجيلduration لمكالمة التبعية.

هل يتضمن تتبع التبعية في Application Insights هيئات استجابة التسجيل؟

لا يتضمن تتبع التبعية في Application Insights هيئات استجابة التسجيل لأنه سينشئ الكثير من بيانات تتبع الاستخدام لمعظم التطبيقات.

عدة تطوير البرامج SDK مفتوحة المصدر

تمثل كل تطبيقات Application Insights SDK، وحدة نمطية لمجموعة التبعية مفتوحة المصدر أيضًا. قراءة والمساهمة في التعليمات البرمجية، أو الإبلاغ عن المشكلات في المستودع الرسمي GitHub.

تجميع تلقائي للتبعية

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

.NET

أطر عمل التطبيقات الإصدارات
تطبيق ASP.NET Web 4.5
ASP.NET MVC 4
تطبيق ASP.NET Web 4.5
ASP.NET Core 1.1
مكتبات الاتصالات
HttpClient 4.5+, .NET Core 1.1+
SqlClient .NET كور 1.0+، NuGet 4.3.0
Microsoft.Data.SqlClient 1.1.0 - أحدث إصدار مستقر. (راجع الملاحظة التالية.)
Event Hubs Client SDK 1.1.0
ServiceBus Client SDK 7.0.0
عملاء التخزين
ADO.NET 4.5

إشعار

هناك مشكلة معروفة مع الإصدارات القديمة من Microsoft.Data.SqlClient. نوصي باستخدام 1.1.0 أو أحدث للتخفيف من هذه المشكلة. لا يتم شحن Entity Framework Core بالضرورة مع أحدث إصدار مستقر من Microsoft.Data.SqlClient لذا ننصح بتأكيد أنك على الأقل 1.1.0 لتجنب هذه المشكلة.

Java

راجع قائمة تبعيات Application Insights Java التي تم جمعها تلقائيًا.

Node.js

يتم الاحتفاظ بقائمة بأحدث الوحدات النمطية المدعومة حاليا هنا.

JavaScript

مكتبات الاتصالات الإصدارات
XMLHttpRequest الكل

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