Il y a quelques années encore, j’étais un adepte du couple Cacti + Nagios pour surveiller des serveurs et machines. Pas vraiment réputés pour être faciles et rapides à mettre en place, je m’étais rabattu ces quelques dernières années vers la solution Munin, plus rapide à mettre en œuvre.
Mais il faut bien l’avouer, on reste dans le même esprit de graphiques type MRTG qui font un peu vieillots et de moins en moins dans l’air du temps au niveau interface et affichage des données. C’est sur ces points que la solution Grafana m’a bluffé. Je ne connaissais pas du tout et c’est en tombant sur un article par hasard que mon attention a été titillée. Mais ce n’est pas pour raconter ma vie que j’ai commencé ce billet, alors rentrons dans le vif du sujet.
Architecture
Combiné à InfluxDB qui est une base de données conçue pour stocker des données dépendantes du temps – on parle de métriques – pour le stockage des données et de Collectd pour rassembler ces métriques, le trio Grafana + InfluxDB + Collectd fait un plutôt joli boulot.
A noter que ces trois composantes sont assez interchangeables, par exemple lors de ma découverte j’ai utilisé Telegraf à la place de Collectd, un autre service qui collecte des métriques, de la même façon, le backend InfluxDB peut être changé, ce n’est qu’un mode de stockage après tout.
La procédure d’installation ci-dessous est à base de RPM et fonctionne sous Fedora 23. C’est très similaire pour d’autres architectures.
Collectd
Commençons par l’installation de Collectd qui comme son nom l’indique collectera nos métriques :
$ sudo dnf install collectd
Une fois l’installation terminée, il faut éditer le fichier de configuration sous /etc/collectd.conf
au moins avec les informations suivantes pour la partie global :
Hostname "localhost" BaseDir "/var/lib/collectd" PIDFile "/var/run/collectd.pid" PluginDir "/usr/lib64/collectd" TypesDB "/usr/share/collectd/types.db"
Et quelques plugins au moins doivent être activés, après tout notre but est de collecter des données!
LoadPlugin cpu LoadPlugin interface LoadPlugin load LoadPlugin memory <Plugin cpu> ReportByCpu true </Plugin> <Plugin interface> Interface "eth0" </Plugin> <Plugin network> Server "127.0.0.1" "25826" </Plugin>
C’est tout pour Collectd pour le moment, on y reviendra plus tard pour le démarrer.
InfluxDB
On poursuit par l’installation d’InfluxDB qui stockera nos métriques.
$ sudo dnf install influxdb
Une fois l’installation terminée, on édite son fichier de configuration situé sous /etc/influxdb/influxdb.conf
pour activer le lien avec Collectd :
[collectd] enabled = true bind-address = ":25826" database = "collectd" typesdb = "/usr/share/collectd/types.db"
On peut maintenant démarrer le serveur InfluxDB ainsi que Collectd et on en profite pour les activer au démarrage de la machine :
$ sudo systemctl start influxdb $ sudo systemctl start collectd $ sudo systemctl enable influxdb $ sudo systemctl enable collectd
On peut entrer dans le shell d’InfluxDB avec la commande : influx
. Ensuite, les commandes seront très familières aux personnes connaissant SQL.
$ influx > Connected to http://localhost:8086 version 0.9.6.1 InfluxDB shell 0.9.6.1 > SHOW DATABASES name: databases --------------- name _internal collectd > use collectd Using database collectd > show measurements name: measurements ------------------ name cpu_value interface_rx interface_tx load_longterm load_midterm load_shortterm memory_value > exit
Il est également possible de se connecter à l’interface web d’InfluxDB sur le port 8083 : http://localhost:8083/
Grafana
La dernière étape est l’installation de Grafana, que l’on va démarrer et activer au démarrage dans la foulée :
$ sudo dnf install grafana $ sudo systemctl start grafana-server $ sudo systemctl enable grafana-server
On peut maintenant accéder à l’interface de notre tableau de bord sur le port 3000, par exemple en local : http://localhost:3000. On se retrouve sur la page de connexion ¹. Connectez-vous avec admin pour le nom d’utilisateur et le mot de passe, qu’il sera bon de changer.
Connexion à la source de données
La première tâche est de connecter Grafana à la source de données, en l’occurrence la base collectd d’InfluxDB. Pour cela, cliquer sur Data sources, puis Add new et entrer les informations relatives à InfluxDB.
Il est possible de tester la connexion :
Voilà tout est prêt pour commencer à ajouter des tableaux de bord, créer des panneaux et des graphiques. Ceci fera l’objet d’un prochain article.
¹ A noter que par défaut, il est possible pour quiconque d’ouvrir un compte et ainsi accéder aux tableaux de bord. Dans la majorité des cas ce n’est pas ce que l’on veut. Il faut alors désactiver ce paramètre qui se trouve dans le fichier de configuration de Grafana /etc/grafana/grafana.ini
en décommentant la ligne allow_sign_up = false
.
Merci pour le partage !
Graphana est vraiment un outil impressionnant. Le champs des possibles s’ouvre à moi !
De rien Simon!
J’ai moi-même été content de découvrir de la nouveauté dans ce domaine. Ce n’est pas vraiment nouveau en vérité, mais pour moi ça l’a été et c’est bien foutu ;)
Xymon fait des graphs nativement.
Un must !
Par « nativement » tu veux dire sans avoir à les configurer?