Konfigurace Application Insights pro váš web ASP.NET
Tento postup nakonfiguruje vaši ASP.NET webovou aplikaci tak, aby odesílala telemetrická data do Application Insights. Funguje pro ASP.NET aplikace hostované buď v místním prostředí internetových informačních serverů (IIS), nebo v cloudu.
Upozornění
Pro nové aplikace nebo zákazníky doporučujeme , aby služba Azure Monitor OpenTelemetry distro vysílala služby Azure Monitor Application Insights. Distribuce OpenTelemetry služby Azure Monitor poskytuje podobné funkce a prostředí jako sada Application Insights SDK. Ze sady Application Insights SDK je možné migrovat pomocí průvodců migrací pro .NET, Node.js a Python, ale stále pracujeme na přidání několika dalších funkcí pro zpětnou kompatibilitu.
Poznámka:
Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.
Požadavky
Pro přidání Application Insights na web ASP.NET potřebujete:
- Nainstalujte nejnovější verzi sady Visual Studio pro Windows s následujícími úlohami:
- Vývoj pro ASP.NET a web
- Vývoj pro Azure
- Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure.
- Vytvořte prostředek založený na pracovním prostoru Application Insights.
Důležité
Doporučujeme připojovací řetězec nad instrumentačními klíči. Nové oblasti Azure vyžadují použití připojovací řetězec místo instrumentačních klíčů.
Připojovací řetězec identifikuje prostředek, který chcete přidružit k datům telemetrie. Umožňuje také upravit koncové body, které bude váš prostředek používat jako cíl pro vaši telemetrii. Budete muset zkopírovat připojovací řetězec a přidat ho do kódu aplikace nebo do APPLICATIONINSIGHTS_CONNECTION_STRING
proměnné prostředí.
Vytvoření základní webové aplikace ASP.NET
- Otevřete sadu Visual Studio.
- Vyberte Soubor>Nový>Projekt.
- Vyberte ASP.NET webovou aplikaci (.NET Framework) C#.
- Zadejte název projektu a pak vyberte Vytvořit.
- Vyberte vytvořit MVC>.
Automatické přidání Application Insights (Visual Studio)
Tato část vás provede automatickým přidáním Application Insights do webové aplikace založené na šabloně ASP.NET. Z projektu webové aplikace ASP.NET v sadě Visual Studio:
Vyberte Project>Add Application Insights Telemetry>Application Insights SDK (local)>Next>Finish Close.>
Otevřete soubor ApplicationInsights.config.
Před koncovou
</ApplicationInsights>
značku přidejte řádek, který obsahuje připojovací řetězec prostředku Application Insights. Vyhledejte své připojovací řetězec v podokně přehledu nově vytvořeného prostředku Application Insights.<ConnectionString>Copy connection string from Application Insights Resource Overview</ConnectionString>
Vyberte Aktualizace balíčků> NuGet pro správu projektů.> Pak aktualizujte každý
Microsoft.ApplicationInsights
balíček NuGet na nejnovější stabilní verzi.Spusťte aplikaci výběrem služby IIS Express. Otevře se základní ASP.NET aplikace. Při procházení stránek na webu se telemetrie odesílá do Application Insights.
Ruční přidání Application Insights (bez sady Visual Studio)
Tato část vás provede ručním přidáním Application Insights do webové aplikace založené na šabloně ASP.NET. V této části se předpokládá, že používáte webovou aplikaci založenou na standardní šabloně webové aplikace model, zobrazení a kontroleru (MVC) pro ASP.NET Framework.
Do projektu přidejte následující balíčky NuGet a jejich závislosti:
V některých případech se automaticky vytvoří soubor ApplicationInsights.config . Pokud už soubor existuje, přejděte ke kroku 4.
Pokud chybí, vytvořte si ho sami. V kořenovém adresáři ASP.NET aplikace vytvořte nový soubor s názvem ApplicationInsights.config.
Do nově vytvořeného souboru zkopírujte následující konfiguraci 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>
Přidejte připojovací řetězec, který lze provést dvěma způsoby:
(Doporučeno) Nastavte připojovací řetězec v konfiguraci.
Před koncovou
</ApplicationInsights>
značku v ApplicationInsights.config přidejte připojovací řetězec pro prostředek Application Insights. Svoje připojovací řetězec najdete v podokně přehledu nově vytvořeného prostředku Application Insights.<ConnectionString>Copy the connection string from your Application Insights resource</ConnectionString>
Nastavte připojovací řetězec v kódu.
Do třídy program.cs zadejte připojovací řetězec.
var configuration = new TelemetryConfiguration { ConnectionString = "Copy the connection string from your Application Insights resource" };
Na stejné úrovni projektu jako soubor ApplicationInsights.config vytvořte složku s názvem ErrorHandler s novým souborem C# s názvem AiHandleErrorAttribute.cs. Obsah souboru vypadá takto:
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); } } }
Ve složce App_Start otevřete soubor FilterConfig.cs a změňte ho tak, aby odpovídal ukázce:
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()); } } }
Pokud je soubor Web.config již aktualizován, tento krok přeskočte. V opačném případě aktualizujte soubor následujícím způsobem:
<?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>
V tomto okamžiku jste úspěšně nakonfigurovali monitorování aplikací na straně serveru. Pokud spustíte webovou aplikaci, uvidíte, že se v Application Insights začnou zobrazovat telemetrie.
Přidat monitorování na straně klienta
Předchozí části obsahují pokyny k automatické a ruční konfiguraci monitorování na straně serveru. Pokud chcete přidat monitorování na straně klienta, použijte sadu JavaScript SDK na straně klienta. Transakce na straně klienta libovolné webové stránky můžete monitorovat přidáním skriptu zavaděče sady JavaScript (Web) SDK před koncovou </head>
značku HTML stránky.
I když je možné ručně přidat skript zavaděče javascriptové sady SDK (Web) do záhlaví každé stránky HTML, doporučujeme místo toho přidat skript zavaděče javascriptové sady SDK na primární stránku. Tato akce vloží skript zavaděče sady JavaScript (Web) SDK na všechny stránky webu.
Pro aplikaci ASP.NET MVC založenou na šabloně z tohoto článku je soubor, který potřebujete upravit, _Layout.cshtml. Najdete ho v části Sdílená zobrazení>. Pokud chcete přidat monitorování na straně klienta, otevřete soubor _Layout.cshtml a postupujte podle pokynů k nastavení javascriptové sady SDK (Web) sdk založených na skriptech z článku o konfiguraci javascriptové sady JavaScript SDK na straně klienta.
Živé metriky
Živé metriky se dají použít k rychlému ověření, jestli je správně nakonfigurované monitorování aplikací pomocí Application Insights. Zobrazení telemetrie na webu Azure Portal může trvat několik minut, ale v podokně živých metrik se zobrazuje využití procesoru spuštěného procesu téměř v reálném čase. Může také zobrazovat další telemetrii, jako jsou požadavky, závislosti a trasování.
Povolení živých metrik pomocí kódu pro libovolnou aplikaci .NET
Poznámka:
Živé metriky jsou ve výchozím nastavení povolené při jeho onboardingu pomocí doporučených pokynů pro aplikace .NET.
Ruční konfigurace živých metrik:
- Nainstalujte balíček NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
- Následující ukázkový kód konzolové aplikace ukazuje nastavení živých metrik:
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();
}
}
}
}
Předchozí ukázka je určená pro konzolovou aplikaci, ale stejný kód lze použít v libovolné aplikaci .NET. Pokud jsou povolené automatické protokolování telemetrických modulů, je důležité zajistit, aby se stejná konfigurace používaná k inicializaci těchto modulů používala pro modul živých metrik.
Nejčastější dotazy
Tato část obsahuje odpovědi na běžné otázky.
Jak můžu odinstalovat sadu SDK?
Pokud chcete odebrat Application Insights, musíte odebrat balíčky NuGet a odkazy z rozhraní API ve vaší aplikaci. Balíčky NuGet můžete odinstalovat pomocí Správce balíčků NuGet v sadě Visual Studio.
- Pokud je povolená kolekce trasování, nejprve odinstalujte balíček Microsoft.ApplicationInsights.TraceListener pomocí Správce balíčků NuGet, ale neodeberte žádné závislosti.
- Odinstalujte balíček Microsoft.ApplicationInsights.Web a odeberte jeho závislosti pomocí Správce balíčků NuGet a možností odinstalace v rámci ovládacího prvku Možnosti Správce balíčků NuGet.
- Pokud chcete úplně odebrat Application Insights, zkontrolujte a ručně odstraňte přidaný kód nebo soubory spolu s libovolnými voláními rozhraní API, která jste přidali do projektu. Další informace najdete v tématu Co se automaticky vytvoří při přidání sady Application Insights SDK?.
Co se automaticky vytvoří při přidání sady Application Insights SDK?
Když do projektu přidáte Application Insights, automaticky vytvoří soubory a přidá do některých souborů kód. Pouze odinstalace balíčků NuGet ne vždy zahodí soubory a kód. Pokud chcete úplně odebrat Application Insights, měli byste zkontrolovat a ručně odstranit přidaný kód nebo soubory spolu s případnými voláními rozhraní API, která jste přidali do projektu.
Když do projektu ASP.NET sady Visual Studio přidáte telemetrii Application Insights, přidá následující soubory:
- ApplicationInsights.config
- AiHandleErrorAttribute.cs
Automaticky se přidají následující části kódu:
[Název projektu].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
Pokud má váš projekt soubor Layout.cshtml , přidá se následující kód.
<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 }
Jak můžu zakázat korelaci telemetrie?
Pokud chcete zakázat korelaci telemetrie v konfiguraci, přečtěte si <ExcludeComponentCorrelationHttpHeadersOnDomains>
informace v Application Insights pro konzolové aplikace.
Řešení problému
Projděte si vyhrazený článek o řešení potíží.
V sadě Visual Studio 2019 došlo k známému problému: Ukládání instrumentačního klíče nebo připojovací řetězec v tajném kódu uživatele není pro aplikace založené na rozhraní .NET Framework přerušeno. Klíč musí být nakonec pevně zakódován do souboru applicationinsights.config , aby se tato chyba vyřešila. Tento článek je navržený tak, aby se tomuto problému zcela vyhnul, a to tak, že nepoužívá tajné kódy uživatelů.
Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat
Sady Application Insights SDK a agenti odesílají telemetrii, aby se ingestovala jako volání REST do koncových bodů příjmu dat. Připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby pro příjem dat můžete otestovat pomocí nezpracovaných klientů REST z příkazů PowerShellu nebo curl. Viz Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor Application Insights.
Opensourcová sada SDK
Čtení kódu a přispívání do kódu
Nejnovější aktualizace a opravy chyb najdete v poznámkách k verzi.
Poznámky k verzi
Pro verzi 2.12 a novější: sady .NET Software Development Kit (SDK) včetně ASP.NET, ASP.NET Core a adaptérů protokolování
Naše aktualizace služeb také shrnují hlavní vylepšení Application Insights.
Další kroky
- Přidejte syntetické transakce k otestování, že váš web je k dispozici po celém světě s monitorováním dostupnosti.
- Nakonfigurujte vzorkování , které pomáhá snížit náklady na provoz telemetrie a úložiště dat.