Pour monitorer mon blog hébergé sur un serveur Linux ou VPS chez OVH sur un containeur Docker (Ghost + MySQL), j'utilise le projet Dockprom de Stefan Prodan. Voici le schéma de l'infrastructure en place :

Migration d'une version précédente du conteneur vers la version 5.1 ou ultérieure
Seulement le souci est apparu au moment où j'ai souhaité effectuer une MAJ de Dockprom via le docker-compose.yml. Avant l'upgrade j'étais sur des versions peu récentes de Prometheus, Grafana, Cadvisor etc...
Après avoir copié-collé les fichiers récents et effectué les modifications nécessaires, le fichier docker-compose.yml ressemble à ceci :
version: '2.1'
networks:
monitor-net:
driver: bridge
volumes:
prometheus_data: {}
grafana_data: {}
services:
prometheus:
image: prom/prometheus:v2.5.0
container_name: prometheus
volumes:
- ./prometheus/:/etc/prometheus/
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention=200h'
- '--web.enable-lifecycle'
restart: unless-stopped
expose:
- 9090
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
alertmanager:
image: prom/alertmanager:v0.15.2
container_name: alertmanager
volumes:
- ./alertmanager/:/etc/alertmanager/
command:
- '--config.file=/etc/alertmanager/config.yml'
- '--storage.path=/alertmanager'
restart: unless-stopped
expose:
- 9093
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
nodeexporter:
image: prom/node-exporter:v0.16.0
container_name: nodeexporter
user: root
privileged: true
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
restart: unless-stopped
expose:
- 9100
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
cadvisor:
image: google/cadvisor:v0.31.0
container_name: cadvisor
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
#- /cgroup:/cgroup:ro #doesn't work on MacOS only for Linux
restart: unless-stopped
expose:
- 8080
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
grafana:
image: grafana/grafana:5.3.2
container_name: grafana
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/datasources:/etc/grafana/datasources
- ./grafana/dashboards:/etc/grafana/dashboards
- ./grafana/setup.sh:/setup.sh
entrypoint: /setup.sh
environment:
- GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin}
- GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
- GF_USERS_ALLOW_SIGN_UP=false
restart: unless-stopped
expose:
- 3000
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
pushgateway:
image: prom/pushgateway
container_name: pushgateway
restart: unless-stopped
expose:
- 9091
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
caddy:
image: stefanprodan/caddy
container_name: caddy
ports:
- "3000:3000"
- "9090:9090"
- "9093:9093"
- "9091:9091"
volumes:
- ./caddy/:/etc/caddy/
environment:
- ADMIN_USER=${ADMIN_USER:-admin}
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
restart: unless-stopped
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
Et après avoir lancé la commande :
docker-compose up -d
Seul Grafana se met en erreur :
root@vps473745:~/dockprom# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba87b76094c2 grafana/grafana:5.2.4 "/setup.sh" 58 seconds ago Restarting (0) 1 second ago
Et le port 3000 ne répond pas en web avec l'affichage "502 Bad Gateway error", ce qui est bien ennuyeux, tous les autres containeurs sont fonctionnels mais pas Grafana.
Le souci est remonté dans cette issue :
https://github.com/stefanprodan/dockprom/issues/92
J'ai donc modifié le fichier docker-compose.yml en ajoutant user: "104" aux caractéristiques de Grafana comme ceci :
grafana:
image: grafana/grafana:5.3.2
container_name: grafana
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/datasources:/etc/grafana/datasources
- ./grafana/dashboards:/etc/grafana/dashboards
- ./grafana/setup.sh:/setup.sh
entrypoint: /setup.sh
environment:
- GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin}
- GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
- GF_USERS_ALLOW_SIGN_UP=false
restart: unless-stopped
expose:
- 3000
user : "104"
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
Ce qui permet après avoir relancé le docker-compose up -d :
root@vps473745:~/dockprom# ADMIN_USER=admin ADMIN_PASSWORD=admin docker-compose up -d
alertmanager is up-to-date
caddy is up-to-date
nodeexporter is up-to-date
cadvisor is up-to-date
prometheus is up-to-date
pushgateway is up-to-date
Recreating grafana ...
Recreating grafana ... done
D'obtenir à nouveau Grafana fonctionnel et à jour :

Bon travail !