Log e métricas em aplicativos de contêiner do Azure
Nota
Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.
O plano de consumo padrão e dedicado 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 obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.
Este artigo aplica-se a:✅ Basic/Standard ✅ Enterprise
Ao fazer a transição do Azure Spring Apps para o Azure Container Apps, 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, veja o Início Rápido: implementar a primeira aplicação de contentor com o portal do Azure.
- CLI do Azure.
Registos
Configurar opções de registro em log
As Aplicações de Contentor do Azure permitem-lhe gerir o registo no ambiente das Aplicações de Contentor 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 do Azure Spring Apps.
Quando você cria um ambiente com a CLI do Azure, conforme mostrado no exemplo a seguir, um espaço de trabalho 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 espaço de trabalho existente do Log Analytics:
az containerapp env create \
--resource-group MyResourceGroup \
--name MyContainerappEnvironment \
--logs-workspace-id myLogsWorkspaceID \
--logs-workspace-key myLogsWorkspaceKey \
--location eastus2
Analisar registos
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:
Logs de console: para logs de console, consulte a
ContainerAppConsoleLogs_CL
tabela em Aplicativos de Contêiner do Azure em vez da tabela usada em Aplicativos de primavera doApplicationConsole
Azure.Logs do sistema: o Azure Spring Apps fornece
SystemLogs
o Config Server, o Service Registry, o API Portal, o Application Configuration Service e o Spring Cloud Gateway. Nos Aplicativos de Contêiner do Azure, você precisa provisionar esses componentes como aplicativos separados e consultar seus logs na tabela, especificando oContainerAppConsoleLogs_CL
nome de cada aplicativo em sua consulta.Logs de compilação: os logs de compilação de compilações locais com Paketo Buildpacks não estão disponíveis nos Aplicativos de Contêiner do Azure, o que difere dos Aplicativos de primavera do Azure.
Ver registos
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 podem 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
criar consultas para logs armazenados no Azure Monitor.
Para exibir os logs do console nos Aplicativos de Contêiner do Azure, use a seguinte consulta como exemplo:
ContainerAppConsoleLogs_CL
| limit 50
O Azure Log Analytics é executado com um mecanismo Kusto para que você possa consultar seus logs para análise. Para obter uma introdução à consulta de logs usando o Kusto, consulte o tutorial do Log Analytics.
Mostrar logs de aplicativos
Para revisar 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 log contendo erros ou exceções
Para revisar entradas de log não ordenadas que mencionam um erro ou exceção, use 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 esta consulta para localizar erros ou modifique os termos de consulta para localizar códigos de erro ou exceções específicos.
Mostrar o número de erros e exceções relatados pelo seu aplicativo na última hora
Para criar um gráfico de pizza que exiba o número de erros e exceções registrados pelo seu aplicativo na última hora, use 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 logs do Spring Cloud Gateway
Para revisar 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 registos do Eureka Server
Para rever as entradas de registo dos registos do Eureka Server, utilize 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 métricas entre os Aplicativos Azure Spring e os Aplicativos de Contêiner do Azure:
Comum
Nome da métrica Azure Spring Apps | Nome da métrica dos Aplicativos de Contêiner do Azure |
---|---|
Utilização da CPU da Aplicação | N/A |
Utilização da Memória da Aplicação | N/A |
Rede de aplicativos em | N/A |
Saída de rede de aplicativos | N/A |
Métricas de erro
Nome da métrica Azure Spring Apps | Nome da métrica dos Aplicativos de Contêiner do Azure |
---|---|
tomcat.global.error |
N/A |
Métricas de desempenho
Nome da métrica Azure Spring Apps | Nome da métrica dos Aplicativos de Contêiner do Azure |
---|---|
system.cpu.usage |
Percentagem de Utilização da CPU (Pré-visualização) |
process.cpu.usage |
N/A |
Utilização da Memória da Aplicação | N/A |
jvm.memory.committed |
jvm.memory.committed |
jvm.memory.used |
jvm.memory.used |
jvm.memory.max |
N/A |
Métricas JVM adicionais | N/A |
Métricas de desempenho do .NET
Nome da métrica Azure Spring Apps | Nome da métrica dos Aplicativos de Contêiner do Azure |
---|---|
Utilização da CPU | Percentagem de Utilização da CPU (Pré-visualização) |
Conjunto de trabalho | Bytes do conjunto de trabalho de memória |
Tamanho da pilha GC | N/A |
Contagem de GC Gen 0 | N/A |
Métricas GC adicionais | N/A |
Métricas de solicitação
Nome da métrica Azure Spring Apps | Nome da métrica dos Aplicativos de Contêiner do Azure |
---|---|
tomcat.global.sent |
N/A |
tomcat.global.request.total.count |
Pedidos do |
Métricas de solicitação .NET
Nome da métrica Azure Spring Apps | Nome da métrica dos Aplicativos de Contêiner do Azure |
---|---|
Pedidos por segundo | N/A |
Total de pedidos | Pedidos do |
Métricas de sessão
Nome da métrica Azure Spring Apps | Nome da métrica dos Aplicativos de Contêiner do Azure |
---|---|
tomcat.sessions.active.max |
N/A |
tomcat.sessions.alive.max |
N/A |
Métricas Java para aplicativos Java em 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 Java Virtual Machine (JVM) será essencial para garantir a integridade e o desempenho de seus aplicativos. Para obter mais informações, consulte Métricas Java para aplicativos Java em Aplicativos de Contêiner do Azure.
Componentes geridos
Para obter 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 seu aplicativo. No entanto, se você quiser usar o Azure Monitor Application Insights ou outros agentes de monitoramento de desempenho de aplicativo (APM), precisará adicionar instrumentação ao código do aplicativo.
Integre com o monitoramento de desempenho do aplicativo
Para a integração com o Azure Monitor Application Insights ou outros APMs, consulte Integrar o monitoramento de desempenho do aplicativo em imagens de contêiner.
Agentes OpenTelemetry (visualização)
Você pode enviar dados de observabilidade em um formato OpenTelemetry para destinos como Azure Monitor Application Insights, 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 ou reconfigurar manualmente o agente. Para configurá-lo, configure o agente em seu ambiente de contêiner usando modelos ARM, Bíceps 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 em Aplicativos de Contêiner do Azure.
Painéis e alertas personalizados
Quando você implanta aplicativos em Aplicativos de Contêiner do Azure, seus painéis personalizados podem contar com duas abordagens diferentes de fornecimento de dados:
Agentes APM integrados ao aplicativo: se você integrou agentes APM de terceiros em seu aplicativo durante o processo de compilação, esses agentes enviam métricas e logs diretamente para a plataforma APM. Nesse caso, desde que o código do aplicativo permaneça inalterado, você não precisará modificar seus painéis.
Painéis baseados no Azure Monitor: se seus painéis usarem métricas e logs do Azure Monitor - por exemplo, por meio da API do Application Insights, Hubs de Eventos do Azure ou Armazenamento do Azure - talvez seja necessário atualizá-los para refletir nomes de métricas, namespaces ou estruturas de log específicos dos Aplicativos de Contêiner do Azure. Certifique-se de revisar e atualizar seus painéis com base em mapeamentos de métricas e estruturas de dados específicos 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.
Resolver problemas
Os Aplicativos de Contêiner do Azure não fornecem uma API para gerar um despejo de pilha ou despejo de thread para aplicativos Java. Para criar esses dumps, você precisa se conectar ao aplicativo de contêiner por meio do console. Em seguida, use o jmap
comando ou jstack
para gerar os arquivos de despejo dentro do contêiner. Depois disso, copie os arquivos gerados para sua máquina local para análise posterior.
Você também pode usar o comando para executar a mesma operação e iniciar o jcmd
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 em Aplicativos de Contêiner do Azure.
Limitações conhecidas
- Logs estruturados: os Aplicativos de Contêiner do Azure não oferecem suporte a logs de aplicativos estruturados. Se os logs do aplicativo seguirem o esquema do Azure Spring Apps, a cadeia de caracteres JSON completa aparecerá na
Log_s
coluna deContainerAppConsoleLogs_CL
. - Logs de ingresso: enquanto o Azure Spring Apps tem logs de acesso de entrada internos, o Azure Container Apps 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 do 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.