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
- Um Aplicativo de Contêiner do Azure existente. Para obter mais informações, confira Guia de Início Rápido: implantar seu primeiro aplicativo de contêiner usando o portal do Azure.
- CLI do Azure.
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 tabelaApplicationConsole
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 tabelaContainerAppConsoleLogs_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 deContainerAppConsoleLogs_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.