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 :
Ce billet est le troisième de sa série. Vous pouvez retrouver les autres ici :
- Un datacenter à la maison
- Un NAS presque parfait
- Du monitoring avec Prometheus (cet article)
- 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 :
Si ça vous intéresse, le json du dashboard est téléchargeable ici : dashboard.json.
À la prochaine o/
-
Time Series DataBase, base de données dédiée aux données chronologiques. ↩
Vous pouvez réagir à cet article en m'envoyant un mail, à blog[@]middleearth[.]fr. Je répondrais avec plaisir :)