Supervision avec Zabbix et Grafana

Écrit par Alexandre Dos Reis
Créé le 4/26/2021, modifié le 6/4/2021.
Zabbix 5.4 - Licence GPL V2 - Docs
Grafana 7.5.7 - Licence Apache 2.0 - Docs

I. Présentation

ZABBIX est un logiciel libre permettant de surveiller l'état de divers services réseau, serveurs et autres matériels réseau et produisant des graphiques dynamiques de consommation des ressources. C'est un logiciel créé par Alexei Vladishev.

ZABBIX peut être décomposé en trois parties séparées : Le serveur de données, l'interface de gestion et le serveur de traitement. Chacune d'elles peut être disposée sur une machine différente pour répartir la charge et optimiser les performances.

Le système dont l'utilisation des ressources doit être analysée comporte un agent fonctionnant sous forme de daemon appelé zabbix-agentd et écoutant par défaut sur le port TCP 10050. Celui-ci intègre des fonctions permettant d'échantillonner l'état des ressources des différents composants du système (Mémoire, CPU, débit réseau, entrées-sorties, nombre de connexion à une application, etc.) et propose si nécessaire l'exécution de scripts. Le serveur Zabbix appelle donc régulièrement cet agent et lui demande les informations concernant telle ou telle ressource.

Grafana permet d'interroger, de visualiser, d'alerter et de comprendre les métriques, peu importe où elles sont stockées. Il est possible de créer, explorer et partager des tableaux de bord personnalisée.

II. Mise en situation

L'objectif ici est d'installer un serveur de supervision Zabbix, de surveiller la machine cliente et ensuite d'installer Grafana pour obtenir de belles métriques et dashboard.

MachineOSDistributionVersionRôleNom d'hôteIP
Machine Virtuelle Virtual BoxGNU / LinuxDebian10.5Serveur Zabbix & Grafanazabbix172.16.0.47
Machine Virtuelle Virtual BoxGNU / LinuxDebian10.5Client Zabbixclient-zabbix172.16.0.46

III. Installation de Zabbix & MariaDB

On commence par installer le dépôt Zabbix :

$
wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release\_5.4-1+debian10\_all.deb
$
dpkg -i zabbix-release[object Object]all.deb
$
apt update

On installe le serveur Zabbix, l'agent Zabbix et le front-end

$
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent -y

Une base de donnée est nécessaire, ici on choisit mariaDB :

$
apt install mariadb-server

On sécurise avec cette commande, on colle un mot de passe pour root :

$
mysql_secure_installation

On se connecte à MariaDB pour y créer la base de donnée Zabbix et l'utilisateur Zabbix :

$
mysql -uroot -p
SQL $
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
SQL $
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix';

On crée les tables grâce à un script fournit par Zabbix :

$
zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -uzabbix -p zabbix

On peut vérifier que les tables ont bien été crées avec :

$
mysql -uroot -p zabbix
SQL $
show tables;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| auditlog                   |
| auditlog_details           |
| autoreg_host               |
| conditions                 |
| config                     |
| config_autoreg_tls         |
| corr_condition             |
| corr_condition_group       |
| corr_condition_tag         |
| corr_condition_tagpair     |
(...)
| users_groups               |
| usrgrp                     |
| valuemap                   |
| valuemap_mapping           |
| widget                     |
| widget_field               |
+----------------------------+
166 rows in set (0.001 sec)

On édite le fichier /etc/zabbix/zabbix_server.conf pour y ajouter le mot de passe de la bdd zabbix :

DBPassword=******

On va démarrer le serveur, l'agent et apache2 puis on les active au lancement de la machine :

$
systemctl restart zabbix-server zabbix-agent apache2
$
systemctl enable zabbix-server zabbix-agent apache2

V. Configuration de Zabbix

La configuration se passr via le front-end. On se rend donc sur l'adresse http://172.16.0.47/zabbix :

On devrait avoir cette fenêtre, naturellement on choisit la langue par défaut en français.

Zabbix écran de configuration

On vérifie bien que tous les prérequis sont au verts.

Zabbix écran de configuration

On configure l'accès de l'application Zabbix à la base de données :

Zabbix écran de configuration

Si on a installer le serveur zabbix sur un autre hôte, on peut le renseigner ici sinon on laisse tout par défaut :

Zabbix écran de configuration

On choisit le fuseau horaire (UTC+2:00 pour la France) et le thème :

Zabbix écran de configuration

On récapitule la configuration :

Zabbix écran de configuration

Ecran de succès si toute la conf est correcte :

Zabbix écran de configuration

V. Installation de l'agent sur une machine à superviser

a. Agent pour Debian et Ubuntu

L’agent est un programme qui se lance en tant que service et qui va faire des remontés au serveur Zabbix.

$
apt install zabbix-agent

Puis on édite le fichier de configuration situé ici /etc/zabbix/zabbix_agentd.conf :

Server=172.16.0.47
ServerActive=172.16.0.47
Hostname=client-zabbix

Server : L'adresse ou le nom du serveur Zabbix. Les connexions entrantes seront acceptées uniquement à partir des hôtes répertoriés ici. ServerActive : L'adresse ou le nom du serveur Zabbix où seront envoyés les informations de l'agent. Plusieurs adresses délimitées par des virgules peuvent être fournies pour utiliser plusieurs serveurs Zabbix indépendants en parallèle. Hostname : Doit correspondre au nom de la machine à superviser. Obligatoire pour les vérifications actives et doit correspondre aux noms d'hôte configurés sur le serveur.

b. Agent pour MacOS

Se reporter à la procédure sur le site officiel.

c. Agent pour Windows

Se reporter à la procédure sur le site officiel.

VI. Création d'un hôte dans Zabbix

Même si nous avons installer l'agent sur la machine à monitorer, l'apparition de celle-ci ne se fait pas tout seule, pour cela il faut se rendre dans Configuration, hôtes puis Créer un hôte en haut à droite. Voila les informations à remplir pour superviser une machine Debian :

Zabbix écran de configuration

Sur l'onglet modèles, on ajoute un template :

Zabbix écran de configuration

Puis on clique sur Ajouter. Après quelques secondes, la machine devrait être active dans l'onglet Surveillance, Hôtes :

Zabbix écran de configuration

VII. Installation de Grafana

a. Ajout du dépôt

$
sudo apt-get install -y adduser libfontconfig1
$
wget https://dl.grafana.com/oss/release/grafana_7.5.7_amd64.deb
$
sudo dpkg -i grafana[object Object]amd64.deb

L'utilisateur grafana a été créé.

Sélection du paquet grafana précédemment désélectionné.
(Lecture de la base de données... 32818 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de grafana_7.5.7_amd64.deb ...
Dépaquetage de grafana (7.5.7) ...
Paramétrage de grafana (7.5.7) ...
Ajout de l'utilisateur système « grafana » (UID 110) ...
Ajout du nouvel utilisateur « grafana » (UID 110) avec pour groupe d'appartenance « grafana » ...
Le répertoire personnel « /usr/share/grafana » n'a pas été créé.
NOT starting on installation, please execute the following statements to configure grafana to start automatically using systemd
 sudo /bin/systemctl daemon-reload
 sudo /bin/systemctl enable grafana-server
You can start grafana-server by executing
 sudo /bin/systemctl start grafana-server
Traitement des actions différées (« triggers ») pour systemd (241-7~deb10u7) ...

On execute les commandes citées :

$
systemctl daemon-reload
$
systemctl enable grafana-server
$
systemctl start grafana-server

b. Configuration du fichier grafana.ini

Le fichier de configuration principale se trouve ici : /etc/grafana/grafana.ini, voici la documentation du site officiel.

Voici quelques exemples de configuration :

;http_port = 3000 : Définit le port d'écoute de l'application. ;cert_file = : Chemin d'accès au fichier de certificat (si le protocole est défini sur https ou h2). ;cert_key = : Chemin d'accès au fichier de la clé de certificat (si le protocole est défini sur https ou h2).

[database]
# You can configure the database connection by specifying type, host, name, user and password
# as separate properties or as on string using the url properties.

# Either "mysql", "postgres" or "sqlite3", it's your choice
;type = mysql
;host = 127.0.0.1:3306
;name = grafana
;user = grafana
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
;password = grafana

A chaque changement du fichier de configuration, il faut relancer Grafana :

$
systemctl restart grafana-server

L'application devrait être accessible par défaut sur le port 3000 : http://172.16.0.47:3000

Grafana

Le mot de passe par défaut est admin et admin. La page d'accueil devrait resssembler à ça :

Grafana

c. Base de données

Grafana a besoin d'une base de données pour stocker les utilisateurs et les tableaux de bord (et d'autres choses). Par défaut, il est configuré pour utiliser sqlite3 qui est une base de données embarquée (incluse dans le binaire principal de Grafana).

On créé un utilisateur grafana et une base de donnée grafana :

$
mysql -uroot -p
$
CREATE DATABASE grafana CHARACTER SET utf8 COLLATE utf8_bin;
$
[object Object]

d. Installer un plugin pour Zabbix

Par défaut, Grafana prend en charge un grand nombres de sources de données (data source) mais Zabbix n'en fait pas parti. Cependant, il est possible d'installer un plugin pour le rendre compatible :

$
grafana-cli plugins install alexanderzobnin-zabbix-app
installing alexanderzobnin-zabbix-app @ 4.1.5
from: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/4.1.5/download
into: /var/lib/grafana/plugins

Installed alexanderzobnin-zabbix-app successfully

Restart grafana after installing plugins . <service grafana-server restart>
$
service grafana-server restart

Il faut maintenant l'activer sur l'application, pour ce faire, sur le menu de gauche aller dans Configuration, Plugins, taper zabbix dans la barre de recherche, le plugin devrait apparaitre, cliquer dessus.

Grafana

Toujours dans le menu Configuration, sélectionner Data source puis Add data source. Tapper zabbix dans la recherche. Pour une configuration de base, voici ce qu'il faut remplir :

Grafana

Grafana

ne pas oublier d'importer les dashboards par défaut qui sont livrés avec le plugins :

Grafana

Puis cliquer sur test and Save.

Les métriques devraient être disponible dans Dashboard, Manage.

e. Mettre un dashboard par défaut sur la page d'accueil

Sur le menu de gauche, aller Configuration, puis Preferences. Dérouler la liste de Home Dashboard, les dashboard existant devraient apparaître. Cliquer sur Save.

Grafana

Retourner sur la page d'accueil pour tester.

Grafana