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.
Vous en doutez ? Regarder bien ces quelques Dashboard :
Du Dashboard en veux-tu en voilà !
Dashboard Lab
Dans l’exemple ci-dessous un Dashboard qui récupère les infos d’un LAB ESXi, avec les remontées d’info des NAS Synology et de l’onduleur.
Dashboard Synology
Récupération des infos de serveur NAS Synology via SNMP.
Dashboard Hyper-V
Récupération des informations à l’aide de telegraf.
Dashboard Zimbra
Alors convaincu ? Si ce n’est pas encore le cas, une petite vidéo avec toutes les nouveautés de Grafana version 5 :
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 Dashboard 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 (Ubuntu Server)
Installation du serveur Linux
Bon, je ne vais pas détailler l’installation du serveur Linux, ça reste assez basique. 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.
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.
Installation InfluxDB
Exécuter les commandes suivantes pour le téléchargement et l’installation d’InfluxDB.
cd /tmp
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.6.0_amd64.deb
sudo dpkg -i influxdb_1.6.0_amd64.deb
Puis démarrer le service :
sudo systemctl start influxd
Configuration InfluxDB
Nous pouvons créer une base de données pour pouvoir pousser les données qui seront remontées par Telegraf :
influx -execute "CREATE DATABASE influx_db_telegraf"
Créons l’utilisateur influx_user :
influx -execute "CREATE USER telegraf_user WITH PASSWORD 'telegraf_password'" influx -execute "GRANT ALL ON influx_db_telegraf TO telegraf_user"
Il est possible de créer une politique de rétention pour déterminer la durée de conservation des données (52 semaines dans l’exemple ci-dessous) :
influx -execute "CREATE RETENTION POLICY "a_year" ON "influx_db_telegraf" DURATION 52w REPLICATION 1 DEFAULT"
Telegraf
Telegraf est un agent qui collecte des métriques. Cet agent sait récupérer des métriques sur le système sur lequel il tourne. Il est capable de récupérer les métriques via deux modes :
- push : la métrique est poussée dans Telegraf
- pull : Telegraf récupère la métrique en interrogeant le composant qui l’expose (le mode le plus utilisé)
Ces métriques seront insérées au fil de l’eau dans InfluxDB.
Par la suite, vous pouvez installer Telegraf sur chacun des systèmes que vous souhaitez superviser, qu’il tourne sous Linux, Windows ou macOS…
Télécharger TelegrafInstallation de Telegraf
Nous installerons ici Telegraf sur notre serveur Ubuntu.
cd /tmp
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.7.1-1_amd64.deb
sudo dpkg -i telegraf_1.7.1-1_amd64.deb
puis on démarre le service
sudo systemctl start telegraf
Configuration de Telegraf
Il est possible de configurer énormément de paramètres sur Telegraf, mais il fonctionne aussi très bien sorti du carton. Puisque nous avons créé une base de données spécifique pour Telegraf sur Influx, autant l’utiliser !
Éditer le fichier /etc/telegraf/telegraf.conf pour y ajouter l’adresse du serveur, mais surtout la base de données à utiliser et les identifiants.
sudo vi telegraf.conf
Dans mon cas, telegraf est installé sur le même serveur que le serveur de base de données, bien entendu, si c’est sur un autre serveur, il convient d’ajouter également l’url de votre serveur influx.
database = "influx_db_telegraf" username = "telegraf_user" password = "telegraf_password"
Redémarrer ensuite le service telegraf.
sudo systemctl restart telegraf
Chronograf
Chronograf n’est pas indispensable, mais il vous permettra de visualiser plus facilement les data récupérées par InfluxDB et de gérer vos bases de données.
Télécharger ChronografInstallation de Chronograf
Comme pour les autres applications, vérifiez bien que vous téléchargez la dernière version de Chronograf.
cd /tmp
wget https://dl.influxdata.com/chronograf/releases/chronograf_1.3.3.0_amd64.deb
sudo dpkg -i chronograf_1.3.3.0_amd64.deb
Démarrer ensuite le service
sudo systemctl enable chronograf
sudo systemctl start chronograf
Puis vérifier l’installation de Chronograf en visitant l’adresse : http://votre_server_chronograf:8888
Configuration de Chronograf
Depuis Chronograf, vous pouvez gérer vos bases de données et vérifier que votre politique de rétention a bien été créé sur votre base de données influx.
Vous pouvez même jouer un peu à faire un Dashboard sur Chronograf. Cependant, on ne va pas perdre de temps avec ça puisque nous utiliserons Grafana pour ça.
Grafana
On y est !
Grafana est un outil supervision simple et élégant, permettant de s’intégrer facilement à une TSDB, ici InfluxDB. Grafana permet de créer des dashboards avec les métriques brutes ou agrégées provenant d’InfluxDB ou d’ailleurs et permet de définir des seuils d’alertes et les actions associées.
Télécharger GrafanaInstallation de Grafana
Attention de changer l’url de grafana par la dernière version (vous pouvez vérifier la dernière version ici).
cd /tmp wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.2.1_amd64.deb sudo apt-get install -y adduser libfontconfig sudo dpkg -i grafana_5.2.1_amd64.deb sudo service grafana-server start sudo update-rc.d grafana-server defaults 95 10
Par défaut, l’interface web de Grafana est publiée sur le port TCP 3000
Vous pouvez le changer dans la configuration de Grafana.
Ouvrez votre navigateur et allez sur http://ip-de-votre-serveur:3000
pour confirmer que ça fonctionne bien et que vous pouvez accéder à Grafana.
Le nom d’utilisateur et le mot de passe sont « admin » par défaut. Vous serez invité à changer le mot de passe dès la première connexion.
Configuration de 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.
- Graphite
- Elasticsearch
- CloudWatch
- InfluxDB
- OpenTSDB
- Prometheus
- MySQL
- Postgres
- Microsoft SQL Server (MSSQL)
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 :
Ou encore, l’espace disque restant sur le serveur Grafana :
Avec Grafana, vous pouvez tout customiser ou presque. Par exemple ici, on change la couleur en fonction de l’espace disque restant sur notre serveur.
Ensuite, on peut mettre en forme le Dashboard très facilement.
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 Synology 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.
Sources :