Dernièrement, je me suis enfin décidé à mettre à jour ma base de données InfluxDB vers la version 2.0 . La migration s'est plutôt male passée puisque j'ai perdu toutes les mes données ! Mais j'ai été agréablement surpris par les nouvelles fonctionnalités proposées, notamment l'intégration native de Chronograf, leur outil de visualisation, dans l'interface graphique. Voyons les principales nouveautés et comparons-le au roi de la supervision : Prometheus.
Le language Flux
La plus grosse différence entre les deux versions majeures d’InfluxDB est le langage de requête. Dans la première version, avec quelques notions de SQL, InfluxQL paraissait extrêmement simple mais au bout de quelques usages, on voyait les limites d’une simple transcription d’un langage destiné à une base de données relationnelle vers une base de données à séries temporelles. Influx a répondu en ce problème en créant leur propre langage de requêtes procédural dès 2019 et qui est maintenant celui par défaut en version 2: Flux.
"I don’t want to live in a world where the best language humans could think of for working with data was invented in the 70’s"
Why We’re Building Flux, a New Data Scripting and Query Language
Les premières heures furent compliquées à essayer de traduire mes anciennes requêtes mais finalement l'apprentissage de Flux s'est plutôt bien passé. La documentation est très complète avec des exemples et la syntaxe devient très naturelle. Prenons cet exemple de conversion d'une requête très simple :
Certes, Flux est plus verbeux mais sa syntaxe, inspirée par le Javascript, permet de comprendre plus facilement comment la data est manipulée.
Chronograf dans l'interface d'Influx
La première fois où je me suis connecté à l'interface Web qu'offre Influx, j'ai été surpris de voir un menu "Dashboard" et "Alerts". J'ai sauté sur l'occasion pour tester ces fonctionnalités qui auparavant se trouvaient dans Chronograf. La création des tableaux de bord ne vaut pas celui de Grafana mais on y retrouve les principales fonctionnalités. On a le choix entre plusieurs types de cellules :
- Courbe
- Métrique seule
- Courbe + Métrique seule
- Histogramme
- Gauge
- Nuage de points
- Heatmap
- Tableau
Un constructeur de requête intégré existe mais il montre vite ses limites dès que le besoin devient plus important (utilisation des variables, requêtage de plusieurs champs, etc...).
On peut aussi définir des alertes (soit en fonction de valeurs anormales, soit quand un service ne renvoie plus de données) pour les envoyer vers Pagerduty, Slack ou un serveur HTTP. Il y a même une système de règles pour envoyer ou non des notifications aux points de terminaisons selon la criticité, un peu comme le fait Alertmanager.
Influx peut-il gagner la guerre contre Prometheus ?
Depuis le début, les deux outils ont des visions complétement différentes pour la même utilisation. Prometheus « scrape » des données en HTTP à ses exporters . Influx, quant à lui, reçoit des données de Telegraf ou de librairies clientes disponibles dans de nombreux langages. La première méthode favorise les environnements constitués de micro-services mais le manque d’unicité dans ses agents de collecte peut en réfréner plus d’un.
Mais le simple fait qu’Influx intègre nativement des fonctionnalités de Grafana et Alertmanager rebat clairement les cartes. L’installation, la configuration et l’administration d’un seul outil contre trois permet à de plus petites infrastructures d’avoir une solution centralisée de supervision, de visualisation et d’alertes performante.
Au niveau du langage de requêtes, Flux permet beaucoup plus de possibilités que PromQL pour un niveau de performances tout aussi élevé. Sa verbosité peut faire peur par rapport à la simplicité de son concurrent mais une fois la syntaxe acquise, c’est dur de s’en passer ! Je pense que la puissance de Flux permettrait d’utiliser InfluxDB dans d’autre contextes que la supervision où les bases de données à séries temporelles sont pertinentes ( suivi du cours en Bourse, relevé météorologique, etc …)
Dans de futurs articles, je vous montrerais une solution de supervision et de collecte de logs complète avec le couple Telegraf + InfluxDB 2.0, donc restez connectés !