Monitorização de aplicações para o Serviço de Aplicações do Azure e o ASP.NET
Habilitando o monitoramento em seu aplicativo ASP. Os aplicativos Web baseados em NET executados no Serviço de Aplicativo do Azure agora são mais fáceis do que nunca. Anteriormente, você precisava instrumentar manualmente seu aplicativo. Agora, a extensão/agente mais recente é incorporada à imagem do Serviço de Aplicativo por padrão. Este artigo orientará você na habilitação do monitoramento do Azure Monitor Application Insights e fornecerá orientações preliminares para automatizar o processo para implantações em grande escala.
Nota
A adição manual de uma extensão de site do Application Insights por meio das Extensões das Ferramentas>de Desenvolvimento foi preterida. Este método de instalação da extensão dependia de atualizações manuais para cada nova versão. A versão estável mais recente da extensão agora está pré-instalada como parte da imagem do Serviço de Aplicativo. Os arquivos estão localizados em d:\Program Files (x86)\SiteExtensions\ApplicationInsightsAgent e são atualizados automaticamente com cada versão estável. Se você seguir as instruções de autoinstrumentação para habilitar o monitoramento, ele removerá automaticamente a extensão preterida para você.
Se o monitoramento de autoinstrumentação e a instrumentação manual baseada em SDK forem detetados, somente as configurações de instrumentação manual serão respeitadas. Esta disposição impede o envio de dados duplicados. Para saber mais, consulte a seção Solução de problemas.
Nota
A 31 de março de 2025, o suporte da ingestão de chaves de instrumentação terminará. A ingestão de chaves de instrumentação continuará a funcionar, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar os novos recursos.
Habilite o monitoramento de autoinstrumentação
Para obter uma lista completa dos cenários de autoinstrumentação suportados, consulte Ambientes suportados, idiomas e provedores de recursos.
Nota
A combinação de APPINSIGHTS_JAVASCRIPT_ENABLED
e urlCompression
não é suportada. Para obter mais informações, consulte a explicação na seção Solução de problemas.
Selecione Application Insights no painel de controle do Azure para seu serviço de aplicativo. Em seguida, selecione Ativar.
Escolha criar um novo recurso ou selecione um recurso existente do Application Insights para este aplicativo.
Nota
Ao selecionar OK para criar o novo recurso, você será solicitado a selecionar Aplicar configurações de monitoramento. Selecionar Continuar vincula seu novo recurso do Application Insights ao serviço do aplicativo. Isso também aciona uma reinicialização do serviço do aplicativo.
Depois de especificar qual recurso usar, você pode escolher como deseja que o Application Insights colete dados por plataforma para seu aplicativo. ASP.NET monitoramento de aplicativos está ativado por padrão com dois níveis diferentes de coleta.
A tabela a seguir resume os dados coletados para cada rota.
Dados ASP.NET coleção básica ASP.NET coleção recomendada Adiciona tendências de utilização da CPU, memória e E/S Não Sim Recolhe tendências de utilização e permite a correlação dos resultados de disponibilidade para transações Sim Sim Recolhe exceções sem processamento pelo processo anfitrião Sim Sim Melhora a precisão das métricas de APM sob carga, quando é utilizada a amostragem Sim Sim Correlaciona os microsserviços entre limites de pedidos/dependências Não (somente recursos de APM de instância única) Sim Para configurar a amostragem, que anteriormente era possível controlar por meio do arquivo applicationinsights.config , agora você pode interagir com ela por meio das configurações do aplicativo com o prefixo
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor
correspondente.Por exemplo, para alterar a porcentagem de amostragem inicial, você pode criar uma configuração de aplicativo de
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
e um valor de100
.Para desativar a amostragem, defina
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
como um valor de100
.As configurações suportadas incluem:
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_EvaluationInterval
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MaxTelemetryItemsPerSecond
Para obter a lista de configurações e definições do processador de telemetria de amostragem adaptável suportado, consulte o código e a documentação de amostragem.
Ativar monitorização do lado do cliente
O monitoramento do lado do cliente é uma opção para ASP.NET. Para habilitar o monitoramento do lado do cliente:
Selecione Definições>Configuração.
Em Configurações do aplicativo, crie uma nova configuração do aplicativo:
- Nome: Digite APPINSIGHTS_JAVASCRIPT_ENABLED.
- Valor: insira true.
Salve as configurações e reinicie seu aplicativo.
Para desativar o monitoramento do lado do cliente, remova o par de valores de chave associado das configurações do aplicativo ou defina o valor como false.
Automatize o monitoramento
Para habilitar a coleta de telemetria com o Application Insights, apenas as configurações do aplicativo precisam ser definidas.
Definições de configurações do aplicativo
Nome de definição de aplicação | Definição | Value |
---|---|---|
ApplicationInsightsAgent_EXTENSION_VERSION | Extensão principal, que controla o monitoramento do tempo de execução. | ~2 |
XDT_MicrosoftApplicationInsights_Mode | No modo padrão, apenas recursos essenciais são habilitados para garantir o desempenho ideal. | default ou recommended |
InstrumentationEngine_EXTENSION_VERSION | Controla se o mecanismo InstrumentationEngine de regravação binária será ativado. Esta definição tem implicações no desempenho e afeta o tempo de arranque/arranque a frio. |
~1 |
XDT_MicrosoftApplicationInsights_BaseExtensions | Controla se o texto da tabela do SQL e do Azure será capturado junto com as chamadas de dependência. Aviso de desempenho: O tempo de inicialização a frio do aplicativo será afetado. Esta configuração requer o InstrumentationEngine . |
~1 |
Configurações do aplicativo do Serviço de Aplicativo com o Azure Resource Manager
As configurações de aplicativo para o Serviço de Aplicativo do Azure podem ser gerenciadas e configuradas com modelos do Azure Resource Manager. Você pode usar esse método ao implantar novos recursos do Serviço de Aplicativo com a automação do Gerenciador de Recursos ou modificar as configurações dos recursos existentes.
A estrutura básica do JSON de configurações do aplicativo para um recurso do Serviço de Aplicativo:
"resources": [
{
"name": "appsettings",
"type": "config",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
],
"tags": {
"displayName": "Application Insights Settings"
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
]
Para obter um exemplo de um modelo do Gerenciador de Recursos com configurações de aplicativo definidas para o Application Insights, esse modelo pode ser útil. Especificamente, consulte a seção que começa na linha 238.
Automatize a criação de um recurso do Application Insights e vincule-o ao recurso do Serviço de Aplicativo recém-criado
Para criar um modelo do Gerenciador de Recursos com as configurações padrão do Application Insights, inicie o processo como se fosse criar um novo aplicativo Web com o Application Insights habilitado.
Crie um novo recurso do Serviço de Aplicativo com as informações do aplicativo Web desejado. Habilite o Application Insights na guia Monitoramento .
Selecione Rever + criar. Em seguida, selecione Baixar um modelo para automação.
Esta opção gera o modelo mais recente do Resource Manager com todas as configurações necessárias configuradas.
No exemplo a seguir, substitua todas as instâncias de pelo nome do AppMonitoredSite
site:
Nota
Se estiver usando o Windows, defina ApplicationInsightsAgent_EXTENSION_VERSION
como ~2
. Se estiver usando Linux, defina ApplicationInsightsAgent_EXTENSION_VERSION
como ~3
.
{
"resources": [
{
"name": "[parameters('name')]",
"type": "Microsoft.Web/sites",
"properties": {
"siteConfig": {
"appSettings": [
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
},
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
},
{
"name": "ApplicationInsightsAgent_EXTENSION_VERSION",
"value": "~2"
}
]
},
"name": "[parameters('name')]",
"serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"dependsOn": [
"[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"microsoft.insights/components/AppMonitoredSite"
],
"apiVersion": "2016-03-01",
"location": "[parameters('location')]"
},
{
"apiVersion": "2016-09-01",
"name": "[parameters('hostingPlanName')]",
"type": "Microsoft.Web/serverfarms",
"location": "[parameters('location')]",
"properties": {
"name": "[parameters('hostingPlanName')]",
"workerSizeId": "[parameters('workerSize')]",
"numberOfWorkers": "1",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"sku": {
"Tier": "[parameters('sku')]",
"Name": "[parameters('skuCode')]"
}
},
{
"apiVersion": "2015-05-01",
"name": "AppMonitoredSite",
"type": "microsoft.insights/components",
"location": "West US 2",
"properties": {
"ApplicationId": "[parameters('name')]",
"Request_Source": "IbizaWebAppExtensionCreate"
}
}
],
"parameters": {
"name": {
"type": "string"
},
"hostingPlanName": {
"type": "string"
},
"hostingEnvironment": {
"type": "string"
},
"location": {
"type": "string"
},
"sku": {
"type": "string"
},
"skuCode": {
"type": "string"
},
"workerSize": {
"type": "string"
},
"serverFarmResourceGroup": {
"type": "string"
},
"subscriptionId": {
"type": "string"
}
},
"$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0"
}
Habilitar por meio do PowerShell
Para habilitar o monitoramento de aplicativos por meio do PowerShell, somente as configurações subjacentes do aplicativo devem ser alteradas. O exemplo a seguir habilita o monitoramento de aplicativos para um site chamado AppMonitoredSite
no grupo AppMonitoredRG
de recursos . Ele configura os dados a serem enviados para a 012345678-abcd-ef01-2345-6789abcd
chave de instrumentação.
Nota
Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Nota
Se estiver usando o Windows, defina ApplicationInsightsAgent_EXTENSION_VERSION como ~2
. Se estiver usando Linux, defina ApplicationInsightsAgent_EXTENSION_VERSION como ~3
.
$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop
Extensão/agente de monitoramento de atualização: .NET
Atualização a partir das versões 2.8.9 e superiores
A atualização da versão 2.8.9 acontece automaticamente, sem ações extras. Os novos bits de monitoramento são entregues em segundo plano para o serviço de aplicativo de destino. Eles serão escolhidos quando o aplicativo for reiniciado.
Para verificar qual versão da extensão você está executando, vá para https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.
Atualização das versões 1.0.0 - 2.6.5
A partir da versão 2.8.9, a extensão de site pré-instalada é usada. Se você estiver em uma versão anterior, poderá atualizar de duas maneiras:
Atualize ativando por meio do portal: mesmo que você tenha a extensão do Application Insights para o Serviço de Aplicativo instalada. A interface do usuário mostra apenas o botão Ativar . Nos bastidores, a antiga extensão do site privado será removida.
Atualize por meio do PowerShell:
- Defina as configurações do aplicativo para habilitar a extensão
ApplicationInsightsAgent
de site pré-instalada. Para obter mais informações, consulte Habilitar por meio do PowerShell. - Remova manualmente a extensão de site privado chamada extensão do Application Insights para o Serviço de Aplicativo.
- Defina as configurações do aplicativo para habilitar a extensão
Se a atualização for feita a partir de uma versão anterior à 2.5.1, verifique se as DLLs do Application Insights foram removidas da pasta bin do aplicativo. Para obter mais informações, consulte as etapas na seção Solução de problemas.
Resolução de Problemas
Nota
Quando você cria um aplicativo Web com os ASP.NET
tempos de execução no Serviço de Aplicativo, ele implanta uma única página HTML estática como um site inicial. Não recomendamos que você solucione um problema com um modelo padrão. Implante um aplicativo antes de solucionar um problema.
Aqui está nosso guia de solução de problemas passo a passo para monitoramento baseado em extensão/agente para ASP. Aplicativos baseados em NET em execução no Serviço de Aplicativo.
Verifique se a configuração do
ApplicationInsightsAgent_EXTENSION_VERSION
aplicativo está definida como um valor de~2
.Navegue para
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
.Confirme se
Application Insights Extension Status
estáPre-Installed Site Extension, version 2.8.x.xxxx
e está em execução.Se não estiver em execução, siga as instruções para habilitar o monitoramento do Application Insights.
Confirme se a fonte de status existe e se parece com
Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json
.Se um valor semelhante não estiver presente, isso significa que o aplicativo não está em execução no momento ou não é suportado. Para garantir que o aplicativo esteja em execução, tente visitar manualmente a URL do aplicativo/pontos de extremidade do aplicativo, o que permitirá que as informações de tempo de execução fiquem disponíveis.
Confirme que
IKeyExists
étrue
. Caso contrário, adicioneAPPINSIGHTS_INSTRUMENTATIONKEY
eAPPLICATIONINSIGHTS_CONNECTION_STRING
com o GUID da chave de instrumentação às configurações do aplicativo.Confirme que não há entradas para
AppAlreadyInstrumented
,AppContainsDiagnosticSourceAssembly
eAppContainsAspNetTelemetryCorrelationAssembly
.Se alguma dessas entradas existir, remova os seguintes pacotes do seu aplicativo:
Microsoft.ApplicationInsights
,System.Diagnostics.DiagnosticSource
eMicrosoft.AspNet.TelemetryCorrelation
.
O site padrão implantado com aplicativos Web não oferece suporte ao monitoramento automático do lado do cliente
Quando você cria um aplicativo Web com os ASP.NET
tempos de execução no Serviço de Aplicativo, ele implanta uma única página HTML estática como um site inicial. A página da Web estática também carrega um aplicativo ASP. Web Part gerenciada por NET no IIS. Esta página permite testar o monitoramento sem código do lado do servidor, mas não oferece suporte ao monitoramento automático do lado do cliente.
Se você quiser testar o servidor sem código e o monitoramento do lado do cliente para ASP.NET em um aplicativo Web do Serviço de Aplicativo, recomendamos que você siga os guias oficiais para criar um aplicativo Web do ASP.NET Framework. Em seguida, use as instruções no artigo atual para habilitar o monitoramento.
APPINSIGHTS_JAVASCRIPT_ENABLED e urlCompression não são suportados
Se você usar APPINSIGHTS_JAVASCRIPT_ENABLED=true
em casos em que o conteúdo é codificado, você pode obter erros como:
- Erro de regravação de URL 500.
- 500.53 Erro do módulo de reescrita de URL com a mensagem "As regras de reescrita de saída não podem ser aplicadas quando o conteúdo da resposta HTTP é codificado ('gzip')."
Ocorre um erro porque a configuração do aplicativo está definida como true
e a APPINSIGHTS_JAVASCRIPT_ENABLED
codificação de conteúdo está presente ao mesmo tempo. Este cenário ainda não é suportado. A solução alternativa é remover APPINSIGHTS_JAVASCRIPT_ENABLED
das configurações do aplicativo. Infelizmente, se a instrumentação JavaScript do lado do cliente/navegador ainda for necessária, referências manuais do SDK serão necessárias para suas páginas da Web. Siga as instruções para instrumentação manual com o JavaScript SDK.
Para obter as informações mais recentes sobre o agente/extensão do Application Insights, consulte as notas de versão.
Qual é a diferença entre as métricas padrão do Application Insights e as métricas do Serviço de Aplicativo do Azure?
O Application Insights coleta telemetria para as solicitações que chegaram ao aplicativo. Se a falha ocorrer em WebApps/WebServer e a solicitação não chegar ao aplicativo do usuário, o Application Insights não terá nenhuma telemetria sobre isso.
A duração calculada serverresponsetime
pelo Application Insights não corresponde necessariamente ao tempo de resposta do servidor observado pelos aplicativos Web. Esse comportamento ocorre porque o Application Insights só conta a duração quando a solicitação realmente chega ao aplicativo do usuário. Se a solicitação estiver presa ou enfileirada no WebServer, o tempo de espera será incluído nas métricas de aplicativos Web, mas não nas métricas do Application Insights.
Testar a conectividade entre o host do aplicativo e o serviço de ingestão
SDKs e agentes do Application Insights enviam telemetria para serem ingeridos como chamadas REST para nossos pontos de extremidade de ingestão. Você pode testar a conectividade do seu servidor Web ou máquina host de aplicativo para os pontos de extremidade do serviço de ingestão usando clientes REST brutos do PowerShell ou comandos curl. Consulte Solucionar problemas de telemetria de aplicativo ausente no Azure Monitor Application Insights.
PHP e WordPress não são suportados
Sites PHP e WordPress não são suportados. Atualmente, não há SDK/agente oficialmente suportado para monitoramento do lado do servidor dessas cargas de trabalho. Você pode instrumentar manualmente as transações do lado do cliente em um site PHP ou WordPress adicionando o JavaScript do lado do cliente às suas páginas da Web usando o JavaScript SDK.
A tabela a seguir fornece uma explicação mais detalhada do que esses valores significam, suas causas subjacentes e correções recomendadas.
Valor do problema | Explicação | Fix |
---|---|---|
AppAlreadyInstrumented:true |
Esse valor indica que a extensão detetou que algum aspeto do SDK já está presente no aplicativo e voltará atrás. Pode ser devido a uma referência a System.Diagnostics.DiagnosticSource , Microsoft.AspNet.TelemetryCorrelation ou Microsoft.ApplicationInsights . |
Remova as referências. Algumas dessas referências são adicionadas por padrão de determinados modelos do Visual Studio. Versões mais antigas do Visual Studio podem adicionar referências ao Microsoft.ApplicationInsights . |
AppAlreadyInstrumented:true |
Esse valor também pode ser causado pela presença das DLLs anteriores na pasta do aplicativo de uma implantação anterior. | Limpe a pasta do aplicativo para garantir que essas DLLs sejam removidas. Verifique o diretório bin do seu aplicativo local e o diretório wwwroot no recurso do Serviço de Aplicativo. Para verificar o diretório wwwroot do seu aplicativo Web do Serviço de Aplicativo, selecione Ferramentas Avançadas (Kudu)>Depurar console>CMD>home\site\wwwroot. |
AppContainsAspNetTelemetryCorrelationAssembly: true |
Esse valor indica que a extensão detetou referências no Microsoft.AspNet.TelemetryCorrelation aplicativo e será desativada. |
Remova a referência. |
AppContainsDiagnosticSourceAssembly**:true |
Esse valor indica que a extensão detetou referências no System.Diagnostics.DiagnosticSource aplicativo e será desativada. |
Por ASP.NET, remova a referência. |
IKeyExists:false |
Esse valor indica que a chave de instrumentação não está presente na configuração APPINSIGHTS_INSTRUMENTATIONKEY do aplicativo. As causas possíveis podem ser que os valores foram removidos acidentalmente ou que você esqueceu de definir os valores no script de automação. |
Verifique se a configuração está presente nas configurações do aplicativo do Serviço de Aplicativo. |
System.IO.FileNotFoundException após a atualização 2.8.44
A versão 2.8.44 da autoinstrumentação atualiza o SDK do Application Insights para 2.20.0. O SDK do Application Insights tem uma referência indireta a System.Runtime.CompilerServices.Unsafe.dll
through System.Diagnostics.DiagnosticSource.dll
. Se o aplicativo tiver redirecionamento de vinculação para System.Runtime.CompilerServices.Unsafe.dll
e se essa biblioteca não estiver presente na pasta do aplicativo, ele poderá lançar System.IO.FileNotFoundException
.
Para resolver esse problema, remova a entrada de redirecionamento de vinculação para System.Runtime.CompilerServices.Unsafe.dll
do arquivo web.config. Se o aplicativo quiser usar System.Runtime.CompilerServices.Unsafe.dll
, defina o redirecionamento de vinculação como mostrado aqui:
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly>
Como uma solução temporária, você pode definir a configuração ApplicationInsightsAgent_EXTENSION_VERSION
do aplicativo para um valor de 2.8.37
. Essa configuração acionará o Serviço de Aplicativo para usar a extensão antiga do Application Insights. As atenuações temporárias só devem ser utilizadas como medidas provisórias.
Notas de versão
Para obter as atualizações mais recentes e correções de bugs, consulte as notas de versão.
Próximos passos
- Run the profiler on your live app (Executar o gerador de perfis na sua aplicação publicada).
- Monitore o Azure Functions com o Application Insights.
- Ativar os diagnósticos do Azure para serem enviados para o Application Insights.
- Monitorizar as métricas de estado de funcionamento de serviço para se certificar de que o serviço está disponível e a responder.
- Receber notificações de alertas sempre que ocorrem eventos operacionais ou quando as métricas ultrapassam um determinado limiar.
- Use o Application Insights para aplicativos e páginas da Web JavaScript para obter a telemetria do cliente dos navegadores que visitam uma página da Web.
- Visão geral da disponibilidade