InfluxDB : une base de données time series open source ultra-rapide

InfluxDB : une base de données time series open source ultra-rapide Optimisé pour le stockage de séries temporelles ou time series, le système de gestion de base de données est spécialement conçu pour piloter les métriques et événements IT en vue supporter les applications de monitoring d'applications.

Qu'est-ce qu'InfluxDB ?

Développé par la société américaine InfluxData, InfluxDB est une time series database (TSDB). Elle est taillée pour stocker un large volume de données chronologiques, ou séries temporelles (times series en anglais), venant de multiples sources.  InfluxDB vise à collecter le volume croissant de données issues de l'internet des objets : véhicules connectés, appareils domestiques, machines outils industrielles... Écrite en Go, le langage de programmation créé par Google, elle permet de gérer en temps réel les événements et métriques issus de tous ces systèmes, avec à la clés un horodatage atteignant une vitesse d'un milliardième de seconde. 

InfluxDB se décline en deux éditions : une édition communautaire open source, et une édition d'entreprise dotée de fonctionnalités plus avancées en matière de sécurité et de haute disponibilité. InfluxData commercialise en parallèle InfluxDB sous la forme d'un service cloud managé. Baptisé InfluxDB Cloud, il est disponible sur AWS et Google Cloud en version stable, et sur Microsoft Azure en bêta.  

Comment installer InfluxDB ?

InfluxDB est disponible pour FreeBSD, Linux, macOS ou encore Windows. Par défaut, la base de données utilise le port 8086 pour les communications client-serveur et le port 8088 pour les transactions RPC visant à gérer les sauvegardes et les restaurations. Via le protocole NTP, ou Network Time Protocol, InfluxDB se cale sur l'heure locale en temps universel (UTC) pour gérer l'horodatage des données. Du coup, il faudra recourir au NTP pour synchroniser l'heure entre les différents hosts supportant le serveur de données. Selon les systèmes d'exploitation, la procédure d'installation différent (voir les tutoriels sur le site d'InfluxData).

Comment créer une base de données InfluxDB ?

Une fois InfluxdDB installée en local, la commande influx permet d'activer l'interface de pilotage en lignes de commande (CLI) et de se connecter à l'instance InfluxdDB.  Pour créer une première base de données, il suffit ensuite de saisir la commande CREATE DATABASE <db-name>. Ici, db-name correspond au nom que vous souhaitez donner à la base. Il peut contenir des caractères Unicode pour peu d'être mis entre guillemet. 

La console Data Explorer d’InfluxDB propose une interface de gestion visuelle de la base de données. © JDN / Capture

Telegraf, InfluxDB, Grafana (Tig), c'est quoi ?

Formant une plateforme complète d'analyse des données IT, la suite open source Tig s'adosse au logiciel Telegraf pour collecter les métriques, que ce soit en mode push ou en mode pull, en provenance de tous types de systèmes sources (IoT, bases de données et autres serveurs informatiques). InfluxDB est là pour les stocker. Quant à Grafana, il permet de les analyser en vue de créer des tableaux de bord d'indicateurs exploitables.

A l'instar d'InfluxDB, Telegraf est aussi édité par InfluxData. La société propose également Kapacitor, une application de monitoring et d'alerting en temps réel.

Comment télécharger InfluxDB ?

Pour disposer de la version la plus récente d'InfluxDB, il est recommandé de télécharger directement la base de données depuis le site d'InfluxData, Aux côtés de ses déclinaisons pour macOS et Windows en 64 bits, InfluxDB est disponible pour les distributions Linux openSuse, Red Hat, CentOS, Ubuntu et Debian. Le tout aussi bien en 32 bits qu'en 64 bits. Le serveur de données est également accessible sous la forme d'une image Docker sur le Docker Hub, via la commande docker pull influxdb.

Documentation et tutoriel sur InfluxDB

InfluxData offre sur son site une documentation complète sur InfluxDB. De nombreux tutoriels portant sur InfluxDB sont disponibles sur Internet. En voici quelques exemples : 

L'API InfluxDB

InfluxDB est équipé d'une API. Taillée pour interagir avec le serveur de données du même nom, elle prend en charge les codes de réponse et l'authentification HTTP, ainsi que les jetons JWT. Équipée d'un dispositif d'authentification, elle envoie des réponses au format Json.

Influxdb vs Prometheus

Comme InfluxDB, Prometheus est une base de données optimisée pour gérer les séries temporelles. Mais là où InfluxDB gère les horodatages avec une résolution pouvant atteindre un milliardième de seconde (une nanoseconde) en prenant en charge à la fois les types de données float64, int64, booléens et les string, Prometheus se limite au float64, affiche une prise en charge limitée des string, et surtout enregistre une résolution d'horodatage nettement moins fine, de l'ordre de quelques millisecondes.

Influxdb vs Graphite

Alors qu'InfluxDB est avant tout une base de données, Graphite s'articule, lui, autour d'un outil de data visualisation graphique conçu pour suivre en temps réel les performances d'un site web, d'une application ou d'une infrastructure de serveurs. Pour gérer cette restitution au fil de l'eau, Graphite est équipé de sa propre base de données et d'un système de cache.