Projet

Général

Profil

Installation de Grafana avec un backend TimescaleDB

Objectif

Grafana https://grafana.com/ est un système de visualisation moderne et réactif. Son utilisation nécessite une base de donnée indexée sur le temps, une "time-serie database" (TSDB). Le plus souvent, c'est InfluxDB qui est utilisé https://www.influxdata.com/ , c'est la solution la plus souvent mise en oeuvre.

Mais l'expérience a montré quelques limites, notamment dans la montée en charge et la sauvegarde des données (Le fait que la société InfluxData propose une solution payante et complète de cloud et de clustering est possiblement à l'origine de ces limitations de la version gratuite). InfluxDB reste toutefois une excellente solution pour débuter ainsi que pour des données non pérennes et non volumineuses.

TimescaleDB est une solution développée par la société Timescale https://www.timescale.com/ qui est basé sur une extension de PostgreSQL, et ajoute à ce dernier une gestion efficace des séries temporelles, des opérations spécifiques, un stockage adapté et efficient.
Néanmoins, toutes les fonctions de PostgreSQL restent utilisable, en particulier d'autres extensions tel que PostGIS, PostgREST ainsi que les outils de sauvegarde, restauration, monitoring, clustering,... .
PostgreSQL étant une base de donnée très utilisé, les compétences d'administration et la documentation existe a profusion sur Internet.

Ajouter des données en base se fait en SQL (INSERT INTO ....) , et les requêtes se font de même (SELECT FROM...) . Les vues, les triggers, les procédures stockés restent utilisable.
Il reste possible d'utiliser d'autres méthodes pour insérer des données ou les récupérer sans passer par du SQL - il existe des "connecteurs" pour Kafka, Telegraf, Prometheus. PostgREST peux aussi être utilisé pour offrir une interface HTTP REST pour l'insertion ou la récupération des données.

Ce tutoriel décrit l'installation de ces outils sur une distribution Debian Buster (quelque soit la plateforme)

Installation de PostgreSQL sur une Debian 10 "Buster"

Ce document part du principe que l'installation aura lieu sur une distribution Debian 10 "Buster" , qui dispose d'un accès à internet, et dont l'utilisateur est administrateur.

# apt-get update; apt-get dist-upgrade
# apt-get install postgresql

S'assurer que postgresql fonctionne correctement et que l'utilisateur "postgres" peux s'y connecter en tant qu'administrateur de la base.

Dans mon cas j'ai changé la ligne suivante dans /etc/postgresql/11/main/pg_hba.conf (remplacé md5 par peer)

...
local   all             all                                     peer
...

Installer & configurer TimescaleDB

# sh -c "echo 'deb https://packagecloud.io/timescale/timescaledb/debian/ `lsb_release -c -s` main' > /etc/apt/sources.list.d/timescaledb.list" 
# wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | apt-key add -
# apt-get update
# apt-get install timescaledb-postgresql-11

L'outil suivant permet de modifier la configuration de PostgreSQL pour améliorer les performances avec TimescaleDB.

# timescaledb-tune

Installer Grafana

# apt-get install -y apt-transport-https
# apt-get install -y software-properties-common wget
# wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -

# echo "deb https://packages.grafana.com/oss/deb stable main" | tee -a /etc/apt/sources.list.d/grafana.list
# apt-get update
# apt-get install grafana
# systemctl daemon-reload
# systemctl enable grafana-server
# systemctl start grafana-server

Grafana tourne ensuite sur le port 3000.