Compartilhar via


Log e métricas nos Aplicativos de Contêiner do Azure

Observação

Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.

O plano consumo e dedicado Standard será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.

Este artigo se aplica a:✅ Básico/Standard ✅ Enterprise

Ao fazer a transição dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure, você encontra recursos de observabilidade semelhantes, mas com algumas diferenças importantes. Este artigo destaca essas diferenças e explica como monitorar seus aplicativos nos Aplicativos de Contêiner do Azure.

Pré-requisitos

Logs

Configurar opções de log

Os Aplicativos de Contêiner do Azure permitem que você gerencie o registro em log no ambiente de Aplicativos de Contêiner do Azure.

Você pode armazenar logs no Azure Log Analytics e no Azure Monitor. Se você escolher o Azure Monitor, encontrará um menu de configurações de diagnóstico nas configurações de ambiente, semelhante ao dos Aplicativos Spring do Azure.

Quando você cria um ambiente com a CLI do Azure, conforme mostrado no exemplo a seguir, um workspace do Log Analytics gerado automaticamente é provisionado.

az containerapp env create \
    --resource-group MyResourceGroup \
    --name MyContainerappEnvironment \
    --location eastus2

Você também pode usar o seguinte comando para criar um ambiente com um workspace do Log Analytics existente:

az containerapp env create \
    --resource-group MyResourceGroup \
    --name MyContainerappEnvironment \
    --logs-workspace-id myLogsWorkspaceID \
    --logs-workspace-key myLogsWorkspaceKey \
    --location eastus2

Analisar logs

Os Aplicativos de Contêiner do Azure permitem que você transmita logs do console de contêiner. A lista a seguir descreve as principais diferenças no registro em log:

  • Logs de console: para logs de console, consulte a tabela ContainerAppConsoleLogs_CL nos Aplicativos de Contêiner do Azure em vez da tabela ApplicationConsole usada nos Aplicativos Spring do Azure.

  • Logs do sistema: os Aplicativos Spring do Azure fornece SystemLogs para o Config Server, o Registro de Serviço, o Portal de API, o Serviço de Configuração de Aplicativos e o Gateway do Spring Cloud. Nos Aplicativos de Contêiner do Azure, você precisa provisionar esses componentes como aplicativos separados e consultar seus logs na tabela ContainerAppConsoleLogs_CL, especificando o nome de cada aplicativo em sua consulta.

  • Logs de build: ao contrário dos Aplicativos Spring do Azure, os logs de builds locais com Buildpacks Paketo não estão disponíveis nos Aplicativos de Contêiner do Azure.

Exibir logs

Por padrão, os Aplicativos de Contêiner do Azure enviam logs diretamente para o Azure Log Analytics. No entanto, se você optar por armazenar logs no Azure Monitor, os nomes de tabela e coluna poderão ser diferentes. No Azure Monitor, os nomes de tabela e coluna não incluem sufixos. Por exemplo, use ContainerAppConsoleLogs em vez de ContainerAppConsoleLogs_CL e Log em vez de Log_s ao criar consultas para logs armazenados no Azure Monitor.

Para exibir logs de console nos Aplicativos de Contêiner do Azure, use a seguinte consulta como exemplo:

ContainerAppConsoleLogs_CL
| limit 50

O Log Analytics do Azure está em execução com um mecanismo Kusto para que você possa consultar seus logs para análise. Para obter uma introdução aos logs de consulta usando o Kusto, consulte o tutorial do Log Analytics.

Logs de Aplicativo CCF

Para examinar uma lista de logs de aplicativos, classificados por tempo com os logs mais recentes mostrados primeiro, use a seguinte consulta:

ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| sort by TimeGenerated desc

Mostrar entradas de logs contendo erros ou exceções

Para examinar as entradas de log não classificadas que mencionam um erro ou uma exceção, execute a seguinte consulta:

ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| where Log_s contains "error" or Log_s contains "exception"

Use essa consulta para localizar erros ou modificar os termos da consulta para localizar códigos de erro ou exceções específicas.

Mostrar o número de erros e exceções relatados pelo seu aplicativo na última hora

Para criar um gráfico de pizza que exibe o número de erros e exceções registrados pelo seu aplicativo na última hora, execute a seguinte consulta:

ContainerAppConsoleLogs_CL
| where TimeGenerated > ago(1h)
| where Log_s contains "error" or Log_s contains "exception"
| summarize count_per_app = count() by ContainerAppName_s
| sort by count_per_app desc
| render piechart

Mostrar os logs do Spring Cloud Gateway

Para examinar as entradas de log para logs do Spring Cloud Gateway, use a seguinte consulta:

ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudGateway"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100

Mostrar logs do Servidor Eureka

Para examinar as entradas de log para logs do Servidor Eureka, use a seguinte consulta:

ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudEureka"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100

Métricas

As tabelas a seguir mapeiam as métricas entre os Aplicativos Spring do Azure e os Aplicativos de Contêiner do Azure:

Comum

Nome da métrica dos Aplicativos Spring do Azure Nome da métrica dos Aplicativos de Contêiner do Azure
Uso da CPU do aplicativo N/A
Uso de memória do aplicativo N/A
Entrada da rede de aplicativos N/A
Saída da rede de aplicativos N/A

Métricas de erro

Nome da métrica dos Aplicativos Spring do Azure Nome da métrica dos Aplicativos de Contêiner do Azure
tomcat.global.error N/A

Métricas de desempenho

Nome da métrica dos Aplicativos Spring do Azure Nome da métrica dos Aplicativos de Contêiner do Azure
system.cpu.usage Percentual de uso da CPU (versão prévia)
process.cpu.usage N/A
Uso de memória do aplicativo N/D
jvm.memory.committed jvm.memory.committed
jvm.memory.used jvm.memory.used
jvm.memory.max N/D
Métricas de JVM adicionais N/A

Métricas de desempenho do .NET

Nome da métrica dos Aplicativos Spring do Azure Nome da métrica dos Aplicativos de Contêiner do Azure
Uso da CPU Percentual de uso da CPU (versão prévia)
Conjunto de trabalho Bytes de conjunto de trabalho de memória
Tamanho do Heap do GC N/A
Contagem de Geração 0 GC N/A
Métricas Adicionais do GC N/A

Métricas de solicitação

Nome da métrica dos Aplicativos Spring do Azure Nome da métrica dos Aplicativos de Contêiner do Azure
tomcat.global.sent N/A
tomcat.global.request.total.count Requests

Métricas de solicitação do .NET

Nome da métrica dos Aplicativos Spring do Azure Nome da métrica dos Aplicativos de Contêiner do Azure
Solicitações por segundo N/A
Total de solicitações Solicitações

Métricas de sessão

Nome da métrica dos Aplicativos Spring do Azure Nome da métrica dos Aplicativos de Contêiner do Azure
tomcat.sessions.active.max N/D
tomcat.sessions.alive.max N/D

Métricas Java para aplicativos Java nos Aplicativos de Contêiner do Azure

Se você escolher Java como a pilha de desenvolvimento para Aplicativos de Contêiner do Azure, o monitoramento das métricas da Máquina Virtual Java (JVM) é essencial para garantir a integridade e o desempenho de seus aplicativos. Para obter mais informações, confira Métricas para Java de aplicativos Java nos Aplicativos de Contêiner do Azure.

Componentes gerenciados

Para dados de monitoramento de componentes gerenciados, consulte os seguintes artigos:

Integração

Os Aplicativos de Contêiner do Azure oferecem vários recursos internos de observabilidade para ajudá-lo a monitorar e diagnosticar o estado do aplicativo. No entanto, se você quiser usar o Azure Monitor Application Insights ou outros agentes do monitoramento de desempenho de aplicativos (APM), será necessário adicionar instrumentação ao código do aplicativo.

Integrar com o monitoramento de desempenho do aplicativo

Para obter a integração com o Azure Monitor Application Insights ou outras APMs, consulte Integrar o monitoramento de desempenho do aplicativo em imagens de contêiner.

Agentes OpenTelemetry (versão prévia)

Você pode enviar dados de observabilidade em um formato OpenTelemetry para destinos como o Azure Monitor Application Insights, o Datadog ou qualquer ponto de extremidade compatível com OTLP usando um agente de dados OpenTelemetry com seu ambiente de Aplicativos de Contêiner do Azure. O agente gerenciado simplifica a configuração permitindo que você altere os pontos de extremidade de destino sem executar manualmente ou reconfigurar o agente. Para configurá-lo, configure o agente em seu ambiente de contêiner usando modelos do ARM, Bicep ou a CLI do Azure e prepare seu aplicativo instalando o SDK do OpenTelemetry e instrumentando seu código para métricas, logs ou rastreamentos. Certifique-se de configurar o serviço de destino com antecedência, como o Application Insights. Cada destino tem requisitos específicos e o agente envia dados somente se configurado e instrumentado corretamente. Para obter mais informações, consulte Coletar e ler dados OpenTelemetry nos Aplicativos de Contêiner do Azure.

Painéis e alertas personalizados

Quando você implanta aplicativos nos Aplicativos de Contêiner do Azure, seus painéis personalizados podem contar com duas abordagens diferentes de fornecimento de dados:

  • Agentes do APM integrados ao aplicativo: se você integrou agentes do APM de terceiros ao seu aplicativo durante o processo de build, esses agentes enviarão métricas e logs diretamente para a plataforma APM. Nesse caso, enquanto o código do aplicativo permanecer inalterado, você não precisará modificar seus painéis.

  • Painéis baseados no Azure Monitor: se os painéis usarem métricas e logs do Azure Monitor, por exemplo, por meio da API do Application Insights, dos Hubs de Eventos do Azure ou do Armazenamento do Azure, talvez seja necessário atualizá-los para refletir nomes de métrica, namespaces ou estruturas de log específicas dos Aplicativos de Contêiner do Azure. Examine e atualize seus painéis com base em mapeamentos de métrica e estruturas de dados específicas dos Aplicativos de Contêiner do Azure.

Verifique cuidadosamente as configurações do painel para garantir que elas permaneçam precisas após a transição para os Aplicativos de Contêiner do Azure.

Solucionar problemas

Os Aplicativos de Contêiner do Azure não fornecem uma API para gerar um despejo de heap ou um despejo de thread para aplicativos Java. Para criar esses despejos, você precisa se conectar ao aplicativo de contêiner por meio do console. Em seguida, use os comandos jmap ou jstack para gerar os arquivos de despejo dentro do contêiner. Depois disso, copie os arquivos gerados para o computador local para análise adicional.

Você também pode usar o comando jcmd para executar a mesma operação e iniciar o Java Flight Recorder (JFR) em um aplicativo em execução. Para obter mais informações sobre como acessar o aplicativo de contêiner por meio do console, consulte Conectar-se a um console de contêiner nos Aplicativos de Contêiner do Azure.

Limitações conhecidas

  • Logs estruturados: os Aplicativos de Contêiner do Azure não dão suporte a logs de aplicativos estruturados. Se os logs de aplicativo seguirem o esquema dos Aplicativos Spring do Azure, a cadeia de caracteres JSON completa aparecerá na Log_s coluna de ContainerAppConsoleLogs_CL.
  • Logs de entrada: embora os Aplicativos Spring do Azure tenha logs de acesso de entrada internos, os Aplicativos de Contêiner do Azure não. Você precisa implementar o log de acesso no código do aplicativo para capturar esses dados.
  • Os Aplicativos de Contêiner do Azure não fornecem eventos de ciclo de vida do aplicativo.
  • Os Aplicativos de Contêiner do Azure não têm suporte interno para métricas de entrada. Você precisa implementar o acompanhamento personalizado em seus aplicativos.