Projet

Général

Profil

TimescaleDB » Historique » Version 2

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

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é
<pre>
23 1 Julien Aubé
# apt-get update; apt-get dist-upgrade
24 1 Julien Aubé
# apt-get install postgresql
25 1 Julien Aubé
</pre>
26 1 Julien Aubé
27 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.
28 1 Julien Aubé
29 1 Julien Aubé
Dans mon cas j'ai changé la ligne suivante dans @/etc/postgresql/11/main/pg_hba.conf (remplacé @md5@ par @peer@)
30 1 Julien Aubé
<pre>
31 1 Julien Aubé
...
32 1 Julien Aubé
local   all             all                                     peer
33 1 Julien Aubé
...
34 1 Julien Aubé
</pre>
35 1 Julien Aubé
36 1 Julien Aubé
h2. Installer & configurer TimescaleDB
37 1 Julien Aubé
38 1 Julien Aubé
<pre>
39 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"
40 1 Julien Aubé
# wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | apt-key add -
41 1 Julien Aubé
# apt-get update
42 1 Julien Aubé
# apt-get install timescaledb-postgresql-11
43 1 Julien Aubé
</pre>
44 1 Julien Aubé
45 1 Julien Aubé
L'outil suivant permet de modifier la configuration de PostgreSQL pour améliorer les performances avec TimescaleDB. 
46 1 Julien Aubé
<pre>
47 1 Julien Aubé
# timescaledb-tune
48 1 Julien Aubé
</pre>
49 1 Julien Aubé
50 2 Julien Aubé
h2. Installer Grafana
51 1 Julien Aubé
52 1 Julien Aubé
<pre>
53 1 Julien Aubé
# apt-get install -y apt-transport-https
54 1 Julien Aubé
# apt-get install -y software-properties-common wget
55 1 Julien Aubé
# wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
56 1 Julien Aubé
57 1 Julien Aubé
# echo "deb https://packages.grafana.com/oss/deb stable main" | tee -a /etc/apt/sources.list.d/grafana.list
58 1 Julien Aubé
# apt-get update
59 1 Julien Aubé
# apt-get install grafana
60 1 Julien Aubé
# systemctl daemon-reload
61 1 Julien Aubé
# systemctl enable grafana-server
62 1 Julien Aubé
# systemctl start grafana-server
63 1 Julien Aubé
</pre>
64 1 Julien Aubé
65 1 Julien Aubé
Grafana tourne ensuite sur le port 3000.