تعقب التبعية في Application Insights
إشعار
تعتمد الوثائق التالية على واجهة برمجة تطبيقات Application Insights الكلاسيكية. الخطة طويلة الأجل ل Application Insights هي جمع البيانات باستخدام OpenTelemetry. لمزيد من المعلومات، راجع تمكين Azure Monitor OpenTelemetry لتطبيقات .NET Node.js وPython وJava وخريطة طريق OpenTelemetry الخاصة بنا. تتوفر إرشادات الترحيل ل .NET Node.js وPython.
التبعيةهي مكون تم تسميته من قِبل التطبيق الخاص بك. عادة يكون منتجًا مسمى باستخدام HTTP أو قاعدة بيانات أو نظام الملفات. يقيس Application Insights مدة استدعاءات التبعية وما إذا كانت فاشلة أم لا، إلى جانب معلومات مثل اسم التبعية. يمكنك التحقيق في مكالمات تبعية محددة وربطها بالطلبات والاستثناءات.
التبعيات المتعقبة تلقائيًّا
Application Insights SDKs لـ.NET وذاكرة .NET الأساسية المشحونة مع DependencyTrackingTelemetryModule
، وهي وحدة نمطية لبيانات تتبع الاستخدام التي تجمع التبعيات تلقائيًّا. يتم تمكين مجموعة التبعية هذه تلقائيًا لتطبيقات ASP.NET وASP.NET Core عند تكوينها وفقًا للمستندات الرسمية المرتبطة. يتم شحن الوحدة النمطية DependencyTrackingTelemetryModule
كحزمة Microsoft.ApplicationInsights.DependencyCollector NuGet. يتم إحضاره تلقائيا عند استخدام حزمة NuGet Microsoft.ApplicationInsights.Web
أو حزمة NuGet Microsoft.ApplicationInsights.AspNetCore
.
يتعقب 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 من متصفحات المستخدمين.
- انقر من خلال الطلبات البطيئة أو التي باءت بالفشل لفحص استدعاءات التبعية الخاصة بهم.
- يمكن استخدامالتحليلاتللاستعلام عن بيانات التبعية.
تشخيص الطلبات البطيئة
يقترن كل حدث طلب باستدعاءات التبعية والاستثناءات والأحداث الأخرى التي يتم تعقبها خلال بمعالجة الطلب. لذلك إذا كانت بعض الطلبات تقوم بعمل سيئ، فيمكنك معرفة ما إذا كان ذلك بسبب الاستجابات البطيئة من التبعية.
التعقب من الطلبات إلى التبعيات
حدد علامة التبويب الأداء على اليسار وحدد علامة التبويب التبعيات في الأعلى.
اختار اسم التبعية ضمن الإجمالي. بعد تحديد تبعية، يظهر رسم بياني لتوزيع مدد التبعية على اليمين.
حدد الزر العينات في أسفل اليمين. ثم حدد عينة للاطلاع على تفاصيل المعاملة من البداية إلى النهاية.
ملف تعريف موقعك المباشر
يقوممحلل ملفات التعريف Application Insightsبتتبع مكالمات 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
الأسئلة الشائعة
يقدم هذا القسم إجابات للأسئلة الشائعة.
كيف يقوم تقرير مُجمع التبعيات التلقائي بتقرير المكالمات التي باءت بالفشل إلى التبعيات؟
ستكون مكالمات التبعية التي باءت بالفشل في مجموعة حقل 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 | الكل |
الخطوات التالية
- الاستثناءات
- بيانات المستخدم والصفحة
- التوفر
- قم بإعداد تتبع التبعية المخصص لـ Java.
- قم بإعداد تتبع التبعية المخصص لـ OpenCensus Python .
- اكتب تبعية مخصصة للقياس عن بعد
- راجع نموذج البيانات لأنواع Application Insights ونموذج البيانات.
- تحقق من الأنظمة الأساسية التي تدعمها Application Insights.