Projet

Général

Profil

TimescaleDB » Historique » Version 1

Julien Aubé, 30/03/2020 00:35

1 1 Julien Aubé
h1. Installation de Grafana avec un backend TimescaleDB
2 1 Julien Aubé
3 1 Julien Aubé
h2. Objectif
4 1 Julien Aubé
5 1 Julien Aubé
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.
6 1 Julien Aubé
7 1 Julien Aubé
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.
8 1 Julien Aubé
9 1 Julien Aubé
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. 
10 1 Julien Aubé
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,... .
11 1 Julien Aubé
PostgreSQL étant une base de donnée très utilisé, les compétences d'administration et la documentation existe a profusion sur Internet.
12 1 Julien Aubé
13 1 Julien Aubé
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. 
14 1 Julien Aubé
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.
15 1 Julien Aubé
16 1 Julien Aubé
Ce tutoriel décrit l'installation de ces outils sur une distribution Debian Buster (quelque soit la plateforme)
17 1 Julien Aubé
18 1 Julien Aubé
h2. Installation de PostgreSQL sur une Debian 10 "Buster"
19 1 Julien Aubé
20 1 Julien Aubé
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.
21 1 Julien Aubé
22 1 Julien Aubé
* Installer Postgresql (version 11 au moment de la rédaction de cet article)
23 1 Julien Aubé
<pre>
24 1 Julien Aubé
# apt-get update; apt-get dist-upgrade
25 1 Julien Aubé
# apt-get install postgresql
26 1 Julien Aubé
</pre>
27 1 Julien Aubé
28 1 Julien Aubé
S'assurer que postgresql fonctionne correctement et que l'utilisateur "postgres" peux s'y connecter en tant qu'administrateur de la base.
29 1 Julien Aubé
30 1 Julien Aubé
Dans mon cas j'ai changé la ligne suivante dans @/etc/postgresql/11/main/pg_hba.conf (remplacé @md5@ par @peer@)
31 1 Julien Aubé
<pre>
32 1 Julien Aubé
...
33 1 Julien Aubé
local   all             all                                     peer
34 1 Julien Aubé
...
35 1 Julien Aubé
</pre>
36 1 Julien Aubé
37 1 Julien Aubé
h2. Installer & configurer TimescaleDB
38 1 Julien Aubé
39 1 Julien Aubé
<pre>
40 1 Julien Aubé
# sh -c "echo 'deb https://packagecloud.io/timescale/timescaledb/debian/ `lsb_release -c -s` main' > /etc/apt/sources.list.d/timescaledb.list"
41 1 Julien Aubé
# wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | apt-key add -
42 1 Julien Aubé
# apt-get update
43 1 Julien Aubé
# apt-get install timescaledb-postgresql-11
44 1 Julien Aubé
</pre>
45 1 Julien Aubé
46 1 Julien Aubé
L'outil suivant permet de modifier la configuration de PostgreSQL pour améliorer les performances avec TimescaleDB. 
47 1 Julien Aubé
<pre>
48 1 Julien Aubé
# timescaledb-tune
49 1 Julien Aubé
</pre>
50 1 Julien Aubé
51 1 Julien Aubé
h3. Installer Grafana
52 1 Julien Aubé
53 1 Julien Aubé
<pre>
54 1 Julien Aubé
# apt-get install -y apt-transport-https
55 1 Julien Aubé
# apt-get install -y software-properties-common wget
56 1 Julien Aubé
# wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
57 1 Julien Aubé
58 1 Julien Aubé
# echo "deb https://packages.grafana.com/oss/deb stable main" | tee -a /etc/apt/sources.list.d/grafana.list
59 1 Julien Aubé
# apt-get update
60 1 Julien Aubé
# apt-get install grafana
61 1 Julien Aubé
# systemctl daemon-reload
62 1 Julien Aubé
# systemctl enable grafana-server
63 1 Julien Aubé
# systemctl start grafana-server
64 1 Julien Aubé
</pre>
65 1 Julien Aubé
66 1 Julien Aubé
Grafana tourne ensuite sur le port 3000.