Grafana : monitorer des métriques depuis InfluxDB insérées via collectd (French)

2014-10-05

  french    monitoring 

Grafana

L'outil du moment pour monitorer vos métriques et vous sortir de beaux graphiques est Grafana.

Je vais vous expliquer dans cet article comment mettre en place une stack collectd + InfluxDB + Grafana.

L'idée est d'avoir collectd qui nous collecte un tas d'informations sur notre serveur et nos outils, que ces métriques soient insérées dans InfluxDB et que Grafana nous affiche joliement ces métriques.

Pour ce faire, nous aurons en fait besoin d'un troisième outil : un proxy qui écoute les événements collectd et qui insère les métriques dans InfluxDB.

Installation de collectd

Si vous êtes sur Debian, rien de plus simple (sinon, rendez-vous sur https://collectd.org/download.shtml pour obtenir le package) :


$ sudo apt-get install collectd

Editez le fichier de configuration (/etc/collectd/collectd.conf) afin d'y activer les modules que vous souhaitez utiliser et activez principalement le plugin network qui nous servira à nous brancher sur le proxy que nous allons mettre en place pour InfluxDB par la suite :


# Uncomment this:
LoadPlugin network

# Uncomment/update this:
<Plugin network>
  Server "127.0.0.1" "8096"
</Plugin>

Installation d'InfluxDB

Si vous êtes sur une Debian (64 bits), exécutez les commandes ci-dessous (sinon, rendez-vous sur http://influxdb.com/download/) :


$ wget http://s3.amazonaws.com/influxdb/influxdb_latest_amd64.deb
$ sudo dpkg -i influxdb_latest_amd64.deb

Si vous souhaitez modifier des options, vous pouvez éditer la configuration à l'emplacement /opt/influxdb/current/config.toml.

InfluxDB vient avec une API HTTP qui écoute par défaut sur le port 8086 et une interface d'administration web sur le port 8083.

Installation du proxy entre collectd et InfluxDB

Ce proxy est écrit en Go et disponible ici : https://github.com/hoonmin/influxdb-collectd-proxy

Assurez-vous donc d'avoir la librairie à jour avant de faire cette installation :


$ git clone https://github.com/hoonmin/influxdb-collectd-proxy.git
$ cd influxdb-collectd-proxy
$ make

Une fois l'installation terminée, nous pouvons alors lancer commencer par lancer collectd et InfluxDB :


$ /etc/init.d/collectd start
$ /etc/init.d/influxdb start

Nous allons maintenant créer une base de données nommée "collectd" dans laquelle nous insererons toutes les métriques relevées par collectd :


$ curl "http://localhost:8086/db?u=root&p=root" -d "{\\"name\\": \\"collectd\\"}"

Notez que le password donné dans la commande suivante peut être modifié via l'interface web d'InfluxDB, port 8083.

Lançons maintenant le proxy dans un screen nommé "collectd-influxdb"


$ screen -s collectd-influxdb
$ bin/proxy --influxdb="localhost:8086" --typesdb="/usr/share/collectd/types.db" --database="collectd" --username="root" --password="root"

Notez que les options suivantes sont disponibles pour le proxy :


$ bin/proxy --help
Usage of bin/proxy:
  -database="": database for influxdb
  -influxdb="localhost:8086": host:port for influxdb
  -logfile="proxy.log": path to log file
  -normalize=true: true if you need to normalize data for COUNTER types (over time)
  -storerates=true: true if you need to derive rates from DERIVE types
  -password="root": password for influxdb
  -proxyhost="0.0.0.0": host for proxy
  -proxyport="8096": port for proxy
  -typesdb="types.db": path to Collectd's types.db
  -username="root": username for influxdb
  -verbose=false: true if you need to trace the requests

Afin de vérifier que des données collectd sont bien insérées dans InfluxDB, vous pouvez lancer la requête curl suivante :


$ curl -G 'http://localhost:8086/db/collectd/series?u=root&p=root&q=list+series&pretty=true'

Pour en savoir plus sur le langage d'interrogation de données, rendez-vous sur : http://influxdb.com/docs/v0.8/api/query_language.html.

Installation de Grafana

Placez-vous à la racine de votre répertoire web et téléchargez l'archive suivante :


$ wget http://grafanarel.s3.amazonaws.com/grafana-1.8.1.tar.gz
$ tar xzvf grafana-1.8.1.tar.gz
$ mv grafana-1.8.1 grafana
$ cd grafana
$ mv config.sample.js config.js

Nous allons maintenant éditer ce fichier afin d'y spécifier notre datasource : InfluxDB (et plus particulièrement notre base de données : "collectd") :


    datasources: {
      collectd: {
        type: 'influxdb',
        url: "http://yourdomain.com:8086/db/collectd",
        username: 'root',
        password: 'root'
      },
    },

Attention de bien spécifier un domaine accessible publiquement car les requêtes partiront depuis le client en JavaScript.

Vous pourrez ensuite vous rendre sur http://yourdomain.com/grafana et commencer à ajouter vos graphiques en y sélectionnant vos métriques obtenues depuis InfluxDB.

Comments