Tableau de bord avec Grafana, InfluxDB et Collectd pour surveiller vos serveurs

Surveillez vos serveurs avec le tableau de bord Grafana combiné à InfluxDB pour le stockage des données et Collectd qui rassemble les métriques.

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.

Aperçu du dashboard Grafana
Aperçu du dashboard Grafana

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/

L'interface web d'InfluxDB
L’interface web d’InfluxDB

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.

Page de login de Grafana
Page de login de Grafana

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.

Grafana - Data sources
Grafana – Data sources

Il est possible de tester la connexion :

Tester la connexion à InfluxDB
Tester la connexion à InfluxDB

 

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.

4 thoughts on “Tableau de bord avec Grafana, InfluxDB et Collectd pour surveiller vos serveurs”

  1. Merci pour le partage !
    Graphana est vraiment un outil impressionnant. Le champs des possibles s’ouvre à moi !

    1. 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 ;)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *