Az Application Insights konfigurálása ASP.NET webhelyhez
Ez az eljárás úgy konfigurálja a ASP.NET webalkalmazást, hogy telemetriát küldjön az Azure Monitor szolgáltatás Application Insights szolgáltatásának. Olyan ASP.NET alkalmazásokhoz használható, amelyek a saját internetes információs kiszolgálókon (IIS) futnak a helyszínen vagy a felhőben.
Feljegyzés
Az alábbi dokumentáció a klasszikus Application Insights API-ra támaszkodik. Az Application Insights hosszú távú terve, hogy adatokat gyűjtsön az OpenTelemetry használatával. További információ: Az Azure Monitor OpenTelemetria engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz , valamint az OpenTelemetria ütemterve. A migrálási útmutató a .NET, a Node.js és a Python esetében érhető el.
Feljegyzés
2025. március 31-én megszűnik az eszközkulcsalapú betöltés támogatása. A rendszerállapot-kulcsok betöltése továbbra is működni fog, de a továbbiakban nem biztosítunk frissítéseket vagy támogatást a funkcióhoz. Váltás kapcsolati sztring az új képességek kihasználásához.
Előfeltételek
Ha hozzá kívánja adni az Application Insights megoldást ASP.NET-webhelyéhez, tegye a következőket:
Telepítse a Windows Visual Studio 2019 legújabb verzióját a következő számítási feladatokkal:
- ASP.NET és webfejlesztés
- Azure-fejlesztés
Hozzon létre egy ingyenes Azure-fiókot , ha még nem rendelkezik Azure-előfizetéssel.
Hozzon létre egy Application Insights-munkaterület-alapú erőforrást.
Fontos
Javasoljuk, hogy kapcsolati sztring a rendszerállapot-kulcsok felett. Az új Azure-régiókhoz a rendszerállapotkulcsok helyett kapcsolati sztring kell használni.
Egy kapcsolati sztring azonosítja a telemetriai adatokhoz társítani kívánt erőforrást. Emellett módosíthatja azokat a végpontokat is, amelyeket az erőforrás a telemetria célhelyeként fog használni. Ki kell másolnia a kapcsolati sztring, és hozzá kell adnia az alkalmazás kódjához vagy a "APPLICATIONINSIGHTS_CONNECTION_STRING" környezeti változóhoz.
Alapszintű ASP.NET webalkalmazás létrehozása
- Nyissa meg a Visual Studio 2019-et.
- Válassza a File (Fájl)>New (Új)>Project (Projekt) lehetőséget.
- Válassza ASP.NET webalkalmazás(.NET-keretrendszer) C# elemét.
- Adjon meg egy projektnevet, majd válassza a Létrehozás lehetőséget.
- Válassza az MVC>Létrehozás lehetőséget.
Application Insights automatikus hozzáadása
Ez a szakasz végigvezeti az Application Insights sablonalapú ASP.NET webalkalmazáshoz való automatikus hozzáadásán. A ASP.NET webalkalmazás-projektből a Visual Studióban:
Válassza a Project>Add Application Insights Telemetria>Application Insights Sdk (helyi)>Next Finish Close (Következő>befejezés>) lehetőséget.
Nyissa meg az ApplicationInsights.config fájlt.
A záró
</ApplicationInsights>
címke előtt adjon hozzá egy sort, amely tartalmazza az Application Insights-erőforrás kapcsolati sztring. Keresse meg a kapcsolati sztring az újonnan létrehozott Application Insights-erőforrás áttekintő ablaktábláján.<ConnectionString>Copy connection string from Application Insights Resource Overview</ConnectionString>
Válassza a Project Manage NuGet Packages Updates (NuGet-csomagok frissítéseinek kezelése)>lehetőséget.> Ezután frissítse az egyes
Microsoft.ApplicationInsights
NuGet-csomagokat a legújabb stabil kiadásra.Futtassa az alkalmazást az IIS Express kiválasztásával. Megnyílik egy egyszerű ASP.NET alkalmazás. Amikor végigböngészi a webhely lapjait, a rendszer telemetriát küld az Application Insightsnak.
Az Application Insights manuális hozzáadása
Ez a szakasz végigvezeti az Application Insights sablonalapú ASP.NET webalkalmazáshoz való manuális hozzáadásán. Ez a szakasz feltételezi, hogy az ASP szabványos Modell, Nézet és Vezérlő (MVC) webalkalmazás-sablonján alapuló webalkalmazást használ.NET-keretrendszer.
Adja hozzá a következő NuGet-csomagokat és azok függőségeit a projekthez:
Bizonyos esetekben a rendszer automatikusan létrehozza az ApplicationInsights.config fájlt. Ha a fájl már jelen van, ugorjon a 4. lépésre.
Hozza létre saját maga, ha hiányzik. Egy ASP.NET-alkalmazás gyökérkönyvtárában hozzon létre egy új fájlt ApplicationInsights.config néven.
Másolja a következő XML-konfigurációt az újonnan létrehozott fájlba:
<?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 connection string from Application Insights Resource Overview</ConnectionString> </ApplicationInsights>
A záró
</ApplicationInsights>
címke előtt adja hozzá az Application Insights-erőforráshoz tartozó kapcsolati sztring. A kapcsolati sztring az újonnan létrehozott Application Insights-erőforrás áttekintő ablaktábláján találja.<ConnectionString>Copy connection string from Application Insights Resource Overview</ConnectionString>
Az ApplicationInsights.config fájllal megegyező szinten hozzon létre egy ErrorHandler nevű mappát egy AiHandleErrorAttribute.cs nevű új C#-fájllal. A fájl tartalma a következőképpen néz ki:
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); } } }
A App_Start mappában nyissa meg a FilterConfig.cs fájlt, és módosítsa úgy, hogy megfeleljen a mintának:
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()); } } }
Ha a Web.config már frissült, hagyja ki ezt a lépést. Ellenkező esetben frissítse a fájlt az alábbiak szerint:
<?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>
Ezen a ponton sikeresen konfigurálta a kiszolgálóoldali alkalmazásfigyelést. A webalkalmazás futtatásakor a telemetriai adatok megjelennek az Application Insightsban.
Ügyféloldali megfigyelés hozzáadása
Az előző szakaszok útmutatást adtak a kiszolgálóoldali monitorozás automatikus és manuális konfigurálásához használható módszerekről. Ügyféloldali monitorozás hozzáadásához használja az ügyféloldali JavaScript SDK-t. Bármely weblap ügyféloldali tranzakcióit figyelheti úgy, hogy a lap HTML-jének záró </head>
címkéje előtt hozzáad egy JavaScript JavaScript (webes) SDK Loader-szkriptet.
Bár manuálisan is hozzáadhatja a JavaScript (Webes) SDK Loader-szkriptet az egyes HTML-lapok fejlécéhez, javasoljuk, hogy ehelyett adja hozzá a JavaScript (webes) SDK loader szkriptet egy elsődleges laphoz. Ez a művelet a JavaScript (webes) SDK loader szkriptet a webhely összes lapjára injektálja.
A cikkben szereplő sablonalapú ASP.NET MVC-alkalmazás esetében a szerkeszteni kívánt fájl a _Layout.cshtml. A nézetet a Megosztott nézetek>területen találja. Ügyféloldali monitorozás hozzáadásához nyissa meg a _Layout.cshtml fájlt, és kövesse a JavaScript (webes) SDK Loader szkriptalapú beállítási utasításait az ügyféloldali JavaScript SDK-konfigurációról szóló cikkben.
Élő metrikák
Az élő metrikák segítségével gyorsan ellenőrizheti, hogy az Application Insights alkalmazásmonitorozása megfelelően van-e konfigurálva. A telemetriai adatok megjelenése eltarthat néhány percig az Azure Portalon, de az élő metrikák panelen a futó folyamat processzorhasználata közel valós időben jelenik meg. Más telemetriákat is megjeleníthet, például kéréseket, függőségeket és nyomkövetéseket.
Élő metrikák engedélyezése kód használatával bármely .NET-alkalmazáshoz
Feljegyzés
Az élő metrikák alapértelmezés szerint engedélyezve vannak, amikor a .NET-alkalmazásokhoz ajánlott utasításokat követve készíti el azokat.
Élő metrikák manuális konfigurálása:
- Telepítse a NuGet-csomagot : Microsoft.ApplicationInsights.PerfCounterCollector.
- Az alábbi minta konzolalkalmazás-kód az élő metrikák beállítását mutatja be:
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();
}
}
}
}
Az előző minta egy konzolalkalmazáshoz készült, de ugyanez a kód bármely .NET-alkalmazásban használható. Ha bármely más telemetriai modul engedélyezve van a telemetriai adatok automatikus gyűjtéséhez, fontos meggyőződni arról, hogy a modul inicializálásához használt konfiguráció az élő metrikák modulhoz lesz használva.
Gyakori kérdések
Ez a szakasz választ ad a gyakori kérdésekre.
Hogyan távolíthatom el az SDK-t?
Az Application Insights eltávolításához el kell távolítania a NuGet-csomagokat és -hivatkozásokat az alkalmazás API-jából. A NuGet-csomagokat a Visual Studióban a NuGet Csomagkezelő használatával távolíthatja el.
- Ha a nyomkövetési gyűjtemény engedélyezve van, először távolítsa el a Microsoft.ApplicationInsights.TraceListener csomagot a NuGet Csomagkezelő használatával, de ne távolítsa el a függőségeket.
- Távolítsa el a Microsoft.ApplicationInsights.Web csomagot, és távolítsa el a függőségeit a NuGet Csomagkezelő és eltávolítási beállításaival a NuGet Csomagkezelő Beállítások vezérlőelemben.
- Az Application Insights teljes eltávolításához ellenőrizze és manuálisan törölje a hozzáadott kódot vagy fájlokat a projektben hozzáadott API-hívásokkal együtt. További információ: Mi jön létre automatikusan az Application Insights SDK hozzáadásakor?
Mi jön létre automatikusan az Application Insights SDK hozzáadásakor?
Amikor hozzáadja az Application Insightst a projekthez, az automatikusan létrehozza a fájlokat, és kódot ad hozzá néhány fájlhoz. A NuGet-csomagok eltávolítása nem mindig veti el a fájlokat és a kódot. Az Application Insights teljes eltávolításához ellenőrizze és manuálisan törölje a hozzáadott kódot vagy fájlokat, valamint a projektben hozzáadott API-hívásokat.
Amikor Hozzáadja az Application Insights telemetriát egy Visual Studio ASP.NET-projekthez, a következő fájlokat adja hozzá:
- ApplicationInsights.config
- AiHandleErrorAttribute.cs
A rendszer automatikusan hozzáadja a következő kódrészleteket:
[A projekt neve].csproj
<ApplicationInsightsResourceId>/subscriptions/00000000-0000-0000-0000-000000000000/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
Ha a projekt rendelkezik Layout.cshtml fájllal, a program a következő kódot adja hozzá.
<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 }
Hogyan tilthatom le a telemetriai korrelációt?
Ha le szeretné tiltani a telemetria-korrelációt a konfigurációban, tekintse meg <ExcludeComponentCorrelationHttpHeadersOnDomains>
az Application Insights konzolalkalmazásokhoz készült témakörét.
Hibaelhárítás
Tekintse meg a dedikált hibaelhárítási cikket.
A Visual Studio 2019 jelenlegi verziójában ismert probléma merült fel: a rendszerállapotkulcs vagy kapcsolati sztring egy felhasználói titkos kódban való tárolása megszakadt .NET-keretrendszer-alapú alkalmazások esetében. A hiba megkerüléséhez a kulcsot végül az applicationinsights.config fájlba kell kódolni . Ez a cikk úgy lett kialakítva, hogy teljes mértékben elkerülje ezt a problémát, és ne használjon felhasználói titkos kódokat.
Az alkalmazásgazda és a betöltési szolgáltatás közötti kapcsolat tesztelése
Az Application Insights SDK-k és -ügynökök telemetriát küldenek, hogy REST-hívásként betöltse a betöltési végpontokat. A webkiszolgálóról vagy az alkalmazásgazdagépről a betöltési szolgáltatás végpontjaihoz való kapcsolódást a PowerShellből vagy curl parancsokból származó nyers REST-ügyfelek használatával tesztelheti. Tekintse meg a hiányzó alkalmazástelemetria hibaelhárítását az Azure Monitor Application Insightsban.
Nyílt forráskódú SDK
Olvassa el és járuljon hozzá a kódhoz.
A legújabb frissítések és hibajavításokért tekintse meg a kibocsátási megjegyzéseket.
Release Notes (Kibocsátási megjegyzések)
A 2.12-es és újabb verziókhoz: .NET szoftverfejlesztői készletek (SDK-k), beleértve a ASP.NET, a ASP.NET Core és a naplózási adaptereket
Szolgáltatásfrissítéseink az Application Insights főbb fejlesztéseit is összefoglalják.
Következő lépések
- Szintetikus tranzakciók hozzáadásával tesztelheti, hogy webhelye a világ minden tájáról elérhető-e a rendelkezésre állás monitorozásával.
- A mintavételezés konfigurálása a telemetriai forgalom és az adattárolás költségeinek csökkentéséhez.