Est-ce que ça vous dirait d'avoir ceci dans 20 minutes?
Je voudrais remercier NoScah pour sa (très) grande contribution à cet article, tout le mérite te revient! 👍
Cette gentille dédicace a été écrite sans contraintes, enfin, presque, si peu.
Hier nous avons abordé le monitoring de Proxmox avec Grafana, mais comme beaucoup parmi vous font du self-hosting, il manquait un petit quelque chose...
Aujourd'hui nous allons parler de Grafana, Prometheus & cAdvisor pour monitorer Docker!
Je vais faire le tutoriel en deux temps:
- Dans un premier temps je vais me concentrer uniquement sur le monitoring de Docker dans Grafana, sans Proxmox, que tout le monde n'utilise pas forcément.
- Si par contre vous avez Proxmox sur Grafana et que vous voulez ajouter le monitoring de Docker, en fin de tutoriel je vous explique comment faire.
💾 L'installation
- On va créer un dossier à la racine d'où sont installées vos applications, par exemple monitoring:
sudo mkdir monitoring
- Rendez-vous dedans:
cd monitoring
- Créez votre compose.yml:
sudo nano compose.yml
- Collez ça dedans en prenant soin d'adapter, si nécessaire, les ports et les volumes suivant votre configuration:
version: "3.3"
services:
grafana:
image: grafana/grafana
container_name: grafana
ports:
- 3000:3000
restart: unless-stopped
volumes:
- grafana-data:/var/lib/grafana
- grafana-conf:/etc/grafana
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.49.1
container_name: cadvisor
ports:
- 8098:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
devices:
- /dev/kmsg
privileged: true
restart: unless-stopped
prometheus:
image: docker.io/prom/prometheus:latest
container_name: prometheus
ports:
- 9090:9090
command: "--config.file=/etc/prometheus/prometheus.yaml"
volumes:
- ./prometheus.yaml:/etc/prometheus/prometheus.yaml:ro
- prometheus-data:/prometheus
restart: unless-stopped
volumes:
grafana-data:
grafana-conf:
prometheus-data:
- Il va falloir créer le fichier config pour Prometheus:
sudo nano prometheus.yaml
- Et coller ça dedans:
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['192.168.1.152:9090']
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
Veillez à changer ce paramètre:
- targets: ['192.168.1.152:9090'] => Remplacer 192.168.1.152 par votre ip, tout en conservant :9090.
- On va déployer les applications:
docker-compose up -d
ou avec docker-compose V2:
docker compose up -d
- Rendez-vous sur l'ip:port, suivant l'IP de votre serveur local et du port choisi, 3000 et 8086 par défaut:
Grafana
http://ip:3000
Prometheus
http://ip:9090
Cadvisor
http://ip:8098
ou votre domaine:
https://grafana.mondomaine.com
https://influxdb.mondomaine.com
🔑 Modification du mot de passe de Grafana
On va commencer par lancer Grafana afin de changer le mot de passe par défaut.
Lors du premier lancement de Grafana il faudra indiquer les informations du compte par défaut:
- Email or username => admin
- Password => admin
Cliquez sur Log in.
Choisissez un nouveau mot de passe et cliquez sur Submit:
Vous voilà sur le tableau de bord:
✅ Vérification côté Prometheus
Il est important pour que tout se déroule bien, de vérifier que Prometheus voit bien cAdvisor.
Rendez-vous donc sur Prometheus, partie Satus, ensuite cliquez sur Targets:
Vous devriez voir cAdvisor, comme ceci:
Si vous ne le voyez pas, vérifier que vous avez bien mis la bonne ip du serveur où est installé cAdvisor, dans le fichier prometheus.yml. Par la même occasion vérifiez que sont container est bien lancé.
⚙️ Configurer Grafana
Il va falloir ajouter une source de données, celle de Prometheus. Dans Grafana, partie Home, cliquez sur Data Sources:
Ensuite cliquez sur Add data source:
Cliquez sur Prometheus:
Dans la partie Connection, il suffit d'entrer l'ip:port de Prometheus
Maintenant on va sauver/tester en cliquant sur Save & test:
Ce qui doit retourner:
Retournez sur Home, et cliquez sur Dashboards:
Cliquez en haut à droite sur New, puis Import:
Indiquez 193 et cliquez sur Load:
Dans Options, Name, vous pouvez choisir le nom que vous voulez. N'oubliez pas dans le fond de sélectionnez prometheus:
Quand c'est terminé, cliquez sur Import:
Et voilàààààà:
😷 Modifier l'apparence
Je vous invite à suivre ce lien qui explique comment faire:
↗️ Combiner le monitoring de Proxmox & Docker
Si vous aviez déjà suivi ce tutoriel...
...vous voudriez probablement pouvoir combiner le monitoring de Proxmox & Docker.
Voici la marche à suivre:
Pour commencer, stoppez les containers de Grafana et influxDB.
Il va falloir éditer votre (docker-)compose.yml. Pour avoir plus facile, faites CTRL+K (ça supprime une ligne entière) avec votre clavier autant de fois que nécessaire pour supprimer tout le contenu et collez ça dedans:
version: "3.3"
services:
grafana:
image: grafana/grafana
container_name: grafana
ports:
- 3000:3000
restart: unless-stopped
volumes:
- grafana-data:/var/lib/grafana
- grafana-conf:/etc/grafana
influxdb:
image: influxdb:2
container_name: influxdb
volumes:
- influxdb-config:/etc/influxdb2
- influxdb-data:/var/lib/influxdb2
ports:
- 8086:8086
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.49.1
container_name: cadvisor
ports:
- 8098:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
devices:
- /dev/kmsg
privileged: true
restart: unless-stopped
prometheus:
image: docker.io/prom/prometheus:latest
container_name: prometheus
ports:
- 9090:9090
command: "--config.file=/etc/prometheus/prometheus.yaml"
volumes:
- ./prometheus.yaml:/etc/prometheus/prometheus.yaml:ro
- prometheus-data:/prometheus
restart: unless-stopped
volumes:
grafana-data:
grafana-conf:
influxdb-config:
influxdb-data:
prometheus-data:
On va déployer les applications:
docker-compose up -d
ou avec docker-compose V2:
docker compose up -d
Vous pouvez poursuivre le tutoriel actuel à partir du point 5 dans la partie Installation:
5. Il va falloir créer le fichier config pour Prometheus: