Monitorar logs nos Aplicativos de Contêiner do Azure com o Log Analytics

Os Aplicativos de Contêiner do Azure são integrados ao Log Analytics do Azure Monitor para monitorar e analisar os logs do aplicativo de contêiner. Quando selecionado como a solução de monitoramento de logs, o seu ambiente de Aplicativos de Contêiner inclui um workspace do Log Analytics que fornece um local comum para armazenar o sistema e os dados de log do aplicativo de todos os aplicativos contêiner em execução no ambiente.

As entradas de log podem ser acessadas consultando tabelas do Log Analytics por meio do portal do Azure ou de um shell de comando usando a CLI do Azure.

Há dois tipos de logs para Aplicativos de Contêiner.

  • Logs de console, que são emitidos pelo seu aplicativo.
  • Logs do sistema, que são emitidos pelo serviço Aplicativos de Contêiner.

Logs do sistema

O serviço Aplicativos de Contêiner fornece mensagens de log do sistema no nível do aplicativo de contêiner. Os logs do sistema emitem as seguintes mensagens:

Origem Tipo Message
Dapr Informações Nome do componente dapr <component-name> criado com êxito com escopo <dapr-component-scope>
Dapr Informações Nome do componente dapr <component-name> atualizado com êxito com escopo <component-type>
Dapr Erro Erro ao criar o nome do componente dapr <component-name>
Montagens de volume Informações Volume <volume-name> montado com êxito para a revisão <revision-scope>
Montagens de volume Erro Erro ao montar volume <volume-name>
Associação de domínio Informações Domínio associado com êxito o Domínio <domain> ao <nome de aplicativo de contêiner> do aplicativo de contêiner
Autenticação Informações Autenticação habilitada no aplicativo. Criar configuração de autenticação
Autenticação Informações Configuração de autenticação criada com êxito
Peso do tráfego Informações Definir um peso de tráfego de <percentual>% para a revisão <revision-name\>
Provisionamento de revisão Informações Criar uma nova revisão: <revision-name>
Provisionamento de revisão Informações Revisão <name> provisionada com êxito
Provisionamento de revisão Informações Desativar revisões antigas desde 'ActiveRevisionsMode=Single'
Provisionamento de revisão Erro Erro ao provisionar a revisão <revision-name>. ErrorCode: <[ErrImagePull]|[Timeout]|[ContainerCrashing]>

Os dados de log do sistema podem ser acessados consultando a tabela ContainerAppSystemLogs_CL. As colunas específicas de Aplicativos de Contêiner mais usadas na tabela são:

Coluna Descrição
ContainerAppName_s Nome do aplicativo de contêiner
EnvironmentName_s Nome do ambiente dos Aplicativos de Contêiner
Log_s Mensagem de log
RevisionName_s Nome da revisão

Logs do console

Os logs de console são originados das mensagens stderr e stdout dos contêineres em seu aplicativo de contêiner e sidecars da Dapr. Você pode exibir logs de console consultando a tabela ContainerAppConsoleLogs_CL.

Dica

Instrumentar seu código com mensagens de log bem definidas pode ajudá-lo a entender como o código está sendo executado e a depurar problemas. Para saber mais sobre as práticas recomendadas, consulte Design para operações.

As colunas específicas dos Aplicativos de Contêiner mais usadas em ContainerAppConsoleLogs_CL incluem:

Coluna Descrição
ContainerAppName_s Nome do aplicativo de contêiner
ContainerGroupName_g Nome da réplica
ContainerId_s Identificador do contêiner
ContainerImage_s Nome da imagem de contêiner
EnvironmentName_s Nome do ambiente dos Aplicativos de Contêiner
Log_s Mensagem de log
RevisionName_s Nome da revisão

Consultar logs com o Log Analytics

O Log Analytics é uma ferramenta no portal do Azure que você pode usar para exibir e analisar dados de log. Usando o Log Analytics, você pode escrever consultas Kusto e classificar, filtrar e visualizar os resultados em gráficos para detectar tendências e identificar problemas. É possível trabalhar interativamente com os resultados de suas consultas ou usá-las com outros recursos, como alertas, painéis e pastas de trabalho.

Portal do Azure

Inicie o Log Analytics a partir de Logs no menu da barra lateral na página do aplicativo de contêiner. Você também pode iniciar o Log Analytics em Monitor>Logs.

Você pode consultar os logs usando as tabelas listadas na guia Tabelas da categoria CustomLogs. As tabelas nessa categoria são as tabelas ContainerAppSystemlogs_CL e ContainerAppConsoleLogs_CL.

Screenshot of the Log Analytics custom log tables.

Abaixo está um exemplo de uma consulta Kusto que exibe entradas de log de console para o aplicativo de contêiner chamado album-api.

ContainerAppConsoleLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s
| take 100

Abaixo está um exemplo de uma consulta Kusto que exibe entradas de log de sistema para o aplicativo de contêiner chamado album-api.

ContainerAppSystemLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, EnvName=EnvironmentName_s, AppName=ContainerAppName_s, Revision=RevisionName_s, Message=Log_s
| take 100

Para obter mais informações sobre o Log Analytics e consultas de log, confira o tutorial do Log Analytics.

CLI do Azure/PowerShell

Os logs dos Aplicativos de Contêiner podem ser consultados usando a CLI do Azure.

Estes exemplos de consultas da CLI do Azure geram uma tabela que contém registros de log para o nome do aplicativo de contêiner album-api. As colunas de tabela são especificadas pelos parâmetros após o operador project. A variável $WORKSPACE_CUSTOMER_ID contém o GUID do workspace do Log Analytics.

Este exemplo consulta a tabela ContainerAppConsoleLogs_CL:

az monitor log-analytics query --workspace $WORKSPACE_CUSTOMER_ID --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'album-api' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s, LogLevel_s | take 5" --out table

Este exemplo consulta a tabela ContainerAppSystemLogs_CL:

az monitor log-analytics query --workspace $WORKSPACE_CUSTOMER_ID --analytics-query "ContainerAppSystemLogs_CL | where ContainerAppName_s == 'album-api' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Message=Log_s, LogLevel_s | take 5" --out table

Próximas etapas