Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Cuidado
Recomendamos a Distribuição do OpenTelemetry do Azure Monitor para novos aplicativos ou clientes para impulsionar o Application Insights do Azure Monitor. A Distribuição do OpenTelemetry do Azure Monitor oferece funcionalidade e experiência semelhantes às do SDK do Application Insights. É possível migrar do SDK do Application Insights usando os guias de migração para .NET, Node.js e Python, mas ainda estamos trabalhando para adicionar mais alguns recursos para compatibilidade com versões anteriores.
Este artigo descreve como habilitar e configurar o Application Insights para aplicativos ASP.NET e ASP.NET Core. Este procedimento configura seu aplicativo para enviar telemetria ao Application Insights.
O Application Insights pode coletar a seguinte telemetria de seus aplicativos ASP.NET e ASP.NET Core:
- Solicitações
- Dependências
- Exceções
- Contadores de desempenho
- Registros (Logs)
- Pulsações
- Eventos personalizados & métricas
(requer instrumentação manual) - Visualizações de página (requer o SDK de JavaScript para páginas da Web)
- Testes de disponibilidade (requer a configuração manual de testes de disponibilidade)
Cenários com suporte
Observação
O SDK do Application Insights para ASP.NET Core pode monitorar os aplicativos, independentemente de onde ou como eles são executados. Se o seu aplicativo estiver em execução e tiver conectividade de rede com o Azure, será possível coletar telemetria. O monitoramento do Application Insights é suportado em qualquer lugar onde o .NET Core seja suportado.
Suportado | ASP.NET | ASP.NET Core |
---|---|---|
Sistema operacional | Windows | Windows, Linux ou Mac |
Método de hospedagem | Em processo (IIS ou IIS Express) | Dentro do processo ou fora do processo |
Método de implantação | Web Deploy, MSI ou cópia manual de arquivo | Dependente da estrutura ou autocontido |
Servidor Web | Serviços de Informações da Internet (IIS) | Servidor de Informações da Internet (IIS) ou Kestrel |
Plataforma de hospedagem | Serviço de Aplicativo do Azure (Windows), Máquinas Virtuais do Azure ou servidores locais | O recurso de Aplicativos Web do Serviço de Aplicativos do Azure, das Máquinas Virtuais do Azure, do Docker e do AKS (Serviço de Kubernetes do Azure) |
Versão do .NET | .NET Framework 4.6.1 e posterior | Todas as versões do .NET com suporte oficial que não estão em versão prévia |
IDE | Visual Studio | Visual Studio, Visual Studio Code ou linha de comando |
Pré-requisitos
- Uma assinatura do Azure. Se você ainda não tiver uma, crie uma conta gratuita do Azure.
- Um recurso baseado em espaço de trabalho do Application Insights.
- Um aplicativo Web em funcionamento. Se você ainda não tiver um, consulte Criar um aplicativo Web básico.
- A versão mais recente do Visual Studio com as seguintes cargas de trabalho:
- Desenvolvimento Web e ASP.NET
- Desenvolvimento do Azure
Criar um aplicativo Web básico
Usaremos um aplicativo MVC como exemplo. Se você estiver usando o Serviço de Trabalho, use as instruções em Application Insights para aplicativos do Serviço de Trabalho.
- Abra o Visual Studio.
- Selecione Criar um novo projeto.
- Escolha ASP.NET Aplicativo Web (.NET Framework) com C# e selecione Avançar.
- Insira um nome de Projeto e selecione Criar.
- Escolha MVC e, em seguida, selecione Criar.
Adicionar o Application Insights automaticamente (Visual Studio)
Esta seção orienta você a adicionar automaticamente o Application Insights a um aplicativo Web baseado em modelo.
Observação
Se você quiser usar o provedor ILogger autônomo para seu aplicativo ASP.NET, use Microsoft.Extensions.Logging.ApplicationInsight.
No projeto do aplicativo Web ASP.NET no Visual Studio:
Selecione Projeto>Adicionar Application Insights Telemetry>SDK do Application Insights (local)>Próximo>Finalizar>Fechar.
Abra o arquivo ApplicationInsights.config.
Antes de fechar a tag
</ApplicationInsights>
, adicione uma linha contendo a cadeia de conexão para seu recurso do Application Insights. Encontre a cadeia de conexão no painel de visão geral do recurso recém-criado do Application Insights.<ConnectionString>Copy connection string from Application Insights Resource Overview</ConnectionString>
Selecione Projeto>Gerenciar Pacotes do NuGet>Atualizações. Em seguida, atualize cada pacote de NuGet
Microsoft.ApplicationInsights
para a versão estável mais recente.Execute o aplicativo selecionando IIS Express. Um aplicativo ASP.NET básico será aberto. Enquanto você navega pelas páginas do site, a telemetria é enviada para o Application Insights.
Adicionar o Application Insights manualmente (sem Visual Studio)
Esta seção orienta você a adicionar manualmente o Application Insights a um aplicativo Web baseado em modelo.
Adicione os seguintes pacotes NuGet e suas dependências ao projeto:
Em alguns casos, o arquivo ApplicationInsights.config é criado automaticamente para você. Se o arquivo já estiver presente, pule para a quarta etapa.
Se ele ainda não tiver sido criado, faça isso. No diretório raiz de um aplicativo ASP.NET, crie um arquivo chamado ApplicationInsights.config.
Copie a seguinte configuração XML para o arquivo recém-criado:
<?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>
Adicione a cadeia de conexão, o que pode ser feito de duas maneiras:
(Recomendado) Defina a cadeia de conexão na configuração.
Antes da marca de fechamento
</ApplicationInsights>
em ApplicationInsights.config, adicione a cadeia de conexão ao recurso do Application Insights. Você encontrará a cadeia de conexão no painel de visão geral do recurso recém-criado do Application Insights.<ConnectionString>Copy the connection string from your Application Insights resource</ConnectionString>
Defina a string de conexão no código.
Forneça uma cadeia de conexão na classe program.cs.
var configuration = new TelemetryConfiguration { ConnectionString = "Copy the connection string from your Application Insights resource" };
No mesmo nível do projeto que o arquivo ApplicationInsights.config, crie uma pasta chamada ErrorHandler com um novo arquivo C# chamado AiHandleErrorAttribute.cs. O conteúdo do arquivo é semelhante ao seguinte:
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); } } }
Na pasta App_Start, abra o arquivo FilterConfig.cs e altere-o para corresponder ao exemplo:
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()); } } }
Se o Web.config já estiver atualizado, ignore esta etapa. Caso contrário, atualize o arquivo conforme mostrado a seguir:
<?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>
Até aqui, você configurou com sucesso o monitoramento de aplicativos do lado do servidor. Se você executar o aplicativo Web, a telemetria começará a aparecer no Application Insights.
Execute seu aplicativo.
Execute o aplicativo e faça solicitações a ele. A telemetria agora deve fluir para o Application Insights. O SDK do Application Insights coleta automaticamente as solicitações da Web recebidas pelo aplicativo, juntamente com a telemetria a seguir.
Métricas ao Vivo
Métricas dinâmicas podem ser usadas para verificar rapidamente se o monitoramento de aplicativo com o Application Insights está configurado corretamente. A telemetria pode levar alguns minutos para aparecer no portal do Azure, mas o painel de métricas dinâmicas mostra o uso da CPU do processo em execução quase em tempo real. Ele também pode mostrar outras telemetrias, como solicitações, dependências, rastreamentos etc.
Observação
As métricas dinâmicas são habilitadas por padrão durante a integração usando as instruções recomendadas para aplicativos .NET.
Habilitar métricas dinâmicas usando código para qualquer aplicativo .NET
Para configurar manualmente as métricas em tempo real:
Instale o pacote NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
O exemplo de código de aplicativo de console a seguir mostra como configurar as métricas dinâmicas:
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();
}
}
}
}
Logs de ILogger
A configuração padrão coleta logs ILogger
Warning
e logs mais graves. Para saber mais, confira Como personalizar a coleta de logs do ILogger?.
Dependências
Por padrão, a coleta de dependências está habilitada. Acompanhamento de dependência no Application Insights explica as dependências coletadas automaticamente e também contém etapas explicando como realizar o acompanhamento manual.
Contadores de desempenho
ASP.NET dá suporte total a contadores de desempenho, enquanto o ASP.NET Core oferece suporte limitado, dependendo da versão do SDK e do ambiente de hospedagem. Para obter mais informações, consulte Contadores para .NET no Application Insights.
Contadores de eventos
O Application Insights dá suporte à coleta de EventCounters com seu EventCounterCollectionModule
, que é habilitado por padrão para ASP.NET Core. Para saber como configurar a lista de contadores a serem coletados, consulte Contadores para .NET no Application Insights.
Enriquecer dados por meio de HTTP
var requestTelemetry = HttpContext.Current?.Items["Microsoft.ApplicationInsights.RequestTelemetry"] as RequestTelemetry;
if (requestTelemetry != null)
{
requestTelemetry.Properties["myProp"] = "someData";
}
Configurar o SDK do Application Insights
Você pode personalizar o SDK do Application Insights para ASP.NET e ASP.NET Core para alterar a configuração padrão.
Para saber como configurar o SDK do Application Insights para aplicativos ASP.NET, consulte Configurar o SDK do Application Insights com ApplicationInsights.config ou .xml.
amostragem
Para saber como configurar a amostragem para aplicativos ASP.NET, consulte Amostragem no Application Insights.
Inicializadores de telemetria
Para enriquecer a telemetria com informações adicionais ou substituir as propriedades de telemetria definidas pelos módulos de telemetria padrão, use inicializadores de telemetria.
Para saber como usar inicializadores de telemetria com aplicativos ASP.NET, consulte Filtrar e pré-processar telemetria no SDK do Application Insights.
Processadores de telemetria
Para saber como usar processadores de telemetria com aplicativos ASP.NET, consulte Filtrar e pré-processar telemetria no SDK do Application Insights.
Configurar ou remover TelemetryModules padrão
O Application Insights coleta automaticamente a telemetria sobre cargas de trabalho específicas sem a necessidade de acompanhamento manual do usuário.
Os módulos de coleta automática a seguir estão habilitados por padrão. Esses módulos são responsáveis por coletar automaticamente a telemetria. Você pode desabilitá-los ou configurá-los para alterar o comportamento padrão deles.
RequestTrackingTelemetryModule
: coleta RequestTelemetry de solicitações de entrada da Web.DependencyTrackingTelemetryModule
: coleta DependencyTelemetry de chamadas HTTP de saída e de chamadas SQL.PerformanceCollectorModule
: coleta PerformanceCounters no Windows.QuickPulseTelemetryModule
: Coleta telemetria para mostrar no painel de métricas ao dinâmicas.AppServicesHeartbeatTelemetryModule
: coleta pulsações (que são enviadas como métricas personalizadas) sobre o ambiente do Serviço de Aplicativo em que o aplicativo está hospedado.AzureInstanceMetadataTelemetryModule
: coleta pulsações (que são enviadas como métricas personalizadas) sobre o ambiente de VM do Azure em que o aplicativo está hospedado.EventCounterCollectionModule
: coleta EventCounters. Este módulo é um novo recurso e está disponível no SDK versão 2.8.0 e posterior.
Para saber como configurar ou remover módulos de telemetria para ASP.NET aplicativo, consulte Configurar o SDK do Application Insights com ApplicationInsights.config ou .xml.
Adicionar monitoramento do lado do cliente
As seções anteriores forneceram orientações sobre métodos para configurar o monitoramento do lado do servidor de forma automática e manual. Para adicionar o monitoramento do lado do cliente, use o SDK do JavaScript cliente. Você pode monitorar as transações do lado do cliente de qualquer página da Web adicionando um Script do Carregador de SDK do JavaScript (Web) antes da marca de fechamento </head>
do HTML da página.
Embora seja possível adicionar manualmente o Script do Carregador do SDK do JavaScript (Web) ao cabeçalho de cada página HTML, recomendamos que você adicione o Script do Carregador do SDK do JavaScript (Web) a uma página principal. Essa ação injeta o script carregador do SDK de JavaScript (Web) em todas as páginas de um site.
Para o aplicativo MVC do ASP.NET baseado em modelo deste artigo, o arquivo que você precisa editar é o _Layout.cshtml. Encontre-o em Exibições>Compartilhado. Para adicionar o monitoramento do lado do cliente, abra _Layout.cshtml e siga as instruções de configuração baseadas no Script do Carregador do SDK do JavaScript (Web) no artigo sobre configuração do SDK do JavaScript do lado do cliente.
Solução de problemas
Confira o artigo de solução de problemas dedicado.
Há um problema conhecido no Visual Studio 2019: o armazenamento da chave de instrumentação ou da cadeia de conexão em um segredo do usuário não está funcionando para aplicativos baseados no .NET Framework. Em última análise, a chave precisa ser codificada no arquivo applicationinsights.config para contornar esse bug. Este artigo foi projetado para evitar esse problema por completo, não usando segredos do usuário.
Testar a conectividade entre o host do aplicativo e o serviço de ingestão
Os SDKs e agentes do Application Insights enviam telemetria para serem ingeridos como chamadas REST nos nossos pontos de extremidade de ingestão. Você pode testar a conectividade do servidor Web ou do computador host do aplicativo nos pontos de extremidade do serviço de ingestão usando clientes REST brutos do PowerShell ou comandos curl. Consulte Solucionar problemas de telemetria de aplicativos ausente no Application Insights do Azure Monitor.
SDK do código-fonte aberto
Ler e contribuir com o código.
Para obter as atualizações e as correções de bugs mais recentes, confira as notas sobre a versão.
Notas de Lançamento
Para a versão 2.12 e versões mais recente: SDKs (kits de desenvolvimento de software) do .NET, incluindo ASP.NET, ASP.NET Core e adaptadores de registro em log
Nossas Atualizações de Serviço também resumem as principais melhorias do Application Insights.
Próximas etapas
- Valide se você está executando uma versão com suporte do SDK do Application Insights.
- Adicione transações sintéticas para testar se o site está disponível em todo o mundo com monitoramento de disponibilidade.
- Configure a amostragem para ajudar a reduzir o tráfego de telemetria e os custos de armazenamento de dados.
- Explore os fluxos dos usuários para compreender como os usuários se movem pelo aplicativo.
- Configure uma coleta de instantâneos para ver o estado do código-fonte e as variáveis no momento em que uma exceção é lançada.
- Use a API para enviar os seus eventos e métricas para uma exibição detalhada do desempenho e do uso do aplicativo.
- Para examinar perguntas frequentes (FAQ), consulte Application Insights para ASP.NET FAQ.