Aujourd’hui on va parler un peu supervision. C’est génial d’avoir des dizaines de serveurs, de faire du clustering, d’avoir des périphériques tels que des routeurs, switchs, onduleurs ou autres joyeusetés. Mais s’il n’y a aucune supervision sur tous ces appareils, cela peut vite devenir catastrophique sans que l’on en s’aperçoive.

Alors des systèmes de supervision, il en existe des dizaines, payant ou gratuit, bon ou moins bon. On va ici s’intéresser à Grafana qui est celui que j’ai récemment mis en place.

Avec Grafana, vous allez pouvoir monter de magnifiques Dashboard qui plairons à coup sûr à votre direction. Et ce qui plaira encore plus à votre direction, c’est que Grafana est Open-Source.

Et si on installait Grafana ?

Grafana peut être installé sur de nombreuse plateforme. De Linux à Windows en passant par Mac, Docker ou Arm.

Cela reste assez facile à installer, notamment si vous choisissez l’option Docker. Par contre la configuration des Dashboards peut être un peu plus compliquée en fonction de ce que vous souhaitez récupérer.

Je vais ici vous décomposer les étapes que j’ai effectuées pour installer mon serveur Grafana sous Linux (Raspbian) ==> sur un Raspberry Pi donc.

Une fois Raspbian installé sur le Rpi, on le démarre et on met en place le ssh avec :

sudo raspi-config

Une fois ceci fait, on peut se connecter à celui-ci en SSH depuis notre station de travail, le Raspberry sera serveur.

Installation de Docker

Cela se fait en un tour de passe-passe.

curl -sSL get.docker.com | sh &&   sudo usermod pi -aG docker

Puis :

docker ps

Installation du serveur Linux

Pensez juste à mettre à jour le serveur après l’installation avec les commandes suivantes :

sudo apt-get update
sudo apt-get upgrade

On passe dans le dur ensuite avec l’installation de toute la panoplie nécessaire au bon fonctionnement de Grafana.

Pour voir pleins de beaux dashboards qui donnent envie, rendez-vous ici :

https://play.grafana.org/d/000000003/big-dashboard?orgId=1

InfluxDB

InfluxDB est une base de données Time Series (TSDB) dont les principaux avantages sont les performances, la durée de rétention importante et la scalabilité (enfin ça c’est si tu mets la main au porte-monnaie).

Pour être sûr de télécharger et installer la dernière version, n’hésitez pas à faire un tour sur le site InfluxData.

Pour installer InfluxDB sur Raspberry Pi avec Rasbian Stretch / Debian 9, il y a besoin d’une source apt-get supplémentaire :

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apt-transport-https
sudo apt-get install curl
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list 
sudo apt-get update
sudo apt-get install influxdb
La pile Tick

InfluxDB est maintenant installé. Pour une configuration très rapide, on va ouvrir /etc/influxdb/influxdb.conf et activer le port HTTP sans authentification :

sudo nano /etc/influxdb/influxdb.conf

Pour cela, il suffit de dé-commenter 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 = false

Comme ceci :

Ensuite, on redémarre le service InfluxDB :

sudo service influxdb restart

Notre base de données est prête. 🙂

Grafana

Grafana a également besoin d’une source apt-get supplémentaire pour une installation sur Raspberry Pi sous Raspbian Stretch :

sudo apt-get install apt-transport-https curl
curl https://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add -
echo "deb https://dl.bintray.com/fg2it/deb stretch main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana

Une fois installé, on va configurer Grafana en activant le protocole http et le port à utiliser pour l’interface Web de Grafana. Pour se faire, on va modifier /etc/grafana/grafana.ini :

sudo nano /etc/grafana/grafana.ini

Les modifications à effectuer :

[server]
# Protocol (http, https, socket)
protocol = http

# The ip address to bind to, empty will bind to all interfaces
;http_addr =

# The http port  to use
http_port = 3000

Après avoir effectué ces modifications, on redémarre le service Grafana :

sudo service grafana-server restart

Maintenant, l’interface web de Grafana est accessible à l’adresse <IP de votre Raspberry Pi>:3000. Par défaut, le nom d’utilisateur est : admin. Le mot de passe est : admin.

Pour plus d’informations quant à la configuration de Grafana, leur documentation est très complète.

Maintenant, on va aller sur l’interface Web de Grafana pour afficher nos valeurs sur un graphique. La première chose à effectuer est d’ajouter une source de données. Ici on va ajouter la base de données de notre serveur local.

Mais avant tout nous devons la créer depuis le terminal :

influx -execute "CREATE DATABASE influx_db_telegraf"

Ensuite on crée l'user et son password :

influx -execute "CREATE USER telegraf_user WITH PASSWORD 'telegraf_password'"

On attribue les droits :

influx -execute "GRANT ALL ON influx_db_telegraf TO telegraf_user"

Et on donne une durée de vie d'un an aux données :

influx -execute "CREATE RETENTION POLICY "a_year" ON "influx_db_telegraf" DURATION 52w REPLICATION 1 DEFAULT"

On va installer les outils nécessaires sur notre raspberry :

sudo apt-get update
sudo apt-get install snmp snmp-mibs-downloader

Et on peut évidemment créer autant de BDD que nécessaire :

influx -execute "CREATE DATABASE telegraf"
influx -execute "GRANT ALL ON telegraf TO telegraf_admin"
influx -execute "CREATE USER telegraf_admin WITH PASSWORD 'telegraf_motdepasse'"
influx -execute "GRANT ALL ON telegraf TO telegraf_admin"
influx -execute "CREATE RETENTION POLICY "a_year" ON "telegraf" DURATION 52w REPLICATION 1 DEFAULT"

Installation de Telegraf

Un petit coup de  :

sudo aptitude install telegraf
sudo systemctl enable telegraf
sudo systemctl start telegraf

Désormais il ne nous reste plus qu'à paramétrer notre raspberry pour que la BDD Influx et Telegraf communiquent bien ensemble :

sudo nano /etc/telegraf/telegraf.conf

Avec les données suivantes :

Une fois ceci fait on redémarre Telegraf :

sudo systemctl restart telegraf

Et c'est terminé ! attaquons maintenant le côté fun, la création de dashboards Grafana.

Mais avant tout, n'oubliez pas de paramétrer votre raspberry avec une IP statique :

# Example static IP configuration:
interface eth0
static ip_address=192.168.1.4/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.1.254

Pour ce faire on se rend dans :

sudo nano /etc/dhcpcd.conf

Et on redémarre le service network pour que la configuration se fasse sans un reboot :

sudo /etc/init.d/networking restart

Les dashboards Grafana

Vous voilà maintenant sur Grafana, pour commencer à jouer avec, il va falloir ajouter des sources de données. Cliquez sur « Configuration », puis « Data Sources ».

Dans notre cas, nous ajouterons notre base de données Telegraf qui est hébergée sur InfluxDB. Cliquez sur « Add data source ». Puis entrer les informations nécessaires.

Grafana est compatible avec de nombreux autres types de sources, vous pouvez donc facilement vous amuser à créer des dashboards pour un peu tout et n’importe quoi.

Maintenant que vous avez ajouté votre première source de données, vous pouvez commencer à ajouter des « Panel » à votre « Dashboard ».

En fonction de ce que vous souhaitez afficher sur votre Dashboard, sélectionner le Panel adéquat. Vous devrez ensuite créer une requête pour récupérer les données que vous souhaitez afficher dans votre dashboard.

Voici un exemple ici avec l’utilisation du CPU sur le serveur Grafana :

On constate qu'ici l'host ciblée est mon Macbook, comment procéder pour monitorer son MacBook connecté sur le même réseau que notre serveur RPI ?

On utilise Brew ;)

brew update
brew install telegraf

Puis on modifie la config Telegraf, notre collecteur, comme sur le RPI :

sudo nano /usr/local/etc/telegraf.conf

Comme ceci :

Une fois ceci fait, Telegraf est relié au serveur InfluxDB et à la base de donnée qui lui est destinée, on peut donc moniter depuis Grafana en paramétrant la bonne source de données (data sources).

Résultat :

Le MacBook en monitoring en temps réel

Votre raspberry est donc prêt à monitorer tous les appareils de votre réseau ou presque.

Voici un example pour le Raspberry Pi évidemment :

Monitoring du Raspberry

Génial non ??

Je ne rentrerai pas beaucoup plus dans les détails, cet article est déjà bien long ! Cependant, je reviendrais peut-être dans d’autres articles sur des parties un peu plus spécifiques, comme la récupération des métriques via SNMP. Sachez qu’il existe de nombreux dashboard disponibles gratuitement grâce à la communauté Grafana et de nombreux scripts de récupération de métrique sur Github également.

Schéma récapitulatif :

Tick

Documentation :