Monitorização
Controlos de saúde
| Controlo | Comando ou endereço | Esperado |
|---|---|---|
| API | https://bemba.ucp-pch.org/api/health | 200 |
| Aplicação | https://bemba.ucp-pch.org/ | 200 |
| Documentação | https://docubemba.ucp-pch.org/ | 200 |
| Contentores | docker ps --format '{{.Names}}\t{{.Status}}' | todos Up, healthy quando existe um controlo |
| Fila de e-mails | docker exec pch_backend php bin/console messenger:failed:show | vazia |
| Espaço em disco | df -h / | menos de 80 % |
| Memória | free -m | « available » confortável |
A partir do contentor (sem passar pelo Traefik):
docker exec pch_backend curl -s http://127.0.0.1:8000/api/health
Métricas
A produção inclui exportadores Prometheus, ligados a 127.0.0.1 (não expostos na Internet):
| Exportador | Porta | Mede |
|---|---|---|
| cAdvisor | 8080 | processador, memória, rede por contentor |
| node-exporter | 9100 | sistema (disco, carga, memória) |
| postgres-exporter | 9187 | base pch_sig (ligações, tamanho, bloqueios) |
| redis-exporter | 9121 | cache |
O Prometheus e o Grafana não correm nos servidores: executam-se no posto de administração (pasta monitoring/ do repositório, Grafana na porta 3001). Para chegarem aos exportadores, abrir túneis SSH:
ssh -N -L 8080:127.0.0.1:8080 -L 9100:127.0.0.1:9100 -L 9187:127.0.0.1:9187 \
-L 9121:127.0.0.1:9121 -L 3100:127.0.0.1:3100 pch-prod
e depois apontar os alvos de monitoring/prometheus/prometheus.yml para localhost e a fonte Loki do Grafana para http://localhost:3100.
A configuração Prometheus do repositório ainda aponta para os endereços públicos dos servidores, que já não respondem desde que as portas estão ligadas a 127.0.0.1. Passar pelos túneis acima.
Erros da aplicação
O Sentry recebe os erros do frontend e do backend, com o contexto. É o primeiro sítio a ver depois de um problema comunicado por um utilizador.
Pontos de atenção
| Sinal | Causa frequente | Ação |
|---|---|---|
Todos os pedidos em 500 logo após um cache:clear | cache recriada por root | recriar o contentor backend (ver Resolução de problemas) |
https://… mostra um certificado « TRAEFIK DEFAULT CERT » | DNS ausente no momento do pedido | verificar o DNS e depois docker restart pch_traefik |
Fila failed a crescer | SMTP OVH indisponível ou palavra-passe alterada | ver Configuração, secção E-mails |
| Disco cheio | registos, imagens Docker | docker image prune -f, docker builder prune -af |
| KoboToolbox em 502 (pré-produção) | arranque em curso (vários minutos) | esperar, depois docker ps --filter name=kobofe |
| Survey Solutions parado | relançado automaticamente por check-suso.sh a cada 5 minutos | ler ~/suso-healthcheck.log |