Afficher/cacher Sommaire
Grafana
Grafana est un logiciel open-source qui transforme les multiples flux provenant de systèmes tels que Graphite, Telegraf, et InfluxDB en de magnifiques métriques dans un tableau de bord centralisé.
Installer Grafana (debian)
En root
apt-get install -y apt-transport-https
apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" > /etc/apt/sources.list.d/grafana.list
apt-get update
apt-get install grafana
systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
sudo systemctl enable grafana-server
l’interface d’administration de Grafana est accessible à l’URL http://lxcdeb:3000
A la première connexion, seul un compte “admin” est créé, avec le mot de passe “admin”.
Nouveau mot de passe : grafana49450
Pour créer les dashboards, vous pouvez récupérer des dashboards de la communauté Grafana ou créer vos propres dashboards.
Sécuriser Grafana
Désactiver les enregistrements et l’accès anonyme à Grafana
Grafana offre des options qui permettent aux visiteurs de créer des comptes d’utilisateurs pour eux-mêmes et de prévisualiser les tableaux de bord sans s’enregistrer. Lorsque Grafana n’est pas accessible via Internet ou lorsque vous travaillez avec des données accessibles au public comme des statuts du service, vous pouvez vouloir autoriser ces fonctionnalités. Cependant, lorsque vous utilisez Grafana en ligne pour travailler avec des données sensibles, l’accès anonyme peut poser un problème de sécurité. Pour résoudre ce problème, modifiez la configuration de Grafana.
Commencez par ouvrir le fichier de configuration principal de Grafana pour l’éditer :
sudo nano /etc/grafana/grafana.ini
Localisez la directive suivante `
` sous le titre [users]
:
...
[users]
# disable user signup / registration
;allow_sign_up = true
...
Activer cette directive avec true
ajoute un bouton Sign up à l’écran de connexion ce qui permet aux utilisateurs de s’enregistrer et d’accéder à Grafana.
Désactiver cette directive avec false
supprime le bouton Sign up et renforce la sécurité et la confidentialité de Grafana.
Désactiver cette directive en supprimant le ;
au début de la ligne puis en réglant l’option sur false
:
...
[users]
# disable user signup / registration
allow_sign_up = false
...
Ensuite, localisez la directive enabled
suivante sous le titre [auth.anonymous]
:
...
[auth.anonymous]
# enable anonymous access
;enabled = false
...
Définir enabled
sur true
donne aux utilisateurs non enregistrés accès à vos tableaux de bord, définir cette option sur false
limite l’accès du tableau de bord aux utilisateurs enregistrés seulement.
Décommentez cette directive en supprimant le ;
au début de la ligne puis en réglant l’option sur false
.
...
[auth.anonymous]
# enable anonymous access
enabled = false
...
Sauvegardez le fichier et quittez votre éditeur de texte.
Pour activer les changements, redémarrez Grafana :
sudo systemctl restart grafana-server
Vérifiez que tout fonctionne en vérifiant le statut service de Grafana :
sudo systemctl status grafana-server
Pour revenir à l’écran d’inscription, amenez votre curseur sur votre avatar en bas à gauche de l’écran et cliquez sur l’option Déconnexion qui apparaît.
Une fois que vous vous êtes déconnecté, vérifiez qu’il n’y a pas de bouton Sign up et que vous ne pouvez pas vous connecter sans saisir des identifiants de connexion.
À ce stade, Grafana est entièrement configuré et prêt à être utilisé.
InfluxDB Telegraf
InfluxDB
InfluxDB est une base de données de séries chronologiques Open Source conçue pour surveiller les mesures et les événements tout en offrant une visibilité en temps réel sur les piles. InfluxDB est un produit développé par InfluxData dans le cadre de TICK Stack - qui comprend Telegraf, InfluxDB, Chronograf et Kapacitor. Il s’agit d’une base de données de séries chronologiques à haute disponibilité.
installation d’InfluxDB sur la distribution Linux Debian 10 (Buster)
Ajouter le dépôt APT InfluxDB.
sudo apt update
sudo apt install -y gnupg curl wget
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
Une fois le dépôt ajouté, installez InfluxDB sur Debian 10 (Buster) Linux :
sudo apt update
sudo apt install -y influxdb
sudo systemctl start influxdb
Le fichier de configuration par défaut d’InfluxDB se trouve sous /etc/influxdb/influxdb.conf
. La plupart des sections sont commentées, vous pouvez le modifier à votre convenance et redémarrer le service influxdb après.
Vérifiez l’état du service :
systemctl status influxdb
● influxdb.service - InfluxDB is an open-source, distributed, time series database
Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-12-24 10:47:56 CET; 5s ago
Docs: https://docs.influxdata.com/influxdb/
Main PID: 1520 (influxd)
Tasks: 13 (limit: 19030)
Memory: 7.3M
CGroup: /system.slice/influxdb.service
└─1520 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
Si non actif (enabled)
sudo systemctl enable --now influxdb
Par défaut, InfluxDB utilise les ports réseau suivants :
- Le port TCP 8086 est utilisé pour la communication client-serveur via l’API HTTP d’InfluxDB
- Le port TCP 8088 est utilisé pour le service RPC pour la sauvegarde et la restauration
Configurer l’authentification http d’InfluxDB (facultatif)
Si vous avez besoin d’une authentification http, modifiez la section influxdb http pour qu’elle contienne ce qui suit.
sudo nano /etc/influxdb/influxdb.conf
[http]
auth-enabled = true
Créez ensuite un utilisateur avec un mot de passe d’authentification :
curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'strongpassword' WITH ALL PRIVILEGES"
Remplacer :
- username par votre propre nom d’utilisateur
- strongpassword avec votre propre mot de passe (notez que le mot de passe nécessite des guillemets simples)
Maintenant, chaque fois que vous devez exécuter des commandes influxdb sur le terminal, vous devez spécifier le nom d’utilisateur en utilisant les options -username
et mot de passe en utilisant -password
.
influx -username 'username' -password 'password'
Pour le curl, utilisez -u
pour spécifier le nom d’utilisateur et le mot de passe séparés par deux points.
curl -G http://localhost:8086/query -u username:password --data-urlencode "q=SHOW DATABASES"
Telegraf
Installer le package :
sudo apt update && sudo apt install telegraf
Vérifier le service
systemctl status telegraf
● telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-09-27 10:32:55 CEST; 32s ago
Docs: https://github.com/influxdata/telegraf
Main PID: 1218 (telegraf)
Tasks: 10 (limit: 19029)
Memory: 15.4M
CGroup: /system.slice/telegraf.service
└─1218 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/te
Vérifier les journeaux
sudo journalctl -f -u telegraf.service
-- Logs begin at Sun 2020-09-27 08:34:07 CEST. --
sept. 27 10:32:55 debian-10 systemd[1]: Started The plugin-driven server agent for reporting metrics into InfluxDB.
sept. 27 10:32:55 debian-10 telegraf[1218]: 2020-09-27T08:32:55Z I! Starting Telegraf 1.15.3
sept. 27 10:32:55 debian-10 telegraf[1218]: 2020-09-27T08:32:55Z I! Loaded inputs: mem processes swap system cpu disk diskio kernel
sept. 27 10:32:55 debian-10 telegraf[1218]: 2020-09-27T08:32:55Z I! Loaded aggregators:
sept. 27 10:32:55 debian-10 telegraf[1218]: 2020-09-27T08:32:55Z I! Loaded processors:
sept. 27 10:32:55 debian-10 telegraf[1218]: 2020-09-27T08:32:55Z I! Loaded outputs: influxdb
sept. 27 10:32:55 debian-10 telegraf[1218]: 2020-09-27T08:32:55Z I! Tags enabled: host=debian-10
sept. 27 10:32:55 debian-10 telegraf[1218]: 2020-09-27T08:32:55Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"debian-10", Flush Interval:10s
Grafana - datasource
ATTENTION erreur service telegraf
nov. 02 15:48:16 debian-10 telegraf[469]: 2020-11-02T14:48:16Z E! [outputs.influxdb] When writing to [https://127.0.0.1:8086]: Post "https://127.0.0.1:8086/write?db=telegraf": http: server gave HTTP response to HTTPS client
nov. 02 15:48:16 debian-10 telegraf[469]: 2020-11-02T14:48:16Z E! [agent] Error writing to outputs.influxdb: could not write any address
nov. 02 15:48:26 debian-10 telegraf[469]: 2020-11-02T14:48:26Z E! [outputs.influxdb] When writing to [https://127.0.0.1:8086]: Post "https://127.0.0.1:8086/write?db=telegraf": http: server gave HTTP response to HTTPS client
nov. 02 15:48:26 debian-10 telegraf[469]: 2020-11-02T14:48:26Z E! [agent] Error writing to outputs.influxdb: could not write any address
Il faut modifier le fichier /etc/telegraf/telegraf.conf
, remplacer urls = ["https://127.0.0.1:8086"]
par urls = ["http://127.0.0.1:8086"]
###############################################################################
# OUTPUT PLUGINS #
###############################################################################
# Configuration for sending metrics to InfluxDB
[[outputs.influxdb]]
## The full HTTP or UDP URL for your InfluxDB instance.
##
## Multiple URLs can be specified for a single cluster, only ONE of the
## urls will be written to each interval.
# urls = ["unix:///var/run/influxdb.sock"]
# urls = ["udp://127.0.0.1:8089"]
urls = ["http://127.0.0.1:8086"]
Et redémarrer
sudo systemctl restart telegraf
http://lxcdeb:3000 → Configuration → datasource → Add data source
InfluxDb → Select → Save & Test
Monitorer son débit internet
speedtest
Speedtest® CLI Mesure de la connexion Internet pour les développeurs
Speedtest CLI apporte la technologie de confiance et le réseau mondial de serveurs derrière Speedtest à la ligne de commande. Conçu pour les développeurs de logiciels, les administrateurs système et les passionnés d’informatique, Speedtest CLI est la première application Speedtest officielle native de Linux et soutenue par Ookla®.
Avec Speedtest CLI, vous pouvez facilement :
- mesurer les performances de la connexion Internet, comme le téléchargement, le chargement, la latence et la perte de paquets, de manière native, sans avoir à utiliser un navigateur web
- Testez la connexion internet de votre bureau Linux, d’un serveur distant ou même d’appareils moins puissants comme le Raspberry Pi® avec le serveur Speedtest Network™
- Mettre en place des scripts automatisés pour collecter des données sur les performances de connexion, y compris les tendances dans le temps
- Utilisez le Speedtest dans vos programmes en l’enveloppant dans le langage de programmation de votre choix
- Voir les résultats des tests via CSV, JSONL ou JSON
Le Speedtest CLI est maintenu par l’équipe d’Ookla. Pour toute assistance, veuillez adresser vos demandes à support@ookla.com
Télécharger l’application suivant votre matériel (i386, x86_64, arm32, arm32hf, et arm64)
On copie l’exécutable speedtest dans le dossier /usr/local/bin/
Alternative A (DEFAUT)
- Internet Speed Test et les instructions
Speedtest cli
Installer le CLI officiel du SpeedTest depuis SpeedTest.net
sudo apt-get install gnupg apt-transport-https dirmngr
export INSTALL_KEY=379CE192D401AB61
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $INSTALL_KEY
echo "deb https://ookla.bintray.com/debian generic main" | sudo tee /etc/apt/sources.list.d/speedtest.list
sudo apt-get update
# Other non-official binaries will conflict with Speedtest CLI
# Example how to remove using apt-get
# sudo apt-get remove speedtest-cli
sudo apt-get install speedtest
La commande speedtest
sera exécutée avec les options et arguments suivants :
-f json
: spécifie le format de retour à json, nous facilitant l’extraction par la suite--accept-license
: pour accepter en non interactif la license d’utilisation speedtest/Ookla--accept-gdpr
: pour accepter en non interactif les conditions de conservation/utilisation des résultats par speedtest/Ookla
Où est situé speedtest
which speedtest
/usr/bin/speedtest
Effectuer un test de vitesse avec les arguments pour accepter la licence
/usr/bin/speedtest --accept-license --accept-gdpr
==============================================================================
License acceptance recorded. Continuing.
Speedtest by Ookla
Server: Axione - Paris (id = 28308)
ISP: Free SAS
Latency: 34.90 ms (0.63 ms jitter)
Download: 10.90 Mbps (data used: 19.3 MB)
Upload: 0.81 Mbps (data used: 1.1 MB)
Packet Loss: 1.0%
Result URL: https://www.speedtest.net/result/c/978f6083-8129-4366-bb4a-1adc6ff30d58
Test en json
/usr/bin/speedtest --accept-license --accept-gdpr -f json-pretty
{
"type": "result",
"timestamp": "2020-12-24T09:59:15Z",
"ping": {
"jitter": 2.056,
"latency": 34.777999999999999
},
"download": {
"bandwidth": 1345895,
"bytes": 10270080,
"elapsed": 7616
},
"upload": {
"bandwidth": 107936,
"bytes": 957600,
"elapsed": 9108
},
"packetLoss": 0,
"isp": "Free SAS",
"interface": {
"internalIp": "2a01:e0a:2de:2c70:216:3eff:fea2:1955",
"name": "eth0",
"macAddr": "00:16:3E:A2:19:55",
"isVpn": false,
"externalIp": "2a01:e0a:2de:2c70:216:3eff:fea2:1955"
},
"server": {
"id": 24215,
"name": "ORANGE FRANCE",
"location": "Paris",
"country": "France",
"host": "montsouris3.speedtest.orange.fr",
"port": 8080,
"ip": "2a01:cb04:2004:4001::3"
},
"result": {
"id": "72d57f24-7e0e-4931-8156-2375eeafb0c0",
"url": "https://www.speedtest.net/result/c/72d57f24-7e0e-4931-8156-2375eeafb0c0"
}
}
La définition de quelques champs du résultat
- result_id: l’id unique du test chez Speedtest/Ookla
- ping_latency: la latence du ping en millisecondes
- download_bandwidth: le débit descendant de notre connexion internet en bytes par secondes
- upload_bandwidth: le débit montant de notre connexion internet en bytes par secondes
Speedtest telegraf
Ajouter la configuration speedtest.conf
dans telegraf sous /etc/telegraf/telegraf.d
OU copier la configuration et l’ajouter à votre telegraf.conf
sudo nano /etc/telegraf/telegraf.d/speedtest.conf
#
# Install speedtest cli from SpeedTest.net first
# https://www.speedtest.net/apps/cli
#
# And then run speedtest once to accept the license
#
[[inputs.exec]]
commands = ["/usr/bin/speedtest --accept-license --accept-gdpr -f json-pretty"]
name_override = "Speedtest"
timeout = "1m"
interval = "15m"
data_format = "json"
json_string_fields = [ "interface_externalIp",
"server_name",
"server_location",
"server_host",
"server_ip",
"result_url" ]
Redémarrer le télégraphe sudo systemctl restart telegraf
p.s. Ne fixez pas l’intervalle trop court ou vous risquez de vous faire interdire…
Speedtest InfluxDB cli
Un regard sur les données capturées
influx -username 'admin' -password 'xxxxx'
Connected to http://localhost:8086 version 1.6.4
InfluxDB shell version: 1.6.4
> show databases
name: databases
name
----
_internal
telegraf
> use telegraf
Using database telegraf
> show measurements
name: measurements
name
----
Speedtest
cpu
disk
diskio
kernel
mem
processes
swap
system
> select * from Speedtest
name: Speedtest
time download_bandwidth download_bytes download_elapsed host interface_externalIp packetLoss ping_jitter ping_latency result_url server_host server_id server_ip server_location server_name server_port upload_bandwidth upload_bytes upload_elapsed
---- ------------------ -------------- ---------------- ---- -------------------- ---------- ----------- ------------ ---------- ----------- --------- --------- --------------- ----------- ----------- ---------------- ------------ --------------
1608804922000000000 1330911 9692912 7310 lxcbuster 82.64.18.243 0 0.623 34.966 https://www.speedtest.net/result/c/6dcb9c8d-207f-4cb0-9e4a-0f3d044ef120 lg.par-c.fdcservers.net 6027 198.16.112.250 Paris fdcservers.net 8080 105766 907896 8913
>QUIT
Speedtest grafana
Pour vous connecter a l’interface web de Grafana, rendez vous à l’url http://lxcdeb:3000/
Saisir le mot de passe de l’utilisateur admin
Source de données InfluxDB
Depuis l’accueil de Grafana, sélectionnez Add your first data source ou rendez-vous à l’url http://lxcdeb:3000/datasources/new
Sélectionnez ensuite InfluxDb
Sur la page configuration de la data source, il faut renseigner
- url http://localhost:8086 dans la section “HTTP”
- Auth → Basic auth
- User admin et password xxxx
- Database : nom de la base de données telegraf dans la section “InfluxDB Details”.
Vous pouvez alors sauvegarder et tester la connexion (bouton “Save & Test”).
Si tout est ok, le message Data source working s’affiche.
Le dashboard
Option A
telegraf-speedtest et copier le json https://raw.githubusercontent.com/risb0r/telegraf-speedtest/master/Speedtest.net-metrics.json
Dans le menu survolez le + (Create) puis sélectionnez “Import”.
collez le dans la zone “Import via panel json”
puis chargez le (bouton “Load”).
Aperçu
Option B
Internet Speed Test et les instructions
ID tableau de bord Grafana correspondant : 12428 (le fichier json)
Configurer grafana http://lxcdeb:3000
Cliquer sur le + → Import
Saisir ID et cliquer sur Load
UID=ysbKIhiGk
http://lxcdeb:3000/d/ysbKIhiGk/internet-speed-test?orgId=1
Veuillez changer sur chaque panneau, la valeur “host” dans la requête par votre nom d’hôte
Alternative B
Le script sous “PC1 Archlinux”
Récupération des mesures via speedtest.sh (PC1 Archlinux : ~/media/devel/yannick/speedtest-cli-x86_64/
) puis écriture dans la base speedtest de InfluxDB
Le script sous “PC1 Archlinux”
nano ~/media/devel/yannick/speedtest-cli-x86_64/speedtest.sh
#!/usr/bin/env bash
# InfluxDB variables
influxdb_proto=${INFLUXDB_PROTO:-http}
influxdb_host=${INFLUXDB_HOST:-lxcdeb}
influxdb_port=${INFLUXDB_PORT:-8086}
influxdb_db=${INFLUXDB_DB:-speedtest}
influxdb_url="${influxdb_proto}://${influxdb_host}:${influxdb_port}"
# run speedtest & store result
json_result=$(speedtest -f json --accept-license --accept-gdpr)
# Extract data from speedtest result
result_id=$(echo "${json_result}" | jq -r '.result.id')
ping_latency=$(echo "${json_result}" | jq -r '.ping.latency')
download_bandwidth=$(echo "${json_result}" | jq -r '.download.bandwidth')
upload_bandwidth=$(echo "${json_result}" | jq -r '.upload.bandwidth')
# Ensure InfluxDB database exists
curl \
-d "q=CREATE DATABASE ${influxdb_db}" \
"${influxdb_url}/query"
# Write metric to InfluxDB
curl \
-d "speedtest,result_id=${result_id} ping_latency=${ping_latency},download_bandwidth=${download_bandwidth},upload_bandwidth=${upload_bandwidth}" \
"${influxdb_url}/write?db=${influxdb_db}"
On commence par définir les variables permettant la communication avec InfluxDB :
- influxdb_proto: le protocole de communication avec InfluxDB, par défaut http, surchargeable par la variable d’environnement INFLUXDB_PROTO
- influxdb_host: le hostname du conteneur InfluxDB, par défaut localhost, surchargeable par la variable d’environnement INFLUXDB_HOST
- influxdb_port: le port d’écoute du conteneur InfluxDB, par défaut 8086, surchargeable par la variable d’environnement INFLUXDB_PORT
- influxdb_db: le nom de la base de données InfluxDB à utiliser, par défaut speedtest, surchargeable par la variable d’environnement INFLUXDB_DB
L’ensemble de ces variables étant ensuite concaténé afin de produire l’url permettant la communication avec InfluxDB
Ensuite on stocke dans une variable le résultat de la commande speedtest
exécutée avec les options et arguments :
-f json
: spécifie le format de retour à json, nous facilitant l’extraction par la suite--accept-license
: pour accepter en non interactif la license d’utilisation speedtest/Ookla--accept-gdpr
: pour accepter en non interactif les conditions de conservation/utilisation des résultats par speedtest/Ookla
Une fois notre résultat récupéré, nous utilisons l’utilitaire jq pour extraire les informations qui nous intéressent :
- result_id: l’id unique du test chez Speedtest/Ookla
- ping_latency: la latence du ping en millisecondes
- download_bandwidth: le débit descendant de notre connexion internet en bytes par secondes
- upload_bandwidth: le débit montant de notre connexion internet en bytes par secondes
Maintenant que nous avons toutes les informations qui nous intéressent dans des variables, assurons-nous que la base de données InfluxDB speedtest existe en forçant la création si celle-ci n’existe pas en exécutant la query CREATE DATABASE ${influx_db}
sur le endpoint /query
d’InfluxDB.
Puis pour finir écrivons dans cette base de données nos résultats sur le endpoint /write
d’InfluxDB en précisant le nom de notre base de données ?db=${influxdb_db}
, avec la data speedtest,result_id=${result_id} ping_latency=${ping_latency},download_bandwidth=${download_bandwidth},upload_bandwidth=${upload_bandwidth}
NOTE : La base InfluxDB est accesible sur l’url http://lxcdeb:8086 (/etc/hosts →
10.0.3.19 lxcdeb
)
Plus d’informations sur l’écriture dans InfluxDB sont disponibles dans la documentation officielle
Les droits d’exécution sur ce script
sudo chmod +x ~/media/devel/yannick/speedtest-cli-x86_64/speedtest.sh
Séquenceur (A VOIR)
Une mesure toutes les 15 minutes qui permet une bonne visibilité sans trop charger le réseau.
crontab -e
Et ajoutez en fin de fichier la ligne suivante avant de sauvegarder
*/15 * * * * commande-a-executer
Cela signifie que toutes les 15 minutes (*/15 * * * *), la commande xxxx sera exécutée.x
Monitorer une structure
Monitorer une structure avec Telegraf, InfluxDB et Grafana
- Monitorer votre infra avec Telegraf, InfluxDB et Grafana
- How To Setup Telegraf InfluxDB and Grafana on Linux
Parmi tous les outils de surveillance modernes existants, la pile TIG (Telegraf, InfluxDB et Grafana) est probablement l’une des plus populaires.
Cette pile peut être utilisée pour surveiller un large éventail de sources de données différentes : des systèmes d’exploitation (tels que Linux ou les mesures de performance de Windows) aux bases de données (telles que MongoDB ou MySQL), les possibilités sont infinies.
Le principe de la pile TIG est facile à comprendre.
Telegraf est un agent chargé de collecter et d’agréger les données, comme l’utilisation actuelle du processeur par exemple.
InfluxDB va stocker les données, et les exposer à Grafana, qui est une solution moderne de tableau de bord.
InfluxDB, Telegraf et Grafana
Les applications InfluxDB, Telegraf et Grafana sont installées…
Authentification InfluxDB HTTP Basic
Pour avoir une configuration correcte de la pile TIG, mettre en place l’authentification InfluxDB pour que les utilisateurs soient connectés lors de l’accès au serveur InfluxDB.
1 - Créer un compte administrateur
Avant d’activer l’authentification HTTP, il faut un compte administrateur.
influx -execute "CREATE USER admin WITH PASSWORD 'admin49450' WITH ALL PRIVILEGES"
influx -execute "SHOW USERS"
user admin
---- -----
admin true
2 - Créer un compte pour Telegraf
influx -execute "CREATE USER telegraf WITH PASSWORD 'telegraf49450' WITH ALL PRIVILEGES"
influx -execute "SHOW USERS"
user admin
---- -----
admin true
telegraf true
3 - Activer l’authentification HTTP sur votre serveur InfluxDB
L’authentification HTTP doit être activée dans le fichier de configuration InfluxDB.
Dans le fichier /etc/influxdb/influxdb.conf
et modifier les lignes suivantes.
[...]
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true
# The bind address used by the HTTP service.
bind-address = ":8086"
# Determines whether user authentication is enabled over HTTP/HTTPS.
auth-enabled = true
[...]
4 - Configurer l’authentification HTTP sur Telegraf
Maintenant qu’un compte d’utilisateur est créé pour le Telegraf, nous allons nous assurer qu’il l’utilise pour écrire des données.
Modifier dans le fichier de configuration Telegraf /etc/telegraf/telegraf.conf
## HTTP Basic Auth
username = "telegraf"
password = "telegraf49450"
Redémarrer les services Telegraf InfluxDB
sudo systemctl restart influxdb
sudo systemctl restart telegraf
Vérifiez à nouveau que vous n’obtenez pas d’erreurs lors du redémarrage du service.
sudo journalctl -f -u telegraf.service
-- Logs begin at Sun 2020-09-27 08:34:07 CEST. --
sept. 27 13:33:05 debian-10 systemd[1]: telegraf.service: Succeeded.
sept. 27 13:33:05 debian-10 systemd[1]: Stopped The plugin-driven server agent for reporting metrics into InfluxDB.
sept. 27 13:33:05 debian-10 systemd[1]: Started The plugin-driven server agent for reporting metrics into InfluxDB.
sept. 27 13:33:05 debian-10 telegraf[1583]: 2020-09-27T11:33:05Z I! Starting Telegraf 1.15.3
sept. 27 13:33:05 debian-10 telegraf[1583]: 2020-09-27T11:33:05Z I! Loaded inputs: swap system cpu disk diskio kernel mem processes
sept. 27 13:33:05 debian-10 telegraf[1583]: 2020-09-27T11:33:05Z I! Loaded aggregators:
sept. 27 13:33:05 debian-10 telegraf[1583]: 2020-09-27T11:33:05Z I! Loaded processors:
sept. 27 13:33:05 debian-10 telegraf[1583]: 2020-09-27T11:33:05Z I! Loaded outputs: influxdb
sept. 27 13:33:05 debian-10 telegraf[1583]: 2020-09-27T11:33:05Z I! Tags enabled: host=debian-10
sept. 27 13:33:05 debian-10 telegraf[1583]: 2020-09-27T11:33:05Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"debian-10", Flush Interval:10s
Authentification InfluxDB HTTPS
La configuration de protocoles sécurisés entre Telegraf et InfluxDB est une étape très importante.
Si vos instances Telegraf fonctionnent à distance (sur un Raspberry Pi par exemple), la sécurisation du transfert de données est une étape obligatoire car il y a de très fortes chances que quelqu’un puisse lire les données que vous envoyez.
1 - Créez une clé privée pour votre serveur InfluxDB
Tout d’abord, installez le paquet gnutls-utils qui peut être fourni sous forme de gnutls-bin sur les distributions Debian par exemple.
sudo apt install gnutls-bin
Maintenant que vous avez installé le certtool, générez une clé privée pour votre serveur InfluxDB
Créer un nouveau dossier pour InfluxDB dans le dossier /etc/ssl
sudo mkdir /etc/ssl/influxdb && cd /etc/ssl/influxdb
sudo certtool --generate-privkey --outfile server-key.pem --sec-param High
Generating a 3072 bit RSA private key…
2 - Créer un certificat racine pour le serveur InfluxDB
sudo certtool --generate-self-signed --load-privkey server-key.pem --outfile server-cert.pem
Des questions sont posées, pour enregistrer dans le certificat des informations utiles pourse souvenir de qui gère cette autorité.
Voici les informations importantes à saisir. Pour lesautres questions, vous pouvez garder les réponses par défaut, en laissant la réponse vide et en tapant ’enter’
- Common name : CAInfluxDB
- The certificate will expire in (days) : 2000
- Does the certificate belong to an authority ? (y/N) : y
- Will the certificate be used to sign other certificates ? (y/N) : y
- Is the above information ok ? (y/N) : y
Note : le common name permet d’identifier l’autorité de certification, pour que le client sache plus tard à qui il a envie de faire confiance ou non.
On peut revoir le contenu du certificat à l’aide de :
certtool --certificate-info --infile ca.crt
ou bien juste son empreinte (fingerprint) :
certtool --infile ca.crt --fingerprint
Le fichierca.key
est la partie privée du certificat, à ne pas divulguer à qui que ce soit d’autre. C’est justement là que s’appuie l’autorité : seul celui qui connait le contenu deca.key
pourra créer des certificats.ca.crt
est par contre le certificat racine, à diffuser aux clients.
N’oubliez pas de définir les permissions pour l’utilisateur et le groupe InfluxDB.
sudo chown influxdb:influxdb /etc/ssl/influxdb/{server-key.pem,server-cert.pem}
Validité des certificats
openssl x509 -in /etc/ssl/influxdb/server-cert.pem -text |grep Not
Not Before: Sep 27 12:05:45 2020 GMT
Not After : Mar 20 12:05:59 2026 GMT
3 - Activer le HTTPS sur votre serveur InfluxDB
Maintenant que vos certificats sont créés, il est temps de modifier notre fichier de configuration InfluxDB /etc/influxdb/influxdb.conf
pour activer le HTTPS.
# Determines whether HTTPS is enabled.
https-enabled = true
# The SSL certificate to use when HTTPS is enabled.
https-certificate = "/etc/ssl/influxdb/server-cert.pem"
# Use a separate private key location.
https-private-key = "/etc/ssl/influxdb/server-key.pem"
Redémarrez le service InfluxDB et assurez-vous que vous n’obtenez aucune erreur.
sudo systemctl restart influxdb
sudo journalctl -f -u influxdb.service
4 - Configurer le telegraf pour le HTTPS
Maintenant que le HTTPS est disponible sur le serveur InfluxDB, il est temps pour Telegraf d’atteindre InfluxDB via HTTPS.Dans le fichier /etc/telegraf/telegraf.conf
,modifier les lignes suivantes.
# Configuration for sending metrics to InfluxDB
[[outputs.influxdb]]
# https, not http!
urls = ["https://127.0.0.1:8086"]
## Use TLS but skip chain & host verification
insecure_skip_verify = true
Pourquoi avons-nous activé le paramètre
insecure_skip_verify
?
Parce que nous utilisons un certificat auto-signé.
Par conséquent, l’identité du serveur InfluxDB n’est pas certifiée par une autorité de certification. Si vous voulez un exemple de ce à quoi ressemble une authentification TLS complète, assurez-vous de lire le guide de la journalisation centralisée sous Linux guide to centralized logging on Linux..
Redémarrez Telegraf, et assurez-vous à nouveau que vous n’obtenez aucune erreur.
sudo systemctl restart telegraf
sudo journalctl -f -u telegraf.service
InfluxDB (cli), explorer vos mesures
Avant d’installer Grafana et de créer notre premier tableau de bord Telegraf, jetons un coup d’œil rapide à la façon dont Telegraf regroupe nos mesures.
Par défaut, pour les systèmes Linux, Telegraf commencera à rassembler les données relatives aux performances de votre système via des plugins nommés cpu, disk, diskio, kernel, mem, processes, swap et system.
Les noms sont assez explicites, ces plugins rassemblent des données sur l’utilisation du processeur, de la mémoire ainsi que sur les opérations de lecture et d’écriture des E/S sur le disque.
Vous cherchez un tutoriel dédié aux entrées/sorties de disques ? Voici comment configurer Grafana et Prometheus pour surveiller les entrées/sorties de disques en temps réel (Here’s how to setup Grafana and Prometheus to monitor Disk I/O in real time).
Jetons un coup d’oeil rapide à l’une des mesures.
Pour ce faire, utilisez le CLI InfluxDB avec les paramètres suivants.
Les données sont stockées dans la base de données “telegraf”, chaque mesure étant nommée comme le nom du plugin d’entrée.
influx -ssl -unsafeSsl -username 'admin' -password 'admin49450'
Connected to https://localhost:8086 version 1.6.4
InfluxDB shell version: 1.6.4
> USE telegraf
Using database telegraf
> SELECT * FROM cpu WHERE time > now() - 30s
name: cpu
time cpu host usage_guest usage_guest_nice usage_idle usage_iowait usage_irq usage_nice usage_softirq usage_steal usage_system usage_user
---- --- ---- ----------- ---------------- ---------- ------------ --------- ---------- ------------- ----------- ------------ ----------
1601209930000000000 cpu-total debian-10 0 0 93.91943248037752 0 0.12667848999247106 0 0.05067139599696682 0 0.17734988598925785 5.725867747658943
1601209930000000000 cpu0 debian-10 0 0 92.08121827412232 0 0.2030456852792135 0 0 0 0.20304568527903313 7.512690355331151
1601209930000000000 cpu1 debian-10 0 0 92.10526315790443 0 0.10121457489879213 0 0.10121457489882808 0 0.10121457489872021 7.591093117410919
1601209930000000000 cpu2 debian-10 0 0 94.42755825735229 0 0.20263424518741727 0 0 0 0.10131712259363665 5.268490374873713
[...]
Les données sont correctement agrégées sur le serveur InfluxDB.
Dashboard Grafana
On suppose que Grafana est préalablement installé… Accès par le lien http://lxcdeb:3000, saisie “admin” et son mot de passe “grafana49450”
1 - Ajouter InfluxDB comme source de données sur Grafana
Dans le menu de gauche, cliquez sur la section Configuration > Data sources
Dans la fenêtre suivante, cliquez sur “Add datasource”.
Dans le panneau de sélection des sources de données, choisissez InfluxDB comme source de données.
Voici la configuration à respecter pour configurer InfluxDB sur Grafana.
Cliquez sur “Save & Test”, et assurez-vous que vous n’obtenez aucune erreur.
502 Bad Gateway error
? Assurez-vous que le champ de votre URL est défini sur HTTPS et non sur HTTP.
2 - Importation d’un tableau de bord Grafana
Nous n’allons pas créer un tableau de bord Grafana pour le Telegraf, nous allons utiliser un tableau de bord préexistant déjà développé par la communauté.
Pour importer un tableau de bord Grafana, sélectionnez l’option Import dans le menu de gauche, sous l’icône Plus.
Sur l’écran suivant, importez le tableau de bord avec l’identifiant 8451.
Il s’agit d’un tableau de bord créé par Gabriel Sagnard qui affiche les mesures du système collectées par Telegraf.
De là, Grafana devrait automatiquement essayer d’importer ce tableau de bord.
Ajoutez l’InfluxDB configuré précédemment comme source de données du tableau de bord et cliquez sur “Importer”.
Nous avons maintenant notre premier tableau de bord Grafana affichant les mesures du Telegraf.
C’est ce que vous devriez maintenant voir sur votre écran.
3 - Modification des requêtes InfluxQL dans l’explorateur de requêtes Grafana
Lors de la conception de ce tableau de bord, le créateur a spécifié le nom d’hôte “nagisa”, qui est évidemment différent d’un hôte à l’autre (le mien est par exemple nommé “debian-10”)
Pour le modifier, allez dans l’explorateur de requêtes en survolant le titre du panneau et en cliquant sur “Modifier”.
Dans le panneau “Query”, changez d’hôte, et le panneau devrait commencer à afficher des données.
Ne pas oublier de sauvegarder !
Retournez au tableau de bord, et voici ce que vous devriez voir.
UUID LmTA89zmk
http://lxcdeb:3000/d/LmTA89zmk/influxdb-telegraf?orgId=1&refresh=1m
Conclusion
Dans ce tutoriel, vous avez appris à installer une pile complète Telegraf, InfluxDB et Grafana sur votre serveur.
Alors, que devez-vous faire à partir de là ?
La première chose à faire serait de connecter Telegraf à différentes entrées, de rechercher les tableaux de bord existants dans Grafana ou de concevoir vos propres tableaux de bord.
Saviez-vous par exemple que vous pouviez surveiller les hackers SSH en temps réel avec la pile TIG ?
Dépannage
Error writing to output [influxdb] : could not write any address
Solution possible : s’assurer qu’InfluxDB fonctionne correctement sur le port 8086.
sudo apt install lsof
sudo lsof -i -P -n | grep influxdb
influxd 17737 influxdb 128u IPv6 1177009213 0t0 TCP *:8086 (LISTEN)
Si vous avez un port différent, modifiez votre configuration Telegraf pour transférer les mesures vers le port personnalisé qui a été attribué à votre serveur InfluxDB.
[outputs.influxdb] when writing to [http://localhost:8086] : 401 Unauthorized: authorization failed
Solution possible : assurez-vous que les informations d’identification sont correctement définies dans votre configuration Telegraf. Assurez-vous également que vous avez créé un compte pour Telegraf sur votre serveur InfluxDB.
http: server gave HTTP response to HTTPS client
Solution possible : assurez-vous que vous avez activé le paramètre d’authentification https dans le fichier de configuration InfluxDB. Il est réglé par défaut sur false.
x509: cannot validate certificate for 127.0.0.1 because it does not contain any IP SANs
Solution possible : votre vérification TLS est activée, vous devez activer le paramètre insecure_skip_verify car l’identification du serveur ne peut pas être vérifiée pour les certificats auto-signés.
Monitorer un onduleur
- Monitoring your UPS stats and cost with InfluxDB and Grafana on Unraid – Telegraf Edition
- Monitoring your UPS stats and cost with InfluxDB and Grafana on Unraid – Apcupsd Container Edition
- Apcupsd Telegraf Plugin
Recherche “dasboard” existant pour “APC UPS” (https://grafana.com/grafana/dashboards?search=apcups)
Activer le plugin d’entrée APCUPSD dans le télégramme et configurer le(s) serveur(s) de surveillance selon les besoins
sudo nano /etc/telegraf/telegraf.d/apcupsd.conf
[[inputs.apcupsd]]
# # A list of running apcupsd server to connect to.
# # If not provided will default to tcp://127.0.0.1:3551
servers = ["tcp://192.168.0.46:3551"]
#
# ## Timeout for dialing server.
timeout = "10s"
Relancer le service
sudo systemctl restart telegraf
Importer le dashboard ID 10835