TIG version Docker

Introduction
Suite au renouveau de mon serveur,
j’ai décider d’y installer la stack TIG afin de remplacer
celui que j’utilise actuellement sur un truc
qui me sert de serveur à la maison.
Comme ce serveur utilise Traefik, je l’utilise en tant que
point d’entrée pour InfluxDB et Grafana.
Nous verrons donc ici comment mettre en place ces différents
services. J’ai fait cela d’une manière où l’on prépare tous
à l’avance et pour que j’aie le moins d’actions de configuration
manuelle à faire.
J’ai fait de cette manière car j’ai orchestré tout cela
avec Ansible. Mais ça, ça sera pour un autre article…
Préparation
InfluxDB
Configurations
Le conteneur va prendre trois fichiers en entrée :
- Fichier des variables d’environnements
- Configuration d’InfluxDB
- Fichier d’initialisation du service
Le fichier 1 (.influxdb.env
) est assez explicite :
|
|
Pour la configuration (2), je suis resté sur la configuration de base. Pour cela, j’ai généré le fichier avec la commande suivante :
|
|
Le chemin de ce fichier dans le conteneur est /etc/influxdb/influxdb.conf
,
je l’ai donc stocké au même endroit sur ma machine physique.
Ce que j’appelle le fichier d’initialisation du service est un fichier
qui va contenir l’ensemble des commandes qui vont créer les différentes BDD
et utilisateurs avec les droits adéquats.
Voici donc mon fichier all.iql
:
|
|
Pour les exemples j’ai crée les passphrases avec un pwgen -B 16 1
.
On voit ici que j’ai créé une BDD pour les données de Telegraf ainsi qu’un utilisateur
avec les droits d’écriture sur cette base. Je fais de même pour ceux de Traefik.
En plus, je crée un utilisateur spécifique pour Grafana qui peut seulement lire ces données.
Composition
|
|
Les références aux fichiers de la partie précédente sont mis en surbrillance.
La ligne 12 correspond a un dossier ou le fichier all.iql
se trouve.
Telegraf
Configurations
Le fichier de variable d’environnement (.telegraf.env
) contient les éléments
qui vont permettre au conteneur de connaitre les informations de la machine physique (CPU).
|
|
Mon fichier de configuration est un bundle de mes anciens articles :
|
|
Étant donné que telegrafeur
ne peut pas crée la base,
on verrouille la possibilité de création de la base par Telegraf avec l’option
skip_database_creation
mise à true
.
Composition
|
|
Je monte aussi le socket Docker pour avoir les métriques des conteneurs.
Grafana
Configurations
Fichier .grafana.env
:
|
|
Composition
|
|
Il est nécessaire de spécifier l’UID:GID
de l’utilisateur (l’exemple d’ici est
pour l’utilisateur root) comme je l’ai fait à la ligne 5 lorsque l’on mappe
un dossier non local pour les données. Sinon, on peut utiliser un volume ou un
dossier local. Plus d’information
ici.
Lancement
Si vous concaténez les trois configurations Docker, vous obtenez un Docker Compose complet.
Comme d’habitude, on lance la stack avec docker-compose up -d
.
Pour une raison inconnue, le fichier all.iql
ne s’exécute pas au lancement.
Cela est peut-être dû au fait que j’ai fait beaucoup d’erreurs avant d’obtenir
des fichiers fonctionnels.
Pour y remédier, j’ai forcé l’exécution des éléments du dossier :
|
|
Cette commande vous seras utile si vous ajoutez ou modifiez des droits via des fichiers dans le dossier.
Une fois la stack fonctionnel, on se connecte sur Grafana
(https://supervision.scrample.xyz dans l’exemple et on ajoute les BDD avec
le compte grafaneur
qui a seulement un accès en lecture sur les bases.
Une fois de plus, j’ai récupéré les dashboards 4220 et 10585 que j’ai ajouté sur Grafana.
Maintenant que tous fonctionnent, on va alors s’assurer que cela est bien sécurisé.
Vérification
Mon serveur étant dans le nuage (donc exposé), je dois m’assurer que les accès sont bien sécurisés.
Pour l’HTTPS, Traefik fait bien son travail. Pour InfluxDB, on vérifie cela en faisant différents tests avec des commandes cURL depuis un autre machine.
Voici donc des exemples qui devraient fonctionner :
|
|
J’ai aussi fait des tests qui ne devraient pas fonctionner pour m’assurer du bon verrouillage des accès à InfluxDB.
Bonus : Métriques Traefik
Pour avoir les données de Traefik, il faut ajouté le contenue suivant dans le fichier de configuration statique :
|
|
Conclusion
Une fois encore, j’ai refait une stack TIG mais en Docker cette fois-ci ! Petit à petit, je vais renvoyer toutes mes données sur cette stack en lieu et place de celui de mon serveur à 32 GB de stockage qui est d’ailleurs bien rempli :
PROBLEM : DISK WARNING - free space: / 5430 MB (19.93% inode=77%)
Nagios
Il me manque plus qu’à créer les BDD et comptes pour Home Assistant et Nagflux et de les configurer pour envoyer leurs données dessus !
Si vous voulez inclure les données de votre PC Windows, j’ai ajouté des infos ici.
Bon monitoring !