تكوين Application Insights لموقع الويب ASP.NET
يقوم هذا الإجراء بتكوين تطبيق الويب ASP.NET لإرسال بيانات تتبع الاستخدام إلى Application Insights. وهو يعمل مع ASP.NET التطبيقات المستضافة إما في خوادم معلومات الإنترنت (IIS) المحلية أو في السحابة.
تنبيه
نوصي ب Azure Monitor OpenTelemetry Distro للتطبيقات الجديدة أو العملاء لتشغيل Azure Monitor Application Insights. يوفر Azure Monitor OpenTelemetry Distro وظيفة وتجربة مماثلة ل Application Insights SDK. من الممكن الترحيل من Application Insights SDK باستخدام أدلة الترحيل ل .NET Node.js وPython، ولكننا ما زلنا نعمل على إضافة بعض الميزات الإضافية للتوافق مع الإصدارات السابقة.
ملاحظة
في 31 مارس 2025، سينتهي دعم إدخال مفاتيح الأجهزة. سيستمر استيعاب مفتاح الأجهزة في العمل ولكننا لن نقوم بتوفير تحديثات أو أي دعم للميزة. الانتقال إلى سلاسل الاتصال للاستفادة من الإمكانات الجديدة.
لإضافة Application Insights إلى موقع الويب الخاص بك ASP.NET، تحتاج إلى:
- تثبيت أحدث إصدار من Visual Studio لنظام التشغيل Windows مع أحمال العمل التالية:
- ASP.NET وتطوير الويب
- تطوير Azure
- إنشاء حساب Azure مجاني إذا لم يكن لديك اشتراك Azure بالفعل.
- إنشاء مورد Application Insights المستند إلى مساحة العمل.
هام
نوصي بـ سلاسل الاتصال عبر مفاتيح تقرير عن حالة النظام. تتطلب مناطق Azure الجديدة استخدام سلاسل الاتصال بدلا من مفاتيح الأجهزة.
تعرف سلسلة الاتصال المورد الذي تريد إقرانه ببيانات تتبع الاستخدام. كما يسمح لك بتعديل نقاط النهاية التي سيستخدمها المورد كوجهة لبيانات تتبع الاستخدام. ستحتاج إلى نسخ سلسلة الاتصال وإضافته إلى التعليمات البرمجية APPLICATIONINSIGHTS_CONNECTION_STRING
للتطبيق الخاص بك أو إلى متغير البيئة.
- افتح Visual Studio.
- حدد "File">"New">"Project".
- حدد ASP.NET Web Application (.NET Framework) C#.
- أدخِل اسم اختبار، ثم حدِّد إنشاء.
- حدِّد إنشاء>MVC.
يرشدك هذا القسم خلال إضافة Application Insights تلقائيا إلى تطبيق ويب ASP.NET يستند إلى القالب. من داخل مشروع تطبيق ويب ASP.NET في Visual Studio:
حدِّد مشروع>إضافة بيانات تتبع الاستخدام لـ Application Insights>Application Insights Sdk (محلي)>ثم>إنهاء>إغلاق.
افتح ملف ApplicationInsights.config.
قبل إغلاق علامة
</ApplicationInsights>
، أضِف سطراً يحتوي على سلسلة الاتصال لمورد Application Insights. ابحث عن سلسلة الاتصال في جزء النظرة العامة لمورد Application Insights المنشأ حديثاً.<ConnectionString>Copy connection string from Application Insights Resource Overview</ConnectionString>
حدِّد مشروع>تحديثات إدارة حزم>NuGet. ثم قم بتحديث كل
Microsoft.ApplicationInsights
حزمة NuGet إلى أحدث إصدار مستقر.تشغيل تطبيقك عن طريق تحديد IIS Express. يفتح تطبيق ASP.NET الأساسي. أثناء استعراض الصفحات على الموقع، يتم إرسال بيانات تتبع الاستخدام إلى Application Insights.
يرشدك هذا القسم من خلال إضافة Application Insights يدويا إلى تطبيق ويب ASP.NET يستند إلى القالب. يفترض هذا القسم أنك تستخدم تطبيق ويب استنادا إلى نموذج قياسي، وعرض، وقالب تطبيق ويب وحدة تحكم (MVC) لإطار عمل ASP.NET.
إضافة حزم NuGet التالية وتبعياتها إلى مشروعك:
في بعض الحالات، يتم إنشاء ملف ApplicationInsights.config لك تلقائيًا. إذا كان الملف موجودًا بالفعل، انتقل إلى الخطوة رقم 4.
أنشئه بنفسك إذا كان مفقودا. في الدليل الجذر للتطبيق ASP.NET، قم بإنشاء ملف جديد يسمى ApplicationInsights.config.
انسخ تكوين XML التالي إلى الملف الذي تم إنشاؤه حديثًا:
<?xml version="1.0" encoding="utf-8"?> <ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings"> <TelemetryInitializers> <Add Type="Microsoft.ApplicationInsights.DependencyCollector.HttpDependenciesParsingTelemetryInitializer, Microsoft.AI.DependencyCollector" /> <Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer" /> <Add Type="Microsoft.ApplicationInsights.WindowsServer.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.AI.WindowsServer" /> <Add Type="Microsoft.ApplicationInsights.Web.WebTestTelemetryInitializer, Microsoft.AI.Web" /> <Add Type="Microsoft.ApplicationInsights.Web.SyntheticUserAgentTelemetryInitializer, Microsoft.AI.Web"> <!-- Extended list of bots: search|spider|crawl|Bot|Monitor|BrowserMob|BingPreview|PagePeeker|WebThumb|URL2PNG|ZooShot|GomezA|Google SketchUp|Read Later|KTXN|KHTE|Keynote|Pingdom|AlwaysOn|zao|borg|oegp|silk|Xenu|zeal|NING|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|Java|JNLP|Daumoa|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|vortex|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|voyager|archiver|Icarus6j|mogimogi|Netvibes|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|wsr-agent|http client|Python-urllib|AppEngine-Google|semanticdiscovery|facebookexternalhit|web/snippet|Google-HTTP-Java-Client--> <Filters>search|spider|crawl|Bot|Monitor|AlwaysOn</Filters> </Add> <Add Type="Microsoft.ApplicationInsights.Web.ClientIpHeaderTelemetryInitializer, Microsoft.AI.Web" /> <Add Type="Microsoft.ApplicationInsights.Web.AzureAppServiceRoleNameFromHostNameHeaderInitializer, Microsoft.AI.Web" /> <Add Type="Microsoft.ApplicationInsights.Web.OperationNameTelemetryInitializer, Microsoft.AI.Web" /> <Add Type="Microsoft.ApplicationInsights.Web.OperationCorrelationTelemetryInitializer, Microsoft.AI.Web" /> <Add Type="Microsoft.ApplicationInsights.Web.UserTelemetryInitializer, Microsoft.AI.Web" /> <Add Type="Microsoft.ApplicationInsights.Web.AuthenticatedUserIdTelemetryInitializer, Microsoft.AI.Web" /> <Add Type="Microsoft.ApplicationInsights.Web.AccountIdTelemetryInitializer, Microsoft.AI.Web" /> <Add Type="Microsoft.ApplicationInsights.Web.SessionTelemetryInitializer, Microsoft.AI.Web" /> </TelemetryInitializers> <TelemetryModules> <Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector"> <ExcludeComponentCorrelationHttpHeadersOnDomains> <!-- Requests to the following hostnames will not be modified by adding correlation headers. Add entries here to exclude additional hostnames. NOTE: this configuration will be lost upon NuGet upgrade. --> <Add>core.windows.net</Add> <Add>core.chinacloudapi.cn</Add> <Add>core.cloudapi.de</Add> <Add>core.usgovcloudapi.net</Add> </ExcludeComponentCorrelationHttpHeadersOnDomains> <IncludeDiagnosticSourceActivities> <Add>Microsoft.Azure.EventHubs</Add> <Add>Azure.Messaging.ServiceBus</Add> </IncludeDiagnosticSourceActivities> </Add> <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector"> <!-- Use the following syntax here to collect additional performance counters: <Counters> <Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\Handle Count" ReportAs="Process handle count" /> ... </Counters> PerformanceCounter must be either \CategoryName(InstanceName)\CounterName or \CategoryName\CounterName NOTE: performance counters configuration will be lost upon NuGet upgrade. The following placeholders are supported as InstanceName: ??APP_WIN32_PROC?? - instance name of the application process for Win32 counters. ??APP_W3SVC_PROC?? - instance name of the application IIS worker process for IIS/ASP.NET counters. ??APP_CLR_PROC?? - instance name of the application CLR process for .NET counters. --> </Add> <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector" /> <Add Type="Microsoft.ApplicationInsights.WindowsServer.AppServicesHeartbeatTelemetryModule, Microsoft.AI.WindowsServer" /> <Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureInstanceMetadataTelemetryModule, Microsoft.AI.WindowsServer"> <!-- Remove individual fields collected here by adding them to the ApplicationInsighs.HeartbeatProvider with the following syntax: <Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights"> <ExcludedHeartbeatProperties> <Add>osType</Add> <Add>location</Add> <Add>name</Add> <Add>offer</Add> <Add>platformFaultDomain</Add> <Add>platformUpdateDomain</Add> <Add>publisher</Add> <Add>sku</Add> <Add>version</Add> <Add>vmId</Add> <Add>vmSize</Add> <Add>subscriptionId</Add> <Add>resourceGroupName</Add> <Add>placementGroupId</Add> <Add>tags</Add> <Add>vmScaleSetName</Add> </ExcludedHeartbeatProperties> </Add> NOTE: exclusions will be lost upon upgrade. --> </Add> <Add Type="Microsoft.ApplicationInsights.WindowsServer.DeveloperModeWithDebuggerAttachedTelemetryModule, Microsoft.AI.WindowsServer" /> <Add Type="Microsoft.ApplicationInsights.WindowsServer.UnhandledExceptionTelemetryModule, Microsoft.AI.WindowsServer" /> <Add Type="Microsoft.ApplicationInsights.WindowsServer.UnobservedExceptionTelemetryModule, Microsoft.AI.WindowsServer"> <!--</Add> <Add Type="Microsoft.ApplicationInsights.WindowsServer.FirstChanceExceptionStatisticsTelemetryModule, Microsoft.AI.WindowsServer">--> </Add> <Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web"> <Handlers> <!-- Add entries here to filter out additional handlers: NOTE: handler configuration will be lost upon NuGet upgrade. --> <Add>Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.RequestDataHttpHandler</Add> <Add>System.Web.StaticFileHandler</Add> <Add>System.Web.Handlers.AssemblyResourceLoader</Add> <Add>System.Web.Optimization.BundleHandler</Add> <Add>System.Web.Script.Services.ScriptHandlerFactory</Add> <Add>System.Web.Handlers.TraceHandler</Add> <Add>System.Web.Services.Discovery.DiscoveryRequestHandler</Add> <Add>System.Web.HttpDebugHandler</Add> </Handlers> </Add> <Add Type="Microsoft.ApplicationInsights.Web.ExceptionTrackingTelemetryModule, Microsoft.AI.Web" /> <Add Type="Microsoft.ApplicationInsights.Web.AspNetDiagnosticTelemetryModule, Microsoft.AI.Web" /> </TelemetryModules> <ApplicationIdProvider Type="Microsoft.ApplicationInsights.Extensibility.Implementation.ApplicationId.ApplicationInsightsApplicationIdProvider, Microsoft.ApplicationInsights" /> <TelemetrySinks> <Add Name="default"> <TelemetryProcessors> <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector" /> <Add Type="Microsoft.ApplicationInsights.Extensibility.AutocollectedMetricsExtractor, Microsoft.ApplicationInsights" /> <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel"> <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond> <ExcludedTypes>Event</ExcludedTypes> </Add> <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel"> <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond> <IncludedTypes>Event</IncludedTypes> </Add> <!-- Adjust the include and exclude examples to specify the desired semicolon-delimited types. (Dependency, Event, Exception, PageView, Request, Trace) --> </TelemetryProcessors> <TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel" /> </Add> </TelemetrySinks> <!-- Learn more about Application Insights configuration with ApplicationInsights.config here: http://go.microsoft.com/fwlink/?LinkID=513840 --> <ConnectionString>Copy the connection string from your Application Insights resource</ConnectionString> </ApplicationInsights>
أضف سلسلة الاتصال، والتي يمكن إجراؤها بطريقتين:
(مستحسن) تعيين سلسلة الاتصال في التكوين.
قبل علامة الإغلاق
</ApplicationInsights>
في ApplicationInsights.config، أضف سلسلة الاتصال لمورد Application Insights. ابحث عن سلسلة الاتصال في جزء النظرة العامة لمورد Application Insights الذي تم إنشاؤه حديثاً.<ConnectionString>Copy the connection string from your Application Insights resource</ConnectionString>
تعيين سلسلة الاتصال في التعليمات البرمجية.
قم بتوفير سلسلة الاتصال في فئة program.cs.
var configuration = new TelemetryConfiguration { ConnectionString = "Copy the connection string from your Application Insights resource" };
في المستوى نفسه في مشروعك كملف ApplicationInsights.config، أنشئ مجلد يسمى ErrorHandler مع ملف C# جديد يسمى AiHandleErrorAttribute.cs. تبدو محتويات الملف كما يلي:
using System; using System.Web.Mvc; using Microsoft.ApplicationInsights; namespace WebApplication10.ErrorHandler //namespace will vary based on your project name { [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] public class AiHandleErrorAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { if (filterContext != null && filterContext.HttpContext != null && filterContext.Exception != null) { //If customError is Off, then AI HTTPModule will report the exception if (filterContext.HttpContext.IsCustomErrorEnabled) { var ai = new TelemetryClient(); ai.TrackException(filterContext.Exception); } } base.OnException(filterContext); } } }
في المجلد App_Start، افتح ملف FilterConfig.cs وأدخِل تغييرات عليه لمطابقة النموذج:
using System.Web; using System.Web.Mvc; namespace WebApplication10 //Namespace will vary based on project name { public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new ErrorHandler.AiHandleErrorAttribute()); } } }
إذا تم تحديث Web.config بالفعل، فتخطى هذه الخطوة. غير ذلك، قم بتحديث الملف كما يلي:
<?xml version="1.0" encoding="utf-8"?> <!-- For more information on how to configure your ASP.NET application, please visit https://go.microsoft.com/fwlink/?LinkId=301880 --> <configuration> <appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings> <system.web> <compilation debug="true" targetFramework="4.7.2" /> <httpRuntime targetFramework="4.7.2" /> <!-- Code added for Application Insights start --> <httpModules> <add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" /> <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" /> </httpModules> <!-- Code added for Application Insights end --> </system.web> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" /> <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-5.2.7.0" newVersion="5.2.7.0" /> </dependentAssembly> <!-- Code added for Application Insights start --> <dependentAssembly> <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" /> </dependentAssembly> <!-- Code added for Application Insights end --> </assemblyBinding> </runtime> <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" /> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" /> </compilers> </system.codedom> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <!-- Code added for Application Insights start --> <modules> <remove name="TelemetryCorrelationHttpModule" /> <add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="managedHandler" /> <remove name="ApplicationInsightsWebTracking" /> <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" /> </modules> <!-- Code added for Application Insights end --> </system.webServer> </configuration>
عند هذه النقطة، قمت بتكوين مراقبة التطبيق من جانب الخادم بنجاح. إذا قمت بتشغيل تطبيق الويب الخاص بك، فسترى بيانات تتبع الاستخدام تبدأ في الظهور في Application Insights.
قدمت الأقسام السابقة إرشادات حول أساليب تكوين المراقبة من جانب الخادم تلقائيًا ويدويًا. لإضافة مراقبة من جانب العميل، استخدم JavaScript SDK من جانب العميل. يمكنك مراقبة أي معاملات من جانب العميل لصفحة ويب عن طريق إضافة برنامج JavaScript (Web) SDK Loader Script قبل علامة إغلاق </head>
HTML للصفحة.
على الرغم من أنه من الممكن إضافة برنامج JavaScript (Web) SDK Loader Script يدويا إلى رأس كل صفحة HTML، نوصي بدلا من ذلك بإضافة برنامج JavaScript (Web) SDK Loader Script إلى صفحة أساسية. يقوم هذا الإجراء بإدخال برنامج JavaScript (Web) SDK Loader Script في جميع صفحات الموقع.
بالنسبة إلى تطبيق MVC لـ ASP.NET المستند إلى القالب من هذه المقالة، الملف الذي تحتاج إلى تحريره هو _Layout.cshtml. يمكنك العثور عليه ضمن المشاهدات>المشتركة. لإضافة مراقبة من جانب العميل، افتح _Layout.cshtml واتبع تعليمات الإعداد المستندة إلى برنامج JavaScript (Web) SDK Loader Script من المقالة حول تكوين JavaScript SDK من جانب العميل.
يمكن استخدام المقاييس المباشرة للتحقق بسرعة مما إذا تم تكوين مراقبة التطبيق باستخدام Application Insights بشكل صحيح. قد تستغرق بيانات تتبع الاستخدام بضع دقائق لتظهر في مدخل Microsoft Azure، ولكن يظهر جزء القياسات المباشرة استخدام وحدة المعالجة المركزية لعملية التشغيل في الوقت الفعلي تقريبا. كما يمكن أن يظهر بيانات تتبع الاستخدام الأخرى مثل الطلبات والتبعيات والتتبعات.
ملاحظة
يتم تمكين المقاييس المباشرة بشكل افتراضي عند إلحاقها باستخدام الإرشادات الموصى بها لتطبيقات .NET.
لتكوين المقاييس المباشرة يدويا:
- تثبيت حزمة NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
- يظهر نموذج التعليمات البرمجية لتطبيق وحدة التحكم التالي إعداد مقاييس مباشرة:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
using System;
using System.Threading.Tasks;
namespace LiveMetricsDemo
{
class Program
{
static void Main(string[] args)
{
// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
.Use((next) =>
{
quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
return quickPulseProcessor;
})
.Build();
var quickPulseModule = new QuickPulseTelemetryModule();
// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);
// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up live metrics.
TelemetryClient client = new TelemetryClient(config);
// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
// Send dependency and request telemetry.
// These will be shown in live metrics.
// CPU/Memory Performance counter is also shown
// automatically without any additional steps.
client.TrackDependency("My dependency", "target", "http://sample",
DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
client.TrackRequest("My Request", DateTimeOffset.Now,
TimeSpan.FromMilliseconds(230), "200", true);
Task.Delay(1000).Wait();
}
}
}
}
العينة السابقة هي لتطبيق وحدة تحكم، ولكن يمكن استخدام نفس التعليمات البرمجية في أي تطبيقات .NET. إذا تم تمكين أي وحدات نمطية أخرى لبيانات تتبع الاستخدام لتحديد القياس عن بعد تلقائيا، فمن المهم التأكد من استخدام نفس التكوين المستخدم لتهيئة هذه الوحدات النمطية لوحدة القياس المباشر.
يقدم هذا القسم إجابات للأسئلة الشائعة.
لإزالة Application Insights، تحتاج إلى إزالة حزم NuGet والمراجع من واجهة برمجة التطبيقات في التطبيق الخاص بك. يمكنك إلغاء تثبيت حزم NuGet باستخدام مدير الحِزَم NuGet في Visual Studio.
- إذا تم تمكين مجموعة التتبع، فقم أولا بإلغاء تثبيت حزمة Microsoft.ApplicationInsights.TraceListener باستخدام مدير الحِزَم NuGet ولكن لا تقم بإزالة أي تبعيات.
- قم بإلغاء تثبيت حزمة Microsoft.ApplicationInsights.Web وإزالة تبعياتها باستخدام مدير الحِزَم NuGet وخيارات إلغاء التثبيت الخاصة به ضمن عنصر تحكم خيارات مدير الحِزَم NuGet.
- لإزالة Application Insights بالكامل، تحقق من التعليمات البرمجية أو الملفات المضافة وحذفها يدويا مع أي استدعاءات واجهة برمجة التطبيقات التي أضفتها في مشروعك. لمزيد من المعلومات، راجع ما الذي يتم إنشاؤه تلقائيا عند إضافة Application Insights SDK؟.
عند إضافة Application Insights إلى مشروعك، فإنه يقوم تلقائيا بإنشاء الملفات وإضافة التعليمات البرمجية إلى بعض ملفاتك. إلغاء تثبيت حزم NuGet فقط لا يتجاهل دائما الملفات والرمز. لإزالة Application Insights بشكل كامل، يجب عليك التحقق من التعليمات البرمجية المضافة أو الملفات وحذفهما يدويًا مع أي استدعاء واجهة برمجة التطبيقات قد قمت بإضافته في المشروع.
عند إضافة بيانات تتبع الاستخدام الخاصة بـ Application Insights إلى مشروع Visual Studio ASP.NET، فإنه يضيف الملفات التالية:
- ApplicationInsights.config
- AiHandleErrorAttribute.cs
تتم إضافة الأجزاء التالية من التعليمات البرمجية تلقائيا:
[اسم مشروعك].csproj
<ApplicationInsightsResourceId>/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/WebApplication4</ApplicationInsightsResourceId>
Packages.config
<packages> ... <package id="Microsoft.ApplicationInsights" version="2.12.0" targetFramework="net472" /> <package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net472" /> <package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.12.0" targetFramework="net472" /> <package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.12.0" targetFramework="net472" /> <package id="Microsoft.ApplicationInsights.Web" version="2.12.0" targetFramework="net472" /> <package id="Microsoft.ApplicationInsights.WindowsServer" version="2.12.0" targetFramework="net472" /> <package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.12.0" targetFramework="net472" /> <package id="Microsoft.AspNet.TelemetryCorrelation" version="1.0.7" targetFramework="net472" /> <package id="System.Buffers" version="4.4.0" targetFramework="net472" /> <package id="System.Diagnostics.DiagnosticSource" version="4.6.0" targetFramework="net472" /> <package id="System.Memory" version="4.5.3" targetFramework="net472" /> <package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" /> <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" /> ... </packages>
Layout.cshtml
إذا كان مشروعك يحتوي على ملف Layout.cshtml ، تتم إضافة التعليمات البرمجية التالية.
<head> ... <script type = 'text/javascript' > var appInsights=window.appInsights||function(config) { function r(config){ t[config] = function(){ var i = arguments; t.queue.push(function(){ t[config].apply(t, i)})} } var t = { config:config},u=document,e=window,o='script',s=u.createElement(o),i,f;for(s.src=config.url||'//az416426.vo.msecnd.net/scripts/a/ai.0.js',u.getElementsByTagName(o)[0].parentNode.appendChild(s),t.cookie=u.cookie,t.queue=[],i=['Event','Exception','Metric','PageView','Trace','Ajax'];i.length;)r('track'+i.pop());return r('setAuthenticatedUserContext'),r('clearAuthenticatedUserContext'),config.disableExceptionTracking||(i='onerror',r('_'+i),f=e[i],e[i]=function(config, r, u, e, o) { var s = f && f(config, r, u, e, o); return s !== !0 && t['_' + i](config, r, u, e, o),s}),t }({ instrumentationKey:'00000000-0000-0000-0000-000000000000' }); window.appInsights=appInsights; appInsights.trackPageView(); </script> ... </head>
ConnectedService.json
{ "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider", "Version": "16.0.0.0", "GettingStartedDocument": { "Uri": "https://go.microsoft.com/fwlink/?LinkID=613413" } }
FilterConfig.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new ErrorHandler.AiHandleErrorAttribute());// This line was added }
لتعطيل ارتباط بيانات تتبع الاستخدام في التكوين، راجع <ExcludeComponentCorrelationHttpHeadersOnDomains>
في Application Insights لتطبيقات وحدة التحكم.
راجع «dedicated troubleshooting article».
هناك مشكلة معروفة في Visual Studio 2019: يتم كسر تخزين مفتاح الأجهزة أو سلسلة الاتصال في سر المستخدم للتطبيقات المستندة إلى .NET Framework. في النهاية، يجب أن يكون المفتاح مشفر في ملف applicationinsights.config للعمل حول هذا الخطأ. صُممت هذه المقالة لتجنب هذه المشكلة تمامًا، عن طريق عدم استخدام بيانات المستخدم السرية.
ترسل Application Insights SDKs والوكلاء بيانات تتبع الاستخدام للحصول على استيعابها كمكالمات REST إلى نقاط نهاية الاستيعاب الخاصة بنا. يمكنك اختبار الاتصال من خادم الويب أو الجهاز المضيف للتطبيق إلى نقاط نهاية خدمة الاستيعاب باستخدام عملاء REST الخام من أوامر PowerShell أو curl. راجع استكشاف أخطاء بيانات تتبع استخدام التطبيق المفقودة وإصلاحها في Azure Monitor Application Insights.
للحصول على آخر التحديثات وإصلاحات الأخطاء، راجع ملاحظات الإصدار.
للإصدار 2.12 والأحدث: .NET Software Development Kits (SDKs) بما في ذلك ASP.NET ASP.NET Core ومحولات التسجيل
كما تلخص تحديثات الخدمة تحسينات Application Insights الرئيسية.
- إضافة المعاملات الصناعية لاختبار أن موقع الويب الخاص بك متاح من جميع أنحاء العالم مع رصد توافر.
- تكوين أخذ العينات للمساعدة في تقليل نسبة استخدام بيانات تتبع الاستخدام وتكاليف تخزين البيانات.