Hoje é muito simples e rápido subir um workload no Azure. Com qualquer artigo e how-to por aí é possível – em questão de minutos – ter algo rodando na nuvem.

Normalmente este é um motivo de alegria, que se transforma em algo desafiador logo no primeiro problema. Não ter acesso ao ambiente de execução com uma certa liberdade torna as atividades de análise e diagnóstico mais complicadas.

O objetivo deste artigo é apresentar algumas maneiras de investigar possíveis problemas em app services publicados no Azure.

Abordagens

Temos algumas maneiras de realizar as investigações de um app service, desde utilizando interface de maneira intuitiva até ferramentas avançadas.

A primeira abordagem é através do menu Diagnose and solve problems. Como o nome mesmo diz, esta funcionalidade permite realizar uma análise macro sobre qualquer problema que possa ter sido percebido.

Menu Diagnose and solve problems

Em qualquer investigação precisamos entender o que está acontecendo com alguns indicadores básicos. Uma vez na página de Diagnose and solve problems é possível acessar a seção Diagnostic Tools:

Página Diagnostic Tools

Dentro do grupo Support Tools, os itens de métricas (Metrics per Instance (Apps) e (App Service Plan) podem ajudar a entender alguns comportamentos.

É possível por exemplo visualizar as coleções do GC, o consumo de CPU, threads, entre outras informações:

Métricas de limpezas realizadas na geração 0, 1 e 2 pelo GC

“Descendo o nível”, uma boa opção é a Proactive CPU Monitoring. Se trata de um conjunto de ações para realizar dado um determinado comportamento de consumo de CPU.

Uma vez que estas características estejam ocorrendo, um dump será gerado e você poderá investigar tudo que quiser através dele.

Em um aplicação de testes, realizei a configuração para extrair um dump caso a CPU estivesse com consumo maior que 75% por mais de 30 segundos.

Assim que as exigências foram atendidas, o dump foi gerado.

Basta agora realizar a análise do dump utilizando a ferramenta de preferência, como por exemplo WinDBG:

WinDBG analisando dump gerado pelo portal do Azure

Notem que a geração do dump foi feita através do procdump.exe. Você também pode executar este comando através do menu Development Tools do seu app service.

Menu Development Tools no seu app service

Ao acessar o Kudu (Advanced Tools), você tem acesso a configurações, informações e ambiente de execução do seu aplicativo.

Todas as ferramentas do Sysinternals estão disponíveis. Para executar um procdump, por exemplo, basta acessar o Debug Console e chamar o executável:

Advanced Tools (Kudu) executando o procdump no Debug Console

Conclusão

É muito comum encontrar pessoas que estão começando a utilizar PaaS com a preocupação da falta de controle sobre o ambiente de execução.

Porém, o Azure permite que você tenha acesso a ferramentas comuns de análise e investigação para que suas atividades de troubleshooting possam ser executadas normalmente.

Como o artigo é superfial, qualquer dúvida adicional por favor entrem em contato.

Abraços, até a próxima!