Du monitoring avec Prometheus

Le dans «Infonuagique» par Eldeberen
Mots-clés:

Après l'installation du NAS, il est temps de passer à la partie monitoring. Pas grand chose à dire, on utilisera Prometheus comme TSDB1 et Grafana pour créer un joli dashboard comme celui-ci :

Panel de monitoring Grafana


Ce billet est le troisième de sa série. Vous pouvez retrouver les autres ici :

  1. Un datacenter à la maison
  2. Un NAS presque parfait
  3. Du monitoring avec Prometheus (cet article)
  4. Backup to the sky (à paraître)

Installation des paquets

Tout est dans les dépots, donc l'installation se limite à ça sur le système hôte :

pacman -S prometheus prometheus-node-exporter grafana

Pour les systèmes satellite (ici les Raspberry Pi), on se contentera du node-exporter :

pacman -S prometheus-node-exporter

Configuration

La config par défaut fournie avec les paquets faisant largement le taf, on se contentera de ne configurer que la période de rétention des métriques. Pour cela, on va juste ajouter des paramètres à l'exécution du serveur Prometheus. La documentation2 propose deux manières de définir la rétention : via une limite de temps, ou via une limite de taille. Cette dernière fonctionnalité est en phase de test, choisissez en connaissance de cause.

echo 'PROMETHEUS_ARGS="--storage.tsdb.retention.size=2GB"' > /etc/conf.d/prometheus

Au niveau des jobs d'export, on configure comme suit. Au niveau des targets, vous mettez soit des adresses IP, soit des domaines. Mes machines sont toutes référencées dans /etc/hosts, d'où les noms khazad-dum (le NAS) et whitwell (un premier Raspberry Pi). Je rajouterais budgeford et bywater lorsque je déploierai les deux autres RPi.

# /etc/prometheus/prometheus.yml
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
# Not used yet
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

scrape_configs:
  - job_name: 'node'
    static_configs:
    - targets:
      - 'khazad-dum:9100'
      - 'whitwell:9100'

On peut dès lors lancer le service sur le NAS. On n'oubliera pas de faire pareil sur les Rapsberry Pi.

systemctl enable --now prometheus
systemctl enable --now prometheus-node-exporter
systemctl enable --now grafana

Au niveau du pare-feu du NAS, on ouvre juste le port qui va bien pour accéder à Grafana, uniquement depuis le réseau domestique. La config persistente fera l'objet d'un autre article.

iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3000 -j ACCEPT

Et sur le RPi juste le port pour que Prometheus puisse récupérer les métriques

iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 9100 -j ACCEPT

Création du dashboard

Lors de la première connexion à Grafana, les identifiants sont admin:admin. On pensera à tout de suite modifier ça dans les paramètres du compte.

Au niveau du dashboard, je ne vais pas trop m'attarder, je suis parti d'un truc déjà tout fait3 que j'ai ensuite adapté pour mes besoins. À l'arrivée, on obtient ce qui est présenté sur la capture de présentation à savoir une vue globale, et une vue spécifique à une machine, que l'on peut sélectionner via une variable :

Panel de monitoring Grafana

Si ça vous intéresse, le json du dashboard est téléchargeable ici : dashboard.json.

À la prochaine o/


  1. Time Series DataBase, base de données dédiée aux données chronologiques. 

  2. https://prometheus.io/docs/prometheus/latest/storage/ 

  3. https://grafana.com/grafana/dashboards/11074 

Vous pouvez réagir à cet article en m'envoyant un mail, à blog[@]middleearth[.]fr. Je répondrais avec plaisir :)