Monitorização de aplicações para o Serviço de Aplicações do Azure e o ASP.NET Core
Habilitar o monitoramento em seus aplicativos Web baseados no ASP.NET Core em execução no Serviço de Aplicativo do Azure agora é mais fácil 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 orienta você na habilitação do monitoramento do Azure Monitor Application Insights. Ele também fornece orientação preliminar para automatizar o processo para implantações em larga escala.
Nota
A documentação a seguir depende da API clássica do Application Insights. O plano de longo prazo para o Application Insights é coletar dados usando OpenTelemetry. Para obter mais informações, consulte Habilitar o Azure Monitor OpenTelemetry para aplicativos .NET, Node.js, Python e Java e nosso OpenTelemetry Roadmap. As diretrizes de migração estão disponíveis para .NET, Node.js e Python.
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.
Importante
Apenas o suporte de longo prazo do .NET Core é suportado para autoinstrumentação no Windows.
Não há suporte para cortar implantações independentes. Em vez disso, use instrumentação manual via código.
Nota
A autoinstrumentação costumava ser conhecida como "codeless attach" antes de outubro de 2021.
Consulte a seção Habilitar monitoramento a seguir para começar a configurar o Application Insights com seu recurso do Serviço de Aplicativo.
Ativar monitorização
Selecione Application Insights no painel esquerdo do seu serviço de aplicativo. Em seguida, selecione Ativar.
Crie um novo recurso ou selecione um recurso existente do Application Insights para este aplicativo.
Nota
Ao selecionar OK para criar um novo recurso, você será solicitado a Aplicar configurações de monitoramento. Selecionar Continuar vincula seu novo recurso do Application Insights ao serviço do aplicativo. Em seguida, o serviço de aplicativo é reiniciado.
Depois de especificar qual recurso usar, você pode escolher como deseja que o Application Insights colete dados por plataforma para seu aplicativo. ASP.NET opções de coleção principal são Recomendado ou Desativado.
Ativar monitorização do lado do cliente
O monitoramento do lado do cliente é habilitado por padrão para aplicativos ASP.NET Core com coleção Recomendado , independentemente de a configuração APPINSIGHTS_JAVASCRIPT_ENABLED
do aplicativo estar presente.
Se você quiser desativar o monitoramento do lado do cliente:
Selecione Definições>Configuração.
Em Configurações do aplicativo, crie uma nova configuração do aplicativo com as seguintes informações:
- Designação:
APPINSIGHTS_JAVASCRIPT_ENABLED
- Valor:
false
- Designação:
Salve as configurações. Reinicie a aplicação.
Automatize o monitoramento
Para habilitar a coleta de telemetria com o Application Insights, somente as configurações do aplicativo devem 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 para Windows ou ~3 Linux |
XDT_MicrosoftApplicationInsights_Mode | No modo padrão, apenas recursos essenciais são habilitados para garantir o desempenho ideal. | disabled ou recommended . |
XDT_MicrosoftApplicationInsights_PreemptSdk | Apenas para aplicações ASP.NET Core. Permite a interoperabilidade (interoperação) com o SDK do Application Insights. Carrega a extensão lado a lado com o SDK e a usa para enviar telemetria. (Desabilita o SDK do Application Insights.) | 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 Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. 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
Para atualizar a extensão/agente de monitoramento, siga as etapas nas próximas seções.
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 e, na reinicialização do aplicativo, eles serão coletados.
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 estiver a utilizar uma versão anterior, pode atualizar de duas formas:
Atualizar ativando através do portal: mesmo que você tenha a extensão do Application Insights para Serviço de Aplicativo instalada, a interface do usuário mostra apenas o botão Habilitar . 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 do Azure.
- 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 ApplicationInsights
DLLs foram removidas da pasta bin do aplicativo. Para obter mais informações, consulte Etapas de solução de problemas.
Resolução de Problemas
Nota
Quando você cria um aplicativo Web com os ASP.NET Core
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 o modelo padrão. Implante um aplicativo antes de solucionar um problema.
O que se segue é nosso guia de solução de problemas passo a passo para monitoramento baseado em extensão/agente para aplicativos baseados em ASP.NET Core executados 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 o Status da Extensão do Application Insights é
Pre-Installed Site Extension, version 2.8.x.xxxx, is running.
Se ele não estiver em execução, siga as instruções na seção Habilitar 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 se IKeyExists é
True
. Se for , adicioneAPPINSIGHTS_INSTRUMENTATIONKEY
eAPPLICATIONINSIGHTS_CONNECTION_STRING
com o GUID do ikey às configurações doFalse
aplicativo.Se seu aplicativo se referir a qualquer pacote do Application Insights, habilitar a integração do Serviço de Aplicativo pode não ter efeito e os dados podem não aparecer no Application Insights. Um exemplo seria se você já instrumentou ou tentou instrumentar seu aplicativo com o ASP.NET Core SDK. Para corrigir o problema, no portal, ative Interop with Application Insights SDK. Você começará a ver os dados no Application Insights.
Importante
Esta funcionalidade está em pré-visualização.
Os dados agora serão enviados usando uma abordagem sem código, mesmo que o SDK do Application Insights tenha sido originalmente usado ou tentado ser usado.
Importante
Se o aplicativo usou o SDK do Application Insights para enviar qualquer telemetria, a telemetria será desabilitada. Em outras palavras, a telemetria personalizada (por exemplo, quaisquer
Track*()
métodos) e as configurações personalizadas (como amostragem) serão desabilitadas.
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 tempos de execução do ASP.NET Core 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. Esse comportamento permite testar o monitoramento do lado do servidor sem código, 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 o ASP.NET Core em um aplicativo Web do Serviço de Aplicativo, recomendamos que você siga os guias oficiais para criar um aplicativo Web ASP.NET Core. Em seguida, use as instruções no artigo atual para habilitar o monitoramento.
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. Para 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, use o JavaScript SDK.
A tabela a seguir fornece uma explicação 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 por causa de uma referência a Microsoft.ApplicationInsights.AspNetCore 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 da referência Microsoft.ApplicationInsights do Visual Studio . |
AppAlreadyInstrumented:true |
Esse valor também pode ser causado pela presença de DLL na pasta do Microsoft.ApplicationsInsights 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 Serviço de Aplicativo. (Para verificar o diretório wwwroot do seu aplicativo Web do Serviço de Aplicativo, selecione Ferramentas avançadas (Kudu) >Debug console>CMD>home\site\wwwroot). |
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 incluem a remoção acidental dos valores ou o esquecimento 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. |
Notas de versão
Para obter as atualizações e correções de bugs mais recentes, consulte as Notas de versão.
Próximos passos
- Execute o Profiler em seu aplicativo ao vivo.
- 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.
- Disponibilidade