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.

  1. Selecione Application Insights no painel de controle do Azure para seu serviço de aplicativo. Em seguida, selecione Ativar.

    Captura de tela que mostra a guia Application Insights com Ativar selecionado.

  2. 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.

    Captura de tela que mostra a lista suspensa Alterar seu recurso.

  3. 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.

    Captura de tela que mostra a página de extensões de site do Application Insights com a opção Criar novo recurso selecionada.

    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
  4. 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_AdaptiveSamplingTelemetryProcessorcorrespondente.

    • Por exemplo, para alterar a porcentagem de amostragem inicial, você pode criar uma configuração de aplicativo de MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage e um valor de 100.

    • Para desativar a amostragem, defina MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage como um valor de 100.

    • 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:

  1. Selecione Definições>Configuração.

  2. Em Configurações do aplicativo, crie uma nova configuração do aplicativo:

    • Nome: Digite APPINSIGHTS_JAVASCRIPT_ENABLED.
    • Valor: insira true.
  3. 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.

Captura de tela que mostra as configurações do aplicativo do Serviço de Aplicativo com as configurações do Application Insights.

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.

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.

  1. Crie um novo recurso do Serviço de Aplicativo com as informações do aplicativo Web desejado. Habilite o Application Insights na guia Monitoramento .

  2. Selecione Rever + criar. Em seguida, selecione Baixar um modelo para automação.

    Captura de tela que mostra o menu de criação do aplicativo Web do Serviço de Aplicativo.

    Esta opção gera o modelo mais recente do Resource Manager com todas as configurações necessárias configuradas.

    Captura de tela que mostra um modelo de aplicativo Web do Serviço de Aplicativo.

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 AppMonitoredRGde 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.

Captura de ecrã que mostra o caminho do URL para verificar a versão da extensão que está a executar.

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:

    1. Defina as configurações do aplicativo para habilitar a extensão ApplicationInsightsAgentde site pré-instalada. Para obter mais informações, consulte Habilitar por meio do PowerShell.
    2. Remova manualmente a extensão de site privado chamada extensão do Application Insights para o Serviço de Aplicativo.

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.

  1. Verifique se a configuração do ApplicationInsightsAgent_EXTENSION_VERSION aplicativo está definida como um valor de ~2.

  2. Navegue para https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Captura de tela que mostra a página de resultados do link anterior.

    • 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, adicione APPINSIGHTS_INSTRUMENTATIONKEY e APPLICATIONINSIGHTS_CONNECTION_STRING com o GUID da chave de instrumentação às configurações do aplicativo.

    • Confirme que não há entradas para AppAlreadyInstrumented, AppContainsDiagnosticSourceAssemblye AppContainsAspNetTelemetryCorrelationAssembly.

      Se alguma dessas entradas existir, remova os seguintes pacotes do seu aplicativo: Microsoft.ApplicationInsights, System.Diagnostics.DiagnosticSourcee Microsoft.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.TelemetryCorrelationou 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_INSTRUMENTATIONKEYdo 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