Durant un projet, il a été nécessaire que je récupère des données de statistique sur un serveur distant, et de les afficher dans un tableau de bord dans mon Grafana.
Au lieu de stocker des informations système, tel que l’utilisation processeur ou le réseau, il m’est nécessaire de stocker et afficher des résultats de requête SQL dans une base PostgreSQL. C’est pourquoi ce tutoriel indique comment faire des requêtes SQL
Si tel n’est pas le cas, la procédure d’installation se trouve sur dans la documentation de Grafana
Installation de InfluxDB
Le stockage des données sera géré par un serveur InfluxDB, installé sur le même serveur que Grafana. Si un serveur est dédié pour cette instance, il faudra simplement adapter la source de données dans Grafana.
Récupérer la clé pour ajouter le repos d’InfluxDB
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
Mettre à jour le cache des repos et lancer l’installation
sudo apt-get update && sudo apt-get install influxdb
Démarrer le service InfluxDB
sudo service influxdb start
Configuration de la base de données
Maintenant que le service est installé, il ne reste plus qu’à le configurer
Se connecter à la ligne de commande de InfluxDB
influx
Créer la base de données qui accueillera les données
CREATE DATABASE telegraf
Et c’est tout
Activer HTTPS et l’authentification sur InfluxDB
Si le serveur est publiquement accessible, il est mieux de le sécuriser en effectuant une communication par HTTPS.
Si vous n’en n’avez pas, vous pouvez utiliser un certificat Let’s Encrypt
sudo apt install certbot
sudo certbot certonly --standalone -d monserver.test.local
sudo mkdir /etc/influxdb/ssl
sudo cp /etc/letsencrypt/live/monserver.test.local/cert.pem /etc/influxdb/ssl/
sudo cp /etc/letsencrypt/live/monserver.test.local/privkey.pem /etc/influxdb/ssl/
sudo chown influxdb:influxdb /etc/influxdb/ssl/cert.pem /etc/influxdb/ssl/privkey.pem
editer ensuite le fichier /etc/influxdb/influxdb.conf, et décommenter et modifier en fonction les lignes ci-dessous
enabled = true
bind-address = ":8086"
auth-enabled = false
https-enabled = true
https-certificate = "/chemin/au/certificat/influxdb.crt"
https-private-key = "/chemin/au/certificat/influxdb.key"
redémarrer le service pour prendre en charge les certificats
sudo systemctl restart influxdb
Se connecter à la ligne de commande influx
influx -ssl
Créer un compte administrateur
CREATE USER admin WITH PASSWORD 'superMotDePasse' WITH ALL PRIVILEGES
Créer un compte pour l’envoi de données depuis Telegraf
CREATE USER userTelegraf WITH PASSWORD 'autrePassword'
GRANT WRITE ON telegraf TO userTelegraf
Créer un autre compte pour Grafana
CREATE USER grafana WITH PASSWORD 'your_grafana_password'
GRANT READ ON telegraf TO grafana
Se déconnecter de la base de données et modifier la ligne ci-dessous dans le fichier de configuration /etc/influxdb/influxdb.conf:
auth-enabled = false
en
auth-enabled = true
Redémarrer ensuite le service
sudo systemctl restart influxdb
Installation de Telegraf
Maintenant que la partie InfluxDB est configurée, il est maintenant temps de configurer du côté du serveur distant.
Installer le package Telegraf
curl -s https://repos.influxdata.com/influxdata-archive_compat.key > 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
sudo apt-get update && sudo apt-get install telegraf
Modifier le fichier /etc/telegraf/telegraf.conf, et ajouter (ou décommenter) les lignes ci-dessous:
[[outputs.influxdb]]
urls = ["https://serveurtest.test.local:8086"]
database = "telegraf"
retention_policy = ""
write_consistency = "any"
timeout = "5s"
username = "telegraf"
password = "monSuperPassword"
insecure_skip_verify = true
Ajouter le bloc de code ci-dessous pour connecter la base PostgreSQL, et exécuter les requêtes souhaitées
[[inputs.postgresql_extensible]]
address = "host=localhost user=postgres dbname=database1"
[[inputs.postgresql_extensible.query]]
script="/etc/telegraf/db_stats.sql"
Créer le fichier SQL qui contiendra les requêtes SQL
sudo nano /etc/telegraf/db_stats.sql
Enfin, redémarrer le service Telegraf
sudo systemctl restart telegraf.service
Configurer la source de données dans Grafana
Se connecter à Grafana et ajouter une nouvelle source de données
Choisir « InfluxDB »
Saisir les informations pour se connecter à la base de données
Si la connexion est fonctionnelle, le message ci-dessous s’affiche
Il ne reste plus qu’à ajouter les données collectées sur un dashboard