Bonjour à tous !
Pour ajouter un peu de facilité sur le montage de ce setup, j'ai testé et appliqué les modifications suivantes :
Sachant que les opérations sont faites sur un NAS OpenMediaVault, avec un docker-compose, on y trouve tout de même beaucoup de similitudes 🙂
Voici donc mon compose :
version: "3.8"
services:
influxdb:
image: influxdb:1.8
container_name: influxdb
restart: always
hostname: influxdb
environment:
INFLUX_DB: $INFLUX_DB # nom de la base de données créée à l'initialisation d'InfluxDB
INFLUXDB_USER: $INFLUXDB_USER # nom de l'utilisateur pour gérer cette base de données
INFLUXDB_USER_PASSWORD: $INFLUXDB_USER_PASSWORD # mot de passe de l'utilisateur pour gérer cette base de données
volumes:
- ./influxdb:/var/lib/influxdb # volume pour stocker la base de données InfluxDB
telegraf:
image: telegraf
mem_reservation: 128M
cpus: 0.5
depends_on:
- influxdb # indique que le service influxdb est nécessaire
user: root
container_name: telegraf
command: '/usr/local/py/python.sh'
environment:
PID: 0
GID: 0
links:
- influxdb:influxdb
tty: true
volumes:
- /var/run/docker.sock:/var/run/docker.sock # nécessaire pour remonter les données du démon Docker
- ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf # fichier de configuration de Telegraf
- ./py:/usr/local/py
grafana:
image: grafana/grafana
depends_on:
- influxdb # indique que le service influxdb est nécessaire
container_name: grafana
restart: always
ports:
- 3000:3000 # port pour accéder à l'interface web de Grafana
links:
- influxdb:influxdb
environment:
GF_INSTALL_PLUGINS: "grafana-clock-panel,\
grafana-influxdb-08-datasource,\
grafana-kairosdb-datasource,\
grafana-piechart-panel,\
grafana-simple-json-datasource,\
grafana-worldmap-panel"
GF_SECURITY_ADMIN_USER: $GF_SECURITY_ADMIN_USER # nom de l'utilisateur créé par défaut pour accéder à Grafana
GF_SECURITY_ADMIN_PASSWORD: $GF_SECURITY_ADMIN_PASSWORD # mot de passe de l'utilisateur créé par défaut pour accéder à Grafana
volumes:
- ./grafana:/var/lib/grafana
Tout ce qui concerne les chemins des volumes ont été remplacés par un ./dossier, mais on peux aussi rester sur un chemin complet, comme le compose du tuto proposé 🙂
J'ai donc ajouté une ligne dans ce compose :
command: '/usr/local/py/python.sh'
Au sein du service Telegraf, qui va servir à executer le script "python.sh" à la création du container.
Le contenu du script est le suivant :
#!/bin/bash
su #On passe en utilisateur root
apt update #On met à jour les dépots dans le container
apt -y upgrade #On met à jour les paquets dans le container
dpkg --configure -a #On configure, si besoin, les paquets
apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common #On installe les paquets nécessaires à l'éxecution du script de monitoring
wget https://bootstrap.pypa.io/get-pip.py #On télécharge le get-pip
apt-get -y install python3-distutils #On installe Python et ses utilitaires
python3 get-pip.py --prefix=/usr/local #On indique à python le dossier souhaité
python3 -m pip install requests #On installe les dépendances
pip install unidecode #On installe Unidecode
Ainsi donc, au lancement du compose, le script installe automatiquement le nécessaire pour faire fonctionner le script, nous n'aurons plus qu'à faire la partie concernant l'authentification sur la freebox, en docker-exec.
Cordialement,
Uzurka