Skip to content
Snippets Groups Projects

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

Documentation générique.

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 laquelle vmagent doit envoyer les métriques collectées (l'instance Victoria Metrics)
  • -remoteWrite.tmpDataPath=/vmagent-remotewrite-data : Dossier temporaire dans lequel vmagent 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.