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

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

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

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

    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 opções de coleção principal são Recomendado ou Desativado.

     Captura de tela que mostra a seção de instrumentação do aplicativo.

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:

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

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

    • Designação: APPINSIGHTS_JAVASCRIPT_ENABLED
    • Valor: false
  3. 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.

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

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

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.

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

    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 do Azure.

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.

  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 o link acima da página de resultados.

    • 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 , adicione APPINSIGHTS_INSTRUMENTATIONKEY e APPLICATIONINSIGHTS_CONNECTION_STRING com o GUID do ikey às configurações do Falseaplicativo.

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

       Captura de tela que mostra a configuração de interoperabilidade ativada.

      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.ApplicationInsightsdo 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_INSTRUMENTATIONKEYdo 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