Munin est un super outil de métrologie. Simple à installer (présent dans toutes les bonnes distributions), simple à configurer (à un tel point que c'en est risible) et simple à étendre (on peut écrire des plugins pour tout, même pour surveiller une cafetière).
Mais on entend souvent « Ouais, mais les graphes RRDtool, c'est moche » (RRDtool est un outil permettant de faire plein de choses avec des bases de données RRD (Round Robin Database, bases de données temporelles), qui donne des graphiques au look vieillot).
Du coup on n'entend plus parler que de Prometheus, NetData et autres trucs de hipster branchouilles (mode vieux con assumé).
Ok, vous voulez du joli dashboard ? On va vous en donner.
La référence du machin qui fait des jolis graphes, c'est Grafana. Donc je suis parti sur ça.
Permettre à Grafana d'avoir accès aux données de Munin
Parce que Grafana ne sait pas taper dans des bases de données RRD, on va installer Grafana RRD Server. Celui-ci va fournir une API JSON à Grafana pour aller taper dans les bases RRD de Munin.
apt install librrd-dev
Ensuite
cd /tmp
wget https://github.com/doublemarket/grafana-rrd-server/releases/download/v0.0.5/grafana-rrd-server_linux_amd64.gz -O grafana-rrd-server.gz
gunzip grafana-rrd-server.gz
mv grafana-rrd-server /usr/bin/
On le lance ainsi (regardez le -h
pour le détail des options) :
grafana-rrd-server -r /var/lib/munin/
Il écoutera par défaut sur toutes les IPs, sur le port 9000. Libre à vous de le mettre derrière un Nginx ou autre, avec ou sans authentification.
Pour le service systemd :
[Unit]
Description=Grafana RRD Server
Documentation=https://github.com/doublemarket/grafana-rrd-server
Requires=network.target
After=network.target
[Service]
Type=simple
User=munin
ExecStart=/usr/bin/grafana-rrd-server -r /var/lib/munin/
SyslogIdentifier=grafana-rrd-server
[Install]
WantedBy=multi-user.target
(Je ne l'ai pas testé, je viens de l'écrire à l'os)
systemctl daemon-reload
systemctl start grafana-rrd-server
systemctl status grafana-rrd-server
systemctl enable grafana-rrd-server
Installer Grafana
Grafana fournit un dépôt APT, ce qui est bien pratique :
apt install -y apt-transport-https
echo "deb https://packagecloud.io/grafana/stable/debian/ stretch main" > /etc/apt/sources.list.d/grafana.list
curl https://packagecloud.io/gpg.key | sudo apt-key add -
apt update
apt install grafana
systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
systemctl enable grafana-server
Hop, il écoute par défaut sur toutes les interfaces, sur le port 3000. Encore une fois, à vous de le mettre derrière un Nginx, etc.
Le couple login / mot de passe par défaut est admin
et admin
.
Faire la liaison entre les deux
Il faut encore que Grafana soit capable d'interroger l'API JSON de Grafana RRD Server. Pour ça, on va lui installer le plugin SimpleJson :
grafana-cli plugins install grafana-simple-json-datasource
Configurer Grafana
Allez sur votre Grafana, allez dans la section "Data sources", cliquez sur "Add data source", choisissez le type SimpleJson, mettez l'adresse de votre Grafana RRD Server et hop, c'est tout bon. Vous n'avez plus qu'à ajouter des graphes provenant de cette source de données dans vos dashboards.
Bon pis voilà, ça permet d'avoir un truc comme ça :
Conclusion
J'ai fait ça pour le fun, parce que j'en avais marre d'entendre des critiques sur Munin et des « Nan mais Prometheus, c'est vachement mieux tu vois ». Non, je ne vois pas. Oui, les nouveaux outils sont jolis. Oui, ils ont une super granularité. Mais des points qu'on oublie souvent, c'est :
- Munin est tellement simple à installer et configurer ;
- Des jolis graphes, ouais, c'est cool, mais sérieux, qui se touche la nouille sur ses graphes toute la journée ? Ok, Munin, c'est assez moche, mais ça fait le job, je suis informé en regardant les graphes, et c'est tout ce que je lui demande ;
- Prometheus, NetData et compagnie, ça surveille tellement de trucs en permanence que ça ne se fait pas oublier sur le serveur. Si, si, j'ai bien vu ces outils me ralentir mes serveurs. Quand le serveur est à la peine, ces deux outils ont empiré les choses, là où Munin ne fait ses checks que toutes les cinq minutes. #TrueStory
Donc voilà : on est capable d'avoir de jolis graphes avec Munin, avec un minimum de taf. Bon, c'est en place, je vais pas jeter le boulot que j'ai fait, mais à moins qu'on me dise au boulot « C'est méga top, je vais m'en servir tout le temps », je vais le désactiver.
Bon, y a quand même un truc pas mal avec cette histoire, c'est qu'on peut afficher sur le même graphe des données qui ne sont pas agrégées sur Munin. Genre empiler les nombres de mails envoyés par jour par toutes les machines qui envoient du mail, comme sur le graphe en bas à gauche de l'image ci-dessus. C'est pas complètement dénué d'intérêt.
NB : Prometheus et NetData ont d'autres qualités que les jolis graphes, comme par exemple des alertes intelligentes. Contrairement à Munin (ou Nagios, ou autre système de monitoring classique) qui alerte quand les valeurs dépassent un certain seuil, ces nouveaux outils vont dire « Attention, si le disque continue à se remplir à ce rythme là, il sera plein dans 4h », même si le disque n'est rempli qu'à 50%. Et c'est bien. Mais pour moi, Munin, c'est de la métrologie (on enregistre, on peut consulter le passé et le présent), pas de la supervision au sens Nagios. Il peut le faire, mais c'est clairement pas son usage premier. Donc du coup, les nouveaux outils vont se comparer à mon installation de Shinken, pas à mon Munin.
Merci je me sens moins seul à défendre munin et nagios au quotidien. Je confirme le côté mise à genou d’un serveur en cas de surcharge par les nouvelles supervision, de nos jours économiser des ressources ça ne parle plus à grand monde. Y a qu’à ajouter du cou…
Sur ta dernière remarque à propos des alertes, depuis la version 4, Grafana sait faire des alertes lui-même :
http://docs.grafana.org/alerting/rules/
Donc ta solution me plaît beaucoup car c’est peut-être la solution pour ne garder que Munin sur les machines et se passer d’un Nagios.
Faut voir les perfs aussi : on a beaucoup de sondes Munin chez Framasoft (±80 machines), et Grafana RRD Server était assez lent au niveau du /search (qui retourne les bdd disponibles) et il prenait pas mal de CPU. Après, c’est ptêt juste pour le /search, j’ai pas testé intensément, il est peut-être léger quand il sait quoi chercher (ie quand on lui dit c’est cette bdd que je veux).
I have rddtool installed and generating rrd files, i have to insert this « apt install librrd-dev » again?
Grafana RRD Server seems to use librrd-dev, since it’s said to install it in its installation guide (https://github.com/doublemarket/grafana-rrd-server#usage).
+1 merci pour le tuto …
Fan d’Observium/LibreNMS et autre Smokeping & Cacti, je suis tout à fait dans la même optique …
J’ai essayé telegraf pour collecter les données, c’est bien les ports d’un switch mais c’est tout, je ne vais pas m’amuser à configurer ce que je veux surveiller sur des serveurs, là où Munin et Cie reconnaissent tout, tout seuls !