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.
3 réflexions sur “Installation de Grafana, InfluxDB & Telegraf sur Debian”
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
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
Très bien documenté et très clair.