Prometheus est un outil open-source de monitoring et d’alerting initialement développé par SoundCloud.
Il est utilisé pour collecter, stocker et interroger des métriques (CPU, mémoire, requêtes, erreurs, etc.) afin de surveiller l’état de santé et les performances des systèmes et des applications.
Il fonctionne selon un modèle pull :
- Prometheus interroge régulièrement des endpoints HTTP (
/metrics) - Les données sont stockées sous forme de séries temporelles
- Les métriques sont interrogées à l’aide du langage PromQL
- Les alertes sont déclenchées via Alertmanager
Un exporter est un agent ou service qui expose des métriques dans un format lisible par Prometheus.
👉 Rôle :
- Collecter des métriques depuis un système ou une application
- Les exposer via un endpoint HTTP (ex :
http://zeus:9100/metrics)
📌 Prometheus ne collecte rien tout seul :
Il a besoin d’exporters ou d’applications instrumentées installées sur la machine à surveiller.
| Exporter | Fonction |
|---|---|
| node_exporter | Métriques système (CPU, RAM, disque, réseau) |
| blackbox_exporter | Disponibilité HTTP / TCP / ICMP |
| mysql_exporter | Base de données MySQL |
| postgres_exporter | PostgreSQL |
| redis_exporter | Redis |
| nginx_exporter | Serveur web Nginx |
Dans ce projet, nous nous concentrons sur blackbox_exporter et node_exporter.
[ zeus (node & blackbox) ]
|
v
[ prometheus (alertmanager) ] ---> [ Email / Slack / Webhook ]
- Prometheus est le serveur de monitoring
- Zeus est le serveur surveillé
Rendez-vous sur le site officiel de Prometheus
Téléchargez les archives et copiez les dossiers extraits vers l’emplacement de votre choix.
Arborescence par défaut de Prometheus après installation :
.
├── LICENSE
├── NOTICE
├── prometheus
├── prometheus.yml
└── promtoolArborescence par défaut de alertmanager après installation :
.
├── alertmanager
├── alertmanager.yml
├── amtool
├── data
│ ├── nflog
│ └── silences
├── LICENSE
└── NOTICE
Téléchargez les archives et copiez les dossiers extraits vers l’emplacement de votre choix.
Arborescence par défaut de node après installation :
├── LICENSE
├── node_exporter
└── NOTICEArborescence par défaut de blackbox après installation :
.
├── blackbox_exporter
├── blackbox.yml
├── LICENSE
└── NOTICELes fichiers de configuration sont commenté en détail:
alertmanager.yml reste à la racine du dossier prometheus
alert.rules.yml reste à la racine du dossier prometheus
Par défaut, les exporters ne se lancent pas automatiquement.
Sur zeus, on a donc crée des services avec systemctl pour que les exporters blackbox et node se lancent au démarrage automatiquement.
Node
$ cat /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=your_user
ExecStart=/usr/bin/node_exporter
Restart=always
NoNewPrivileges=yes
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable node_exporter.service
sudo systemctl start node_exporter.service
sudo systemctl status node_exporter.serviceBlack box
$ cat /etc/systemd/system/blackbox_exporter.service
[Unit]
Description=Blackbox Exporter
After=network.target
[Service]
User=your_user
ExecStart=/usr/bin/black_box/blackbox_exporter
Restart=always
NoNewPrivileges=yes
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable blackbox_exporter.service
sudo systemctl start blackbox_exporter.service
sudo systemctl status blackbox_exporter.serviceCheck the ports
$ ss -lntp | grep -E "node|black"
LISTEN 0 4096 *:9115 *:* users:(("blackbox_export",pid=1444,fd=3))
LISTEN 0 4096 *:9100 *:* users:(("node_exporter",pid=1450,fd=3)) Nous avons créé une page de login simple sur zeus afin de détecter une attaque par bruteforce.
Le code source de la page se trouve dans zeus/simple_login_page.
La page de login est exposée sur le port 5000.
Pour exécuter app.py, le paquet Python prometheus_client est requis :
pip3 install prometheus_client"prometheus_client" n'est pas un package de python par défaut. Vous aurez certainement besoin d'un venv python Comment le paramétrer:
python3 -m venv /path/to/your/virtual/environmentVous devez exécuter les binaires ./prometheus et ./alertmanager depuis leurs répertoires respectifs afin de commencer les tests.
Ils peuvent également être configurés comme services via systemd pour démarrer automatiquement au démarrage.
Tous les scripts de test se trouvent dans zeus/scripts
(Certains paramètres des scripts peuvent nécessiter des ajustements).
Voici les dashboards Prometheus /targets et /alerts

Test de l’alerte HostHighCpuLoad en lançant les scripts sur zeus et en observant le dashboard :
Ensuite testons l'alert "HostLowMemory"
Et enfin l'alerte "LoginBruteforceDetected"
Comme on peut le constater, les alertes sont déclenchées avec succès.
Rappel : le fichier alertmanager.yml est configuré pour envoyer des emails lorsque les alertes sont actives.
Voici un exemple d'alerte recu par mail

Lorsque l'alerte est résolu on recoit également un mail

Tous les fichiers de configurations, codes et scripts sont commentés.
License MIT










