Logs
Chaîne de journalisation
Symfony (Monolog, JSON, niveau info) ──► sortie d'erreur du conteneur ──► Docker
│
Promtail (pch_promtail) ◄─────────────┘
│
Loki (pch_loki, rétention 1 an) ──► copie hors site sur l'esclave de secours
- En production, tous les journaux applicatifs de niveau info (requêtes, envois d'e-mails, événements métier) sont envoyés à Loki et conservés un an.
- Les erreurs partent aussi dans Sentry, avec le contexte qui les précède.
- Les journaux Docker locaux sont limités en taille (rotation 50 Mo × 5 par conteneur) ; Loki reste la référence.
- Un garde-fou (
loki-size-guard.sh, cron 04:30) surveille la taille du volume Loki.
Lire les journaux récents
cd ~/pch-sig
docker compose -f docker-compose.prod.yml logs --tail 100 backend
docker logs pch_backend --since 30m 2>&1 | grep -iE "error|exception|critical"
docker logs pch_traefik --since 1h 2>&1 | grep -i acme # certificats
Les journaux du backend sont en JSON : | grep '"level_name":"ERROR"' isole les erreurs.
Interroger Loki
Loki écoute sur 127.0.0.1:3100 du serveur de production. Depuis le poste d'administration, ouvrir un tunnel SSH puis interroger l'API ou Grafana :
ssh -L 3100:127.0.0.1:3100 pch-prod
curl -G -s http://127.0.0.1:3100/loki/api/v1/query_range \
--data-urlencode 'query={container="pch_backend"} |= "exception"' \
--data-urlencode 'limit=50'
Exemples de requêtes LogQL :
| Besoin | Requête |
|---|---|
| Erreurs du backend | {container="pch_backend"} |= "ERROR" |
| Envois d'e-mails | {container="pch_backend"} |= "SendEmailMessage" |
| Réponses de l'assistant | {container="pch_backend"} |= "Bemba: réponse" |
Journaux utiles par sujet
| Sujet | Où regarder |
|---|---|
| E-mails en échec | docker exec pch_backend php bin/console messenger:failed:show |
| Digest des plaintes | /var/log/plainte-digest.log (production) |
| Indexation de l'assistant | ~/assistant-indexer.log |
| Relais SMTP (KoboToolbox) | docker logs smtp_relay (production) : status=sent ou motif du refus |
| Sauvegardes de la préproduction | ~/backups/backup.log, ~/backups/gitlab-backup.log |
| Survey Solutions | ~/suso-healthcheck.log (préproduction) |
| Traefik, certificats | docker logs pch_traefik |
Journal d'audit applicatif
Les actions des utilisateurs (connexions, modifications, exports) sont tracées dans l'application : Administration → Audits. Voir le guide utilisateur, section Audit.