Health Check Path no App Service com Múltiplas Instâncias

Com mais de uma instância, o App Service já faz balanceamento de carga — mas, sem um Health Check Path configurado, ele só sabe se o processo está de pé, não se a aplicação está de fato respondendo. Uma instância travada (deadlock, pool de conexão esgotado) continua recebendo tráfego normalmente até você notar pelos logs — e por essa altura já é cliente reclamando.

Neste guia rápido você vai configurar um endpoint de health check, entender como o App Service decide remover uma instância de rotação e ajustar a tolerância a falhas via app setting.

Sumário

Pré-requisito: por que só faz sentido com 2+ instâncias

Com uma única instância, não existe pra onde redirecionar o tráfego — o health check ainda funciona (e reporta o status), mas não tem efeito prático de balanceamento. O ganho real do Health Check Path aparece a partir de 2 instâncias, quando o App Service passa a ter escolha de rota.

O que o endpoint de health check precisa fazer

O endpoint deve retornar HTTP 200 quando a aplicação está saudável, e qualquer coisa diferente (erro 4xx/5xx, timeout) quando não está. A recomendação é ir além de um “hello world” estático — validar dependências críticas de verdade, como a conexão com o banco:

# Exemplo conceitual de handler (pseudo-código), não literal de nenhum framework:
GET /health
  → testa conexão com o banco (timeout curto, ex: 2s)
  → testa dependência crítica (ex: cache)
  → 200 OK se tudo passou
  → 503 Service Unavailable se algo falhou

Evite, porém, checar dependências não-críticas nesse endpoint — se um serviço de terceiro não essencial cair e isso derrubar o health check de todas as instâncias, você tira a aplicação inteira do ar por uma dependência que talvez nem devesse bloquear o funcionamento.

Configurando via Azure CLI

az webapp config set \
    --name meuapp-prod \
    --resource-group rg-appservice-lab \
    --generic-configurations '{"healthCheckPath": "/health"}'

Não precisa de mais nada — a partir daqui, cada instância passa a ser testada nesse caminho periodicamente pelo próprio App Service, sem depender de um serviço de monitoramento externo.

Como o Health Check Path decide excluir uma instância

Cada instância é verificada individualmente. Depois de falhar pings consecutivos além do limite configurado, ela é marcada como não saudável e retirada da rotação de tráfego — sem afetar as instâncias saudáveis. Se a instância voltar a responder normalmente, ela reentra na rotação sozinha, sem precisar de intervenção manual.

Rede de segurança embutida: se todas as instâncias estiverem reportando falha ao mesmo tempo, o App Service não remove nenhuma — a plataforma parte do princípio de que um problema generalizado provavelmente não é culpa das instâncias, e prefere manter tráfego fluindo (mesmo degradado) a derrubar o site inteiro.

Ajustando a tolerância a falhas

Por padrão, uma instância precisa acumular 10 falhas consecutivas de ping antes de ser considerada não saudável. Pra aplicações mais sensíveis (ou mais tolerantes), esse número é ajustável via app setting, aceitando de 1 a 100:

az webapp config appsettings set \
    --name meuapp-prod \
    --resource-group rg-appservice-lab \
    --settings WEBSITE_HEALTHCHECK_MAXPINGFAILURES=4

Baixar esse número reage mais rápido a uma instância ruim, mas aumenta o risco de falso positivo (remover uma instância só porque teve uma lentidão pontual). Subir o número dá mais tolerância a picos passageiros, ao custo de deixar uma instância ruim recebendo tráfego por mais tempo.

Não existe valor certo universal pro Health Check Path — o ponto de partida razoável é o padrão (10 falhas) e ajustar só depois de observar o comportamento real da aplicação por alguns dias, em vez de adivinhar um número na primeira configuração.

Troubleshooting comum

SintomaCausaSolução
Instância nunca sai de rotação mesmo travadaSó 1 instância ativa (sem pra onde rotear)Health check só tem efeito de balanceamento com 2+ instâncias
Instância removida por engano em pico de tráfegoWEBSITE_HEALTHCHECK_MAXPINGFAILURES baixo demais pro perfil da aplicaçãoAumentar o valor ou otimizar o tempo de resposta do próprio endpoint
App inteiro fica instável quando uma dependência externa caiHealth check valida dependência não-críticaRestringir o endpoint só a dependências realmente essenciais
Health check retorna 200 mas app não funciona de verdadeEndpoint estático, sem checar dependências reaisImplementar verificação real de banco/cache no handler

Conclusão

Um Health Check Path bem calibrado transforma o App Service de “sempre manda tráfego pra qualquer instância viva” em “só manda tráfego pra quem está de fato funcionando” — e isso só custa um endpoint e uma linha de configuração. Combinado com o Auto Heal do artigo anterior, você fecha o ciclo: instância travada sai de rotação pelo health check, e o Auto Heal cuida de reciclar o processo problemático.

Referências oficiais

Interessado em saber mais sobre artigos relacionados ao Microsoft Azure CLIQUE AQUI

🚀 Vamos nos conectar?

Não perca nenhuma oportunidade! Cadastre-se nas minhas redes e no canal do YouTube para receber conteúdos de TI, Cloud, Azure, Kubernetes e DevOps em primeira mão.

Dica: No Facebook, todos os artigos do blog são publicados automaticamente. Vale a pena curtir!


💬 Dúvidas ou Problemas?

Com o intuito de ajudar a comunidade, caso você tenha dúvidas ou encontre problemas na execução dos comandos deste artigo, deixe um comentário abaixo. Responderei o mais breve possível!

Muito obrigado pela visita e até o próximo post!

Jefferson Castilho Especialista em Cloud & DevOps.

Este guia técnico é exclusivo do Blog do Castilho. Explore mais conteúdos sobre Cloud e DevOps.

 

Deixe uma resposta

Descubra mais sobre Blog do Castilho - Tecnologia | FinOps | DevOps | Cloud

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo