1. La Stack Réelle (pas de Prometheus, pas d’ELK)
Le monitoring du serveur repose sur 4 briques légères, choisies pour tourner sur un
Lightsail à RAM limitée (chaque service a un mem_limit strict) :
┌─────────────────────────────────────────────────────────────────┐
│ MONITORING RÉEL │
│ │
│ LOGS TEMPS RÉEL MÉTRIQUES SYSTÈME │
│ ┌──────────────┐ ┌──────────────┐ ┌───────────────┐ │
│ │ Dozzle │ │ Beszel Hub │◄──│ Beszel Agent │ │
│ │ port 9999 │ │ port 8090 │ │ (host network)│ │
│ │ (docker.sock │ │ CPU/RAM/disk │ │ collecte les │ │
│ │ read-only) │ │ + containers │ │ métriques │ │
│ └──────────────┘ └──────────────┘ └───────────────┘ │
│ │
│ LOGS CENTRALISÉS (historique + recherche) │
│ ┌───────────┐ ┌────────┐ ┌─────────────┐ │
│ │ Promtail │───►│ Loki │───►│ Grafana │ │
│ │ (collecte │ │ (3100 │ │ port 3000 │ │
│ │ les logs │ │ interne)│ │ (dashboards)│ │
│ │ Docker) │ └────────┘ └─────────────┘ │
│ └───────────┘ │
│ │
│ UIs SPÉCIALISÉES │
│ Kafka UI (8091) · RabbitMQ Mgmt (15672) · RedisInsight (5540) │
│ Adminer (9093) · pgAdmin (5050) · Mongoku (stack clarajob) │
└─────────────────────────────────────────────────────────────────┘
|
Il n’y a ni Prometheus, ni AlertManager, ni ELK (Elasticsearch/Logstash/Kibana) dans ce projet. Les rôles équivalents sont tenus par : Beszel (métriques), Loki+Promtail (logs), Grafana (visualisation), Dozzle (logs live). |
2. Dozzle — Logs Docker Temps Réel
Container |
|
Accès |
|
Principe |
Lit |
RAM |
40 Mo max |
Quand l’utiliser : premier réflexe pour « qu’est-ce qui se passe LÀ maintenant ? » — suivre un déploiement en live, voir un crash au démarrage, chercher une stack trace récente.
Utilisation : ouvrir la page → liste de tous les containers → cliquer un container → logs en streaming, recherche plein texte, split-screen multi-containers.
Limite : pas d’historique après rotation des logs → pour l’historique, utiliser Grafana/Loki.
3. Beszel — Métriques Système et Containers
Containers |
|
Accès |
|
Premier login |
Créer le compte admin à la première connexion |
Liaison hub↔agent |
Clé |
RAM |
hub 100 Mo, agent 50 Mo |
Ce que tu y vois : CPU, RAM, disque, réseau du serveur + consommation par container, avec historique et graphes. C’est l’outil pour répondre à « pourquoi le serveur rame ? » et « quel container mange la RAM ? ».
Alertes : Beszel permet de configurer des alertes (seuils CPU/RAM/disque) depuis son UI, par système surveillé.
4. Loki + Promtail + Grafana — Logs Centralisés
|
|
|
|
|
|
Quand l’utiliser : recherche dans l’historique des logs, corrélation entre services, investigation post-mortem (« que s’est-il passé cette nuit à 3h ? »).
Requêtes LogQL utiles (Grafana → Explore → datasource Loki) :
# Tous les logs d'un container
{container="clarajob-front-api"}
# Erreurs sur tous les containers
{job=~".+"} |= "ERROR"
# Erreurs de l'API ClaraJob sur la dernière heure
{container="clarajob-front-api"} |= "ERROR"
# Exceptions Java avec stack trace
{container="marketisia-front-api"} |~ "Exception|Caused by"
# Logs des backups Ansible (si collectés via le host)
{container=~"clarajob-ddl|clarajob-mongo"} |= "dump"
5. UIs Spécialisées par Technologie
| Outil | Container | Accès | Sert à |
|---|---|---|---|
Kafka UI |
|
port |
Topics, offsets, consumer lag, brokers — et produire un message manuellement (Topics → Produce Message) |
RabbitMQ Management |
|
port |
Queues, exchanges, connexions — et publier un message (login |
RedisInsight |
|
port |
Explorer les clés Redis, monitoring. Connexion : |
Adminer |
|
port |
Requêtes SQL rapides sur PostgreSQL (clarajob-ddl, marketisia-ddl, auth_server_db) |
pgAdmin |
|
port |
Administration PostgreSQL avancée (serveurs pré-provisionnés via |
Mongoku |
|
voir compose clarajob_sa |
Explorer MongoDB ClaraJob |
Semaphore |
|
port |
Lancer les playbooks Ansible depuis le navigateur (backup/restore/deploy) |
Rundeck |
|
port |
Alternative à Semaphore : workflows, RBAC, scheduler (⚠️ ~1 Go RAM) |
6. Quel Outil pour Quel Problème ?
| Situation | Outil |
|---|---|
« L’appli vient de crasher, je veux voir pourquoi » |
Dozzle (logs live) |
« Le serveur est lent depuis ce matin » |
Beszel (CPU/RAM/disque par container) |
« Que s’est-il passé cette nuit à 3h ? » |
Grafana/Loki (historique des logs) |
« Les messages Kafka sont-ils consommés ? » |
Kafka UI (consumer lag) |
« Je veux tester un message dans la queue » |
Kafka UI / RabbitMQ Management (produce/publish) |
« Cette clé est-elle en cache ? » |
RedisInsight |
« Vérifier une donnée en base » |
Adminer (rapide) / pgAdmin (avancé) / Mongoku (Mongo) |
« Lancer un backup sans terminal » |
Semaphore (UI Ansible) |
« Le backup de cette nuit a-t-il tourné ? » |
SSH : |
7. Démarrer / Redémarrer le Monitoring
# Sur le serveur, depuis /home/admin/app/sever-admin :
docker compose up -d # tout le stack infra
docker compose -f docker-compose.monitoring.yml up -d # Dozzle + Beszel + RedisInsight
docker compose -f docker-compose.observability.yml up -d # Loki + Promtail + Grafana
docker compose restart grafana # un seul service
# Via Ansible depuis ton poste (seul dozzle a une cible make deploy) :
make deploy APP=dozzle
8. Vérifications de Santé Régulières
ssh -i ~/.ssh/serverAdminSSHKeypair.pem admin@18.158.207.98
# Les services de monitoring tournent-ils ?
docker ps --format 'table {{.Names}}\t{{.Status}}' | \
grep -E "dozzle|beszel|loki|promtail|grafana|redisinsight"
# Healthchecks intégrés (loki et grafana en ont)
docker inspect --format '{{.State.Health.Status}}' loki grafana
# Espace disque (Loki et les dumps DB remplissent le disque avec le temps)
df -h /
du -sh /var/lib/docker/volumes/*loki* 2>/dev/null
9. Checklist Monitoring Après un Déploiement
□ Dozzle : le container redéployé log-t-il normalement ? (pas de boucle de crash)
□ Beszel : CPU/RAM du container dans les normes habituelles ?
□ Grafana/Loki : pas de vague d'erreurs depuis le déploiement ?
□ Si Kafka concerné : Kafka UI → consumer lag stable ?
□ docker ps : STATUS "Up" (pas "Restarting") pour tous les containers touchés
10. Prochaines Étapes
-
Détail des compose files → Infrastructure Docker
-
Problèmes fréquents → Dépannage
-
Architecture globale → Architecture