Partilhar via


Monitoramento de aplicativos para o Serviço de Aplicativo do Azure e Python (Visualização)

Importante

Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

Monitore seus aplicativos Web Python nos Serviços de Aplicativo do Azure sem modificar o código. Este guia mostra como habilitar o Azure Monitor Application Insights e oferece dicas para automatizar implantações em grande escala.

Os instrumentos de integração popularizam bibliotecas Python em seu código, permitindo que você reúna e correlacione automaticamente dependências, logs e métricas. Após a instrumentação, você coleta chamadas e métricas destas bibliotecas Python:

Instrumentação Nome da biblioteca suportada Versões suportadas
OpenTelemetry Django Instrumentação django ligação
Instrumentação OpenTelemetry FastApi fastapi ligação
Instrumentação OpenTelemetry Flask flask ligação
OpenTelemetry Psycopg2 Instrumentação psycopg2 ligação
Instrumentação de solicitações OpenTelemetry requests ligação
Instrumentação OpenTelemetry UrlLib urllib Todos
Instrumentação OpenTelemetry UrlLib3 urllib3 ligação

Nota

Se estiver usando o Django, consulte a seção adicional Instrumentação do Django neste artigo.

A telemetria de registro em log é coletada no nível do registrador raiz. Para saber mais sobre a hierarquia de log nativo do Python, visite a documentação de log do Python.

Pré-requisitos

  • Python versão 3.11 ou anterior.
  • O Serviço de Aplicativo deve ser implantado como código. Não há suporte para contêineres personalizados.

Ativar o Application Insights

A maneira mais fácil de monitorar aplicativos Python nos Serviços de Aplicativo do Azure é por meio do portal do Azure.

A ativação do monitoramento no portal do Azure instrumenta automaticamente seu aplicativo com o Application Insights e não requer alterações de código.

Nota

Você só deve usar a autoinstrumentação no Serviço de Aplicativo se não estiver usando a instrumentação manual de OpenTelemetry em seu código, como a Distro OpenTelemetry do Azure Monitor ou o Exportador de OpenTelemetry do Azure Monitor. Isso é para evitar que dados duplicados sejam enviados. Para saber mais sobre isso, confira a seção de solução de problemas neste artigo.

Autoinstrumentação através do portal do Azure

Para obter uma lista completa dos cenários de autoinstrumentação suportados, consulte Ambientes suportados, idiomas e provedores de recursos.

Ative o monitoramento para seus aplicativos Python no Serviço de Aplicativo do Azure sem a necessidade de alterações de código.

O Application Insights for Python integra-se com o Serviço de Aplicativo do Azure Linux baseado em código.

A integração está em pré-visualização pública. Ele adiciona o Python SDK, que está no GA.

  1. Selecione Application Insights no painel de controle do Azure para seu serviço de aplicativo e selecione Habilitar.

    Captura de ecrã do separador 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 Aplicar configurações de monitoramento. Selecionar Continuar vinculará seu novo recurso do Application Insights ao seu serviço de aplicativo, fazendo isso também acionará uma reinicialização do seu serviço de aplicativo.

    Captura de ecrã da lista pendente Alterar o recurso.

  3. Você especifica o recurso e ele está pronto para uso.

    Captura de ecrã do instrumento da sua aplicação.

Configuração

Você pode configurar com variáveis de ambiente OpenTelemetry como:

Variável de ambiente Descrição
OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES Especifica os atributos de recurso OpenTelemetry associados ao seu aplicativo. Você pode definir quaisquer Atributos de Recursos com OTEL_RESOURCE_ATTRIBUTES ou usar OTEL_SERVICE_NAME para definir apenas o service.name.
OTEL_LOGS_EXPORTER Se definido como None, desativa a coleta e a exportação da telemetria de registro.
OTEL_METRICS_EXPORTER Se definido como None, desativa a coleta e a exportação de telemetria métrica.
OTEL_TRACES_EXPORTER Se definido como None, desativa a coleta e a exportação da telemetria de rastreamento distribuído.
OTEL_BLRP_SCHEDULE_DELAY Especifica o intervalo de exportação de log em milissegundos. O padrão é 5000.
OTEL_BSP_SCHEDULE_DELAY Especifica o intervalo de exportação de rastreamento distribuído em milissegundos. O padrão é 5000.
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS Especifica quais instrumentações OpenTelemetry devem ser desabilitadas. Quando desativada, as instrumentações não são executadas como parte da autoinstrumentação. Aceita uma lista separada por vírgulas de nomes de bibliotecas minúsculas. Por exemplo, defina-o para "psycopg2,fastapi" desativar as instrumentações Psycopg2 e FastAPI. O padrão é uma lista vazia, habilitando todas as instrumentações suportadas.

Adicionar uma biblioteca de instrumentação da comunidade

Você pode coletar mais dados automaticamente ao incluir bibliotecas de instrumentação da comunidade OpenTelemetry .

Atenção

Não apoiamos nem garantimos a qualidade das bibliotecas de instrumentação comunitárias. Para sugerir um para a nossa distro, publique ou vote na nossa comunidade de feedback. Esteja ciente, alguns são baseados em especificações experimentais OpenTelemetry e podem introduzir futuras mudanças de rutura.

Para adicionar a biblioteca de instrumentação OpenTelemetry da comunidade, instale-a através do ficheiro da requirements.txt sua aplicação. A autoinstrumentação OpenTelemetry capta e instrumenta automaticamente todas as bibliotecas instaladas. Encontre a lista de bibliotecas comunitárias aqui.

Automatize o monitoramento

Para habilitar a coleta de telemetria com o Application Insights, apenas as seguintes configurações do aplicativo precisam ser definidas:

Captura de tela das Configurações do Aplicativo do Serviço de Aplicativo com as configurações disponíveis do Application Insights.

Definições de configurações do aplicativo

Nome de definição de aplicação Definição Value
APPLICATIONINSIGHTS_CONNECTION_STRING Cadeia de conexões para seu recurso do Application Insights Exemplo: abcd1234-ab12-cd34-abcd1234abcd
ApplicationInsightsAgent_EXTENSION_VERSION Extensão principal, que controla o monitoramento do tempo de execução. ~3

Nota

O criador de perfis e o depurador de instantâneos não estão disponíveis para aplicativos Python

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

Django Instrumentação

Para usar a Instrumentação OpenTelemetry Django, você precisa definir a DJANGO_SETTINGS_MODULE variável de ambiente nas configurações do Serviço de Aplicativo para apontar da pasta do aplicativo para o módulo de configurações. Para obter mais informações, consulte a documentação do Django.

Perguntas mais frequentes

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.

Resolução de Problemas

Aqui fornecemos nosso guia de solução de problemas para monitorar aplicativos Python nos Serviços de Aplicativo do Azure usando autoinstrumentação.

Telemetria duplicada

Você só deve usar a autoinstrumentação no Serviço de Aplicativo se não estiver usando a instrumentação manual de OpenTelemetry em seu código, como a Distro OpenTelemetry do Azure Monitor ou o Exportador de OpenTelemetry do Azure Monitor. Usar a autoinstrumentação sobre a instrumentação manual pode causar telemetria duplicada e aumentar seu custo. Para usar a autoinstrumentação OpenTelemetry do Serviço de Aplicativo, primeiro remova a instrumentação manual do OpenTelemetry do seu código.

Telemetria em falta

Se a telemetria estiver faltando, siga estas etapas para confirmar se a autoinstrumentação está ativada corretamente.

Etapa 1: verificar a folha Application Insights no recurso do Serviço de Aplicativo

Confirme se a autoinstrumentação está habilitada na folha Application Insights no seu Recurso do Serviço de Aplicativo:

Captura de ecrã do separador Application Insights com ativar selecionado.

Etapa 2: confirme se as configurações do aplicativo estão corretas

Confirme se a configuração do ApplicationInsightsAgent_EXTENSION_VERSION aplicativo está definida como um valor de ~3 e se você APPLICATIONINSIGHTS_CONNECTION_STRING aponta para o recurso apropriado do Application Insights.

Captura de tela das Configurações do Aplicativo do Serviço de Aplicativo com as configurações disponíveis do Application Insights.

Etapa 3: Verificar o diagnóstico de autoinstrumentação e os logs de status

Navegue até /var/log/applicationinsights/ e abra status_*.json.

Confirme se AgentInitializedSuccessfully está definido como true e IKey se tem um iKey válido.

Aqui está um exemplo de arquivo JSON:

    "AgentInitializedSuccessfully":true,
            
    "AppType":"python",
            
    "MachineName":"c89d3a6d0357",
            
    "PID":"47",
            
    "IKey":"00000000-0000-0000-0000-000000000000",
            
    "SdkVersion":"1.0.0"

O applicationinsights-extension.log arquivo na mesma pasta pode mostrar outros diagnósticos úteis.

Aplicativos Django

Se o seu aplicativo usa o Django e está falhando ao iniciar ou usando configurações incorretas, certifique-se de definir a DJANGO_SETTINGS_MODULE variável de ambiente. Consulte a seção Instrumentação Django para obter detalhes.


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.

Para obter as últimas atualizações e correções de bugs, consulte as notas de versão. -->

Próximos passos