Time Series database : Simple installation et intégration de données avec InfluxDB

Un des défi à relever dans le monitoring est le stockage et l’exploitation des métriques / données de performance (consommation cpu, nombre de personne connectées à une application, temps de réponse d’un site web etc..) . Pour ma part, j’en ai pour le moment retenu un qui semble être le bon candidat : InfluxDB. Cet article a pour but de vous montrer comment on peut rapidement installer InfluxDB sur CentOS 6 puis intégrer des données provenant d’un fichier texte. La version au moment ou j’écris cet article est là 0.9.4.2 (Stable … ).

>>> InfluxDB devient InfluxData : plus de news dans le début de l’article…

>>> Breaking News : InfluxDB devient InfluxData et ne met plus en avant 1 outil de stockage de données mais 4 outils : de la collecte de données jusqu’à la visualisation.

  • (New) Telegraf : Collecter des métriques sur les serveurs ( system/database/application etc..)
  • InfluxDB : stockage des données de performance
  • (New) Chronograf : Visualisation des données
  • (New) Kapacitor : Traitement des données (ETL) & alerting
  • (New) Enterprise Manager : couche d’administration , gestion des ACLs etc..

Ci-dessous le schéma de la solution de collecte & d’exploitation des données proposées par InfluxData :

InnoData-Architecture

Ca promet !

Installation

Je pars du principe que vous avez sous la main un serveur sous CentOS 6 – 64 bits.

Se connecter sur le serveur puis :

#cd /tmp/
#wget http://influxdb.s3.amazonaws.com/influxdb-0.9.4.2-1.x86_64.rpm
#sudo yum localinstall influxdb-0.9.4.2-1.x86_64.rpm

Démarrer le service :

sudo service influxdb start

Pour plus de confort, on rajoute un petit lien pour avoir facilement accès à la CLI sans taper le chemin :

ln -s /opt/influxdb/influx /usr/bin/influx

Intégration de données

Rien de plus simple encore, il vous faut un fichier formaté de cette manière :

mesureESPACEvaleur=xxxESPACEtimestamp

Exemple :

connection value=451 1441926011000000000
connection value=520 1441926311000000000
connection value=497 1441926611000000000
connection value=488 1441926911000000000
connection value=563 1441927211000000000
connection value=528 1441927511000000000
connection value=452 1441927811000000000
connection value=479 1441928111000000000
connection value=454 1441928411000000000
connection value=515 1441928711000000000
connection value=496 1441929011000000000
...

Attention au format des timestamp qui est plus précis que celui sorti de MySQL par exemple. Avant de charge les données, nous allons créer une base de test. Pour cela, on se connect à la CLI;

#influx
Connected to http://localhost:8086 version 0.9.4.2
InfluxDB shell 0.9.4.2
> create database test;
> exit

Puis on charge le fichier contenant nos données correctement formatées. Il existe de nombreuses autre façon de charger des données :

#curl -i -XPOST 'http://localhost:8086/write?db=test' --data-binary @/tmp/data_bin.txt
HTTP/1.1 100 Continue
HTTP/1.1 204 No Content
Request-Id: 0b89dc07-8887-11e5-8028-000000000000
X-Influxdb-Version: 0.9.4.2
Date: Wed, 11 Nov 2015 15:15:34 GMT

Vous pouvez ensuite rapidement afficher les données présentes :

Par la CLI :

#influx
>use test
>select * from $mesure$

Par l’interface Web d’admin :

Connectez vous sur http://IP_SERVER:8083/

Puis il y a un champ « query » dans lequel vous pouvez taper la même requête

influxDBSelect

Pour supprimer des une series :

DROP SERIES FROM mesure WHERE ...

Exemple : comment supprimer le jeu de données fourni sur le site en exemple

DROP SERIES FROM cpu_load_short

Quelques autres commande utiles ( ressemblent beaucoup à MySQL ):

create database foo
drop database foo
show databases
show series
drop series from _nom de la series_

Et plus d’explication sur la syntaxe des requêtes ici :

Plus d’information sur influxDB sur leur site très bien construit ( niveau documentationen tout cas) .

Dans un prochain article, je montrerai comment exploiter les données stockées dans InfluxDB grâce à l’outil Open Source de reporting : BIRT

2 comments

  1. Looking forward to the InfluxDB – Birt integration. How did you manage to report from InfluxDB? Using custom ODA driver?

    • Hi,

      I’m also looking for that.

      I don’t have the solution yet. As you say developing a custom driver to have a new data source type. If you develop or find it first , don’t hesitate to tell me 🙂

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.