meta données pour cette page
Monitorer sa machine avec Grafana
Suite au test pas très concluant de Munin car sa génération des graph est lourde en plus j'ai du mal à récupérer et afficher toutes les informations que je souhaite.
Grafana me permet ainsi d'avoir un aperçu visuel très rapide de la santé du système en plus de pouvoir afficher et mettre en valeur précisément les valeurs que je veux grâce à son interface très ergonomique.
Liens utiles :
Installation de telegraf
Commençons par aller chercher les données métriques d'un système tel que la température actuelle du système ou récupérer la charge actuelle. Installons-le!
apt install telegraf
Faison un backup du fichier de configuration par défaut :
mv /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.orig
Et ajoutons notre configuration :
vim /etc/telegraf/telegraf.conf
[tags] # Configuration for telegraf agent [agent] debug = false flush_buffer_when_full = true flush_interval = "15s" flush_jitter = "0s" hostname = "debian64" interval = "15s" round_interval = true
vim /etc/telegraf/telegraf.d/outputs.conf
[[outputs.influxdb]] database = "telegraf" precision = "s" urls = [ "http://127.0.0.1:8086" ] username = "telegraf" password = "le_mot2passe"
vim /etc/telegraf/telegraf.d/inputs_system.conf
# Read metrics about CPU usage [[inputs.cpu]] percpu = false totalcpu = true fieldpass = [ "usage*" ] # Read metrics about disk usagee [[inputs.disk]] fielddrop = [ "inodes*" ] mount_points=["/","/home"] # Read metrics about diskio usage [[inputs.diskio]] devices = ["sda2","sda3"] skip_serial_number = true # Read metrics about network usage [[inputs.net]] interfaces = [ "eth0" ] fielddrop = [ "icmp*", "ip*", "tcp*", "udp*" ] # Read metrics about memory usage [[inputs.mem]] # Read metrics about swap memory usage [[inputs.swap]] # Read metrics about system load & uptime [[inputs.system]]
N'oublions pas de vérifer que tout fonctionne correctement :
telegraf -test -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d/
On fait comprendre au daemon qu'il y a des nouveautés :
systemctl reload telegraf.service
Installation de influxdb
Ensuite, on a besoin d'une base qui enregistrera avec précisions les données métriques passé par telegraf.
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add - echo "deb https://repos.influxdata.com/debian jessie stable" > /etc/apt/sources.list.d/influxdb.list apt update && apt install influxdb -y systemctl start influxdb.service
Créons par la suite la base et l'utilisateur en passant la commande suivante :
influx
CREATE DATABASE telegraf CREATE USER telegraf WITH PASSWORD 'telegraf' GRANT ALL ON telegraf TO telegraf
On souhaite seulement conserver les données durant 1 mois et cela permettra également limiter la taille de la base :
CREATE RETENTION POLICY thirty_days ON telegraf DURATION 30d REPLICATION 1 DEFAULT
Bonus
Il est possible de désactiver les logs concernant les informations sur les POST en renseignant cette directive dans la section suivante :
[http] log-enabled = false
Si l'on souhaite questionner la base à l'aide de curl :
curl -G http://localhost:8086/query --data-urlencode "q=SHOW DATABASES"
Installation de Grafana
Après la récupération et le stockage des données, on peut maintenant s'attaquer à son affichage. Installons-le!
- Si vous disposez d'un Raspberry PI :
Il vous suffira alors d'installer le package avec la version que vous souhaitez :
dpkg -i https://github.com/fg2it/grafana-on-raspberry/releases/download/v5.0.4/grafana_5.0.4_armhf.deb
Dans mon cas, j'ai pas eu besoin d'indépendances supplémentaires.
- Si vous disposez d'une machines x86, 64bits, etc :
echo 'deb https://packagecloud.io/grafana/stable/debian/ jessie main' > /etc/apt/sources.list.d/grafana.list curl https://packagecloud.io/gpg.key | sudo apt-key add - apt update && apt install grafana -y
Indiquons que pour la gestion des comptes soient faite via une base SQLite en dé-commentant ces directives :
vim /etc/grafana/grafana.ini
type = sqlite3 path = grafana.db
On fait bien comprendre ces changements :
systemctl start grafana-server
Ainsi l'interface est disponible à cette adresse : http://localhost:3000 Les identifiants par défaut sont admin et admin comme mot de passe.
Rendre accéssible sur les internets
Grafana écoute sur le port 3000 et on voudrait que le service soit accessible via un sous-domaine. Alors on peut le faire passer par Nginx ainsi :
vim /etc/nginx/sites-enabled/grafana.conf
server { listen 80; server_name grafana.mon-domaine.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header Authorization ""; } access_log off; error_log /var/log/nginx/monitorix-error.log; }
Ainsi on peut y accéder avec l'URL http://grafana.mon-domaine.com
Monitorer sa bande passante
Il est possible d'ajouter facilement des scripts maison et vu que j'ai une connexion Free chez moi alors voici deux scripts qui permettent de récupérer le débit montant et descendant :
Créons d'abord un endroits pour les stoker :
mkdir /etc/telegraf/scripts
- upload.py
#!/usr/bin/python # -*- coding: utf-8 -*- import urllib import re print re.search(".*ATM.*", urllib.urlopen("http://mafreebox.freebox.fr/pub/fbx_info.txt").read()).group().split()[4]
- download.py
#!/usr/bin/python # -*- coding: utf-8 -*- import urllib import re print re.search(".*ATM.*", urllib.urlopen("http://mafreebox.freebox.fr/pub/fbx_info.txt").read()).group().split()[2]
Puis on informe telegraf que l'on souhaite récupérer ces mesures :
vim /etc/telegraf/telegraf.d/inputs_system.conf
[[inputs.exec]] commands = ["/etc/telegraf/scripts/download.py"] timeout = "10s" name_override = "download" data_format = "value" data_type = "integer" [[inputs.exec]] commands = ["/etc/telegraf/scripts/upload.py"] timeout = "10s" name_override = "upload" data_format = "value" data_type = "integer"
On prend en compte ces changements :
systemctl reload telegraf.service
Concevoir ses graph
Voici une belle vidéo faite par Guillaume Leduc qui explique comment, pour commencer, faire ses premiers graph : https://vimeo.com/170656249