Installation de Grafana, InfluxDB & Telegraf sur Debian

Installer Grafana Influxdb telegraf sur debian

Dans cet article, nous allons voir comment installer et configurer Grafana, InfluxDB et Telegraf sur une machine Debian. Ce tutoriel fonctionne aussi sur Ubuntu et Raspberry Pi OS (Raspbian).

Pour commencer, un petit rappel :

Grafana est un logiciel libre sous licence GNU Affero General Public License Version 3 qui permet la visualisation de données. Il permet de réaliser des tableaux de bord et des graphiques depuis plusieurs sources dont des bases de données temporelles comme Graphite, InfluxDB et OpenTSDB (Source Wikipédia)

InfluxDB est un système de gestion de base de données orientées séries temporelles hautes performances, écrit avec le langage de programmation Go et distribué sous licence MIT. InfluxDB se veut très rapide en écriture. (Source Wikipédia)

Telegraf est un agent serveur piloté par des plugins pour collecter et envoyer des métriques et des événements à partir de bases de données, de systèmes et de capteurs IoT. Telegraf est écrit en Go et se compile en un seul binaire sans dépendances externes, et nécessite une empreinte mémoire très minimale. (Source influxdata.com)

Suivant la configuration de votre firewall il vous sera peut-être nécessaire d’ouvrir des ports afin que tous les services fonctionnent correctement.

Installation de Grafana

Nous allons commencer par ajouter le repo à notre machine.

sudo apt install -y apt-transport-https
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Maintenant que le repo est ajouté, on update la liste des packages disponibles et on procède à l’installation.

sudo apt update
sudo apt install grafana

Nous allons pouvoir démarrer le serveur et faire en sorte qu’il se lance lorsque notre machine démarre. Sans ça, au premier reboot vous n’aurez plus accès à votre interface sans aller démarrer le service manuellement.

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

Si vous voulez vérifier que Grafana est bien actif :

sudo systemctl status grafana-server

Quand tout est bon, on peut voir que active (running) est affiché en vert (la couleur peut varier en fonction de vos réglages) et sur la ligne du dessus enbled est aussi présent.

Par défaut Grafana utilise le port 3000. Si tout s’est bien déroulé, vous pouvez accéder à l’interface via l’adresse suivante :

http://votre_adresse_ip:3000/

Pour la première connexion vous devez vous connecter avec admin, admin. Il vous sera demandé de changer le mot de passe suite à ça.

Pour afficher des données dans Grafana nous avons besoin d’une base de données où aller piocher. Ce rôle sera rempli par InfluxDB. Il est à noter qu’Influx n’est pas le seul à jouer ce rôle, d’ailleurs suivant votre besoin vous devrez peut-être utiliser Loki, Prometheus ou autre.

Installation d’InfluxDB

Comme pour Grafana, on ajoute le repo. La procédure est légèrement différente entre Debian et Ubuntu. On commence par Debian

wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list

On passe à l’installation

sudo apt update
sudo apt install influxdb
sudo systemctl unmask influxdb.service
sudo systemctl start influxdb
sudo systemctl enable influxdb

Comme avec Grafana, vous pouvez utiliser status pour vérifier que le service est actif et activé au démarrage.

On va commencer par créer un utilisateur, sur le même principe que MySQL on entre dans le shell d’Influx.
Note : Il est conseillé de personnaliser votre utilisateur et votre mot de passe.

influx
CREATE USER telegraf WITH PASSWORD 'Telgr@f'

Maintenant que notre utilisateur est créé, nous allons ajouter une base de données, donner les droits de notre nouvel utilisateur à cette BDD et enfin ajouter une politique de rétention des données à notre base de données. A vous de voir combien de jour vous souhaitez les conserver. Pour l’exemple nous allons nous contenter de 30 jours.

CREATE DATABASE telegraf_bdd
GRANT ALL ON telegraf_bdd TO telegraf
CREATE RETENTION POLICY "trente_jours" ON telegraf_bdd DURATION 30d REPLICATION 1 DEFAULT

Pour afficher la liste des bases de données présentes

SHOW DATABASES

Pour voir les politiques de rétentions associées à votre base de données

SHOW RETENTION POLICIES ON telegraf_bdd
exit

Le port utilisé par défaut utilisé par InfluxDB est le 8086, nous aurons besoin de cette information pour la suite. On fini en redémarrant Influx pour être sûr que nos modifications soient prises en compte.

sudo systemctl restart influxdb

Installation de Telegraf

Nous allons maintenant installer Telegraf, qui sera charger de collecter les données et de les envoyer dans notre base de données telegraf_bdd

sudo apt install telegraf
sudo systemctl start telegraf
sudo systemctl enable telegraf

Vous avez noté que nous n’avons pas mis à jour la liste des paquets ou ajouté de repo pour installer Telegraf. C’est parce qu’InfluxDB et Telegraf sont édité tous les deux par Infuxdata, ils sont donc présents sur le même repo, celui que vous avons ajouté tout à l’heure.

Nous allons éditer la configuration de Telegraf pour lui dire où envoyer les données

nano /etc/telegraf/telegraf.conf

Dans le fichier de configuration nous allons nous rendre au bloc [[outputs.influxdb]] et y faire quelques changements pour envoyer nos données au bon endroit. Il faut décommenter les lignes suivantes en fonction de nos besoins

Tous les éléments étant sur la même machine, nous envoyons nos données sur localhost, 127.0.0.1. Il est tout à fait possible de mettre l’adresse IP d’une autre machine du réseau local pour lui envoyer les données. Avant d’aller vérifier si notre configuration est bonne, on relance le service pour qu’elle soit prise en compte

sudo systemctl restart telegraf

Vérification des données

On peut maintenant vérifier que notre base de données reçoit bien des données de Telegraf

influx
USE telegraf_bdd
SHOW MEASUREMENTS
SELECT * FROM cpu

Normalement, en utilisant SHOW MEASUREMENTS une liste a dû apparaitre. Ce sont les tables dans lesquelles se trouvent les données envoyées par Telegraf. La commande SELECT * FROM cpu vous a montré toutes les données contenues dans la table cpu. Si vous n’avez eu aucun résultat, reprenez les étapes précédentes, vous en avez sûrement oublié une 🙂

Récupération des données dans Grafana

On peut maintenant retourner sur Grafana et ajouter notre nouvelle source de données. Configuration > Data Sources > Add data source

Entrez vos informations de connexion puis cliquez sur Save & test. Si la connexion est réussi, un petit encart Data source is working s’affiche.

On peut maintenant nous rendre dans Create > Import et importer un dashboard déjà fait. Pour cela 3 solutions s’offrent à nous. Importer un fichier JSON, entrer notre code JSON ou bien entrer l’id d’un dashboard.
Par exemple l’id 928 correspond à ce tableau de bord. Cliquez sur load, et voilà vos données.

Vous pouvez maintenant créer vos propres tableaux de bords ou en importer d’autres. Vous pourrez en trouver plein à cette adresse. (Pensez à sélectionner le bon collecteur).

Il est possible que vous soyez obligé d’ajouter de nouveaux plugins à Telegraf pour que votre tableau de bord fonctionne correctement. Je vous explique comment collecter la température et les données réseaux avec le protocole SNMP dans cet article

C’est fini pour ce tuto, n’hésitez pas à réagir en commentaire ou à poser vos questions.

4.8/5 - (61 votes)

3 réflexions sur “Installation de Grafana, InfluxDB & Telegraf sur Debian”

  1. Bonjour,

    Comment faire pour que telegraf envoie les données sans que le user âme et password de la base de données apparaît en clair dans le fichier ?
    Via des certificats par exemple ?
    Comment faire ?

    Bien cordialement,
    Yoann

    1. Bonjour,
      Effectivement c’est une bonne question si vous envoyez les données en dehors de votre réseau local.
      Il faut activer la connexion HTTPS au niveau d’InfluxDB. Pour cela, il faut en premier lieu créer un certificat auto-signé.
      Créer la clé privée :
      openssl genrsa -out certificatinflux.key 2048
      Créer la demande de signature :
      openssl req -new -key certificatinflux.key -out certificatinflux.csr
      Créer le certificat autosigné
      openssl x509 -req -days 365 -in certificatinflux.csr -signkey certificatinflux.key -out certificatinflux.crt

      Ensuite dans le fichier de config d’Influx (/etc/influxdb/influxdb.conf)

      # Determines whether HTTPS is enabled.
      https-enabled = true

      # The SSL certificate to use when HTTPS is enabled.
      https-certificate = "/etc/ssl/certificatinflux.crt"

      # Use a separate private key location.
      https-private-key = "/etc/ssl/certificatinflux.key"

      Dernière étape, modifier la configuration dans Telegraf pour ajouter le s dans http, et activer insecure_skip_verify = true

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Articles de la même catégorie

Retour en haut