Stack de métrologie
Ce dossier contient les ressources nécessaires pour déployer la partie serveur de la stack de métrologie de Picasoft, à savoir :
- Victoria Metrics pour le stockage de métriques
-
vmagent
pour l'ingestion de métriques - Grafana pour visualiser les métriques
Pour des raisons de simplicités mais aussi de sécurité, ces 4 services sont déployés sur la même machine, en partageant un même réseau Docker.
Il est fortement recommandé de consulter la documentation associée pour comprendre l'architecture de cette stack de métrologie.
Lancement
Configuration
Victoria Metrics
Victoria Metrics est la base de données orienté métriques (on parle de TSDB pour time serie database) utilisée par Picasoft.
Sa configuration est simple, et se fait entièrement à l'aide de paramètres en ligne de commande. Picasoft utilise les paramètres suivants :
-
-retentionPeriod=1200
: Configuration de la rétention des métriques pour 1200 mois, soit 100 ans, c'est à dire quasiment illimité -
-storageDataPath=/victoria-metrics-data
: Dossier de stockage des métriques, ce dossier est monté dans un volume Docker pour persister les données -
-selfScrapeInterval=10s
: Indique à Victoria Metrics d'auto-collecter des métriques sur son état de fonctionnement, toutes les 10 secondes -
-selfScrapeInstance=vm-tsdb
: Indique le nom que l'on donne à cette instance de Victoria Metrics, qui sera inscrit en label sur les propres métriques de l'instance
vmagent
vmagent
est l'outil proposé par Victoria Metrics pour gérer l'ingestion de métriques, compatible avec plusieurs protocoles.
Sa principale utilisation à Picasoft est pour le scraping de métriques au format Prometheus. Pour cela vmagent
prends en paramètre un fichier de configuration identique à celui de Prometheus, ici le fichier vmagent-prom.yml
, qui est monté dans le conteneur.
Les valeurs dans ce fichiers peuvent-être substituées par des variables d'environnement en utilisant le format %{ENV_VAR}
. C'est ce que l'on utilise pour les identifiants de certains exporters Prometheus de services. Pour cela on renseigne les valeurs dans le fichier exporters-auth.secrets à partir du contenu du Picapass.
Le reste de la configuration de vmagent
se fait entièrement à l'aide de paramètres en ligne de commandes :
-
-promscrape.config=/config/vmagent-prom.yml
: Indique le chemin vers le fichier de configuration Prometheus. -
-promscrape.config.strictParse
: Indique que l'on veut une interprétation stricte du fichier de configuration Prometheus (retourner une erreur en cas de format invalide ou de paramètres non supportés dans le fichier) -
-remoteWrite.url=http://victoria-metrics:8428/api/v1/write
: Adresse vers laquellevmagent
doit envoyer les métriques collectées (l'instance Victoria Metrics) -
-remoteWrite.tmpDataPath=/vmagent-remotewrite-data
: Dossier temporaire dans lequelvmagent
stocke les métriques avant envoie vers Victoria Metrics (ou en cas d'indisponibilité de l'instance)
Pour une meilleure fiabilité, le dossier /vmagent-remotewrite-data
qui stocke les données temporaires de vmagent
est un volume Docker dédié : vmagent-buffer
.
Grafana
Grafana est l'outil de visualisation de métriques utilisé par Picasoft.
Attention : même si l'authentification LDAP est activée, elle semble ne pas fonctionner : la connexion ne fonctionne que grâce à l'utilisateur administrateur. Voir cette page pour investiguer et régler le problème.
Emplacements
La configuration est réalisée :
- Par les variables d'environnement de Compose, qui permettent d'accéder à tous les paramètres de la configuration (voir la documentation) : cette méthode est utilisée pour tous les paramètres non-critiques.
- Par le fichier ldap.toml pour la configuration spécifique au LDAP. Ce fichier peut faire référence à des variables d'environnement avec cette syntaxe, pour les données critiques (e.g. mot de passe)
- Par le fichier grafana.secrets, pour les secrets.
Utilisateurs
Il y a trois types d'utilisateurs :
- L'administrateur de l'instance, configuré via l'environnement (Compose et secret)
- Les utilisateurs LDAP
- Les utilisateurs créés manuellement, non utilisés par Picasoft
TODO
Le sed
utilisé pour injecter les secrets dans l'entrypoint est dégueulasse, si jamais il y a certains caractères dans les mots de passe ça marchera pas, il faut faire mieux, en Python par exemple.
Mise à jour
Pour Victoria Metrics et vmagent
il suffit de changer les tags utilisés dans le fichier docker-compose.yml
. On fera attention à utilise la même version pour les deux outils.
Pour Grafana il suffit aussi de changer le tag utilisé dans le fichier Docker Compose, on peut suivre les nouvelles version sur la page des releases.