
Dans ce tutoriel, nous allons installer et configurer la solution de supervision Zabbix sur Linux afin de superviser des hôtes Linux et Windows.
Zabbix est une solution libre et open source qui permet de superviser une infrastructure ainsi que la disponibilité des applications et des services grâce à des fonctionnalités clés, telles que :
La collecte de métriques (charge CPU, état d’un service, latence réseau…) dans une base de données via un agent ou le protocole SNMP.
La configuration de déclencheurs (triggers) pour détecter et déclarer automatiquement des alertes de type « avertissement » ou « problème ».
Un mécanisme d’alerte avancé, prenant en charge de nombreux médias : Email, SMS, Webhook, scripts d’alerte personnalisés…
La visualisation des données en temps réel sous forme de dashboards.
La découverte automatique des équipements réseaux.
L’utilisation de l’API Zabbix, permettant d’automatiser des tâches ou encore d’utiliser Zabbix via un logiciel tiers.
L’intégration LDAP, pour connecter Zabbix à n’importe quel annuaire LDAP dont Active Directory.
Source : Zabbix
Il s’agit d’une solution hautement personnalisable et complète, capable de s’adapter à un large type d’environnements. Preuve en est, beaucoup de grandes organisations utilisent Zabbix pour superviser leur infrastructure comme Orange, Dell ou encore l’ICANN.
En théorie, Zabbix est capable de superviser : des serveurs, des conteneurs, des équipements réseaux, des environnements cloud ou encore des appareils IoT. Il est par ailleurs très performant : le logiciel étant développé majoritairement en C, un langage bas niveau qui compose de nombreux systèmes d’exploitation et logiciels performants et très utilisés : Unix, Linux, Windows, Apache http Server, PostgreSQL….
Fondé en 2001 par Alexei Vladishev, le projet est désormais maintenu par l’entreprise Zabbix SIA. Zabbix offre par ailleurs, depuis quelques années, un support professionnel et une offre SaaS via sa filiale Zabbix LLC, permettant de contribuer au financement de ce projet open source. En effet, Zabbix est gratuit depuis ses débuts et il l’est encore aujourd’hui : vous pouvez l’héberger sur votre serveur, que ce soit pour vos besoins internes ou pour vos clients.
L’ensemble de la documentation (très riche d’ailleurs) est disponible sur le site officiel de Zabbix :
Dans le cadre du tutoriel, nous installerons la version 7.4 de Zabbix qui est la dernière version stable au moment où je rédige cet article.
Voici le lab qui sera déployé pour ce tutoriel :
1 VM Linux avec la distribution de votre choix sur laquelle sera installé Zabbix.
1 VM Linux Debian cliente du serveur Zabbix, sur lequel sera installé le paquet KEA DHCP. Il nous servira d’exemple pour illustrer la supervision d’un serveur en production.
1 VM Windows 11 pour explorer la partie supervision Windows.
Si vous déployez Zabbix dans un environnement virtualisé, les VM devront être configurées en mode « Bridge » (accès par pont) ou « NAT » afin de pouvoir communiquer entre elles. Le plan d’adressage IP est fourni à titre purement indicatif.
Remarque : pour information, Zabbix est compatible avec un réseau IPv6. Vous pouvez donc superviser un environnement IPv4, IPv6 ou mixte.
Prérequis de Zabbix
Systèmes d’exploitation compatibles
Avant de procéder à son installation, voyons ensemble les prérequis nécessaires pour accueillir le serveur Zabbix.
Tout d’abord, le serveur Zabbix est hébergeable sur une grande partie des systèmes Unix et Linux ainsi que macOS. Cependant, le serveur Zabbix ne peut pas être installé sur un OS Windows.
Pour la supervision des hôtes, il existe deux agents :
Agent : L’agent original de Zabbix, écrit en C, qui effectue les vérifications standards comme l’état CPU, mémoire, disque… C’est une solution éprouvée et stable pour monitorer des systèmes variés.
Agent 2 : Une version plus récente et moderne, développée principalement en Go, qui peut remplacer l’agent classique en offrant des fonctionnalités supplémentaires. Il est conçu pour être plus extensible via des plugins, et inclut des métriques spécifiques à des systèmes (Docker, bases de données, services systemd…).
Voici un tableau qui montre les OS compatibles :
OS
Serveur
Agent
Agent 2
Linux
(Red Hat, Debian, Oracle Linux, Alma Linux, Ubuntu …)
✅
✅
✅
Windows
Agent : de XP / Windows Server 2003 à aujourd’hui
Agent 2 : de Windows 10 / Windows Server 2016 à aujourd’hui
❌
✅
✅
macOS
✅
✅
❌
Unix (Solaris, IMB AIX, HP-UX, Solaris, FreeBSD…)
✅
✅
❌
Si vous avez besoin de précisions supplémentaires, vous pouvez consulter la documentation officielle (en anglais pour la version 7.4) :
Composants
Zabbix repose sur différents composants, à savoir un serveur Web, PHP et une base de données, pour fonctionner. Voici les informations nécessaires à savoir :
Base de données compatibles :
MySQL/Percona : 8.0.30 Minimum
MariaDB : 10.5 Minimum
PostgreSQL : 13.0 Minimum
Remarque : Oracle Database est compatible avec Zabbix mais n’est pas supporté sur les versions 7.2 et 7.4.
PHP : Version 8.0.0 Minimum
Serveur Web :
Apache 2.4 Minimum
Nginx 1.20 Minimum
Pour cette démonstration, nous allons installer Zabbix, Apache2, PHP et MySQL sur le même serveur. Rien ne vous empêche de séparer les rôles en fonction de l’organisation ou de la taille de votre infrastructure.
Remarque : Pour des infrastructures ayant beaucoup d’équipements et de métriques à monitorer, il est recommandé de séparer le serveur Zabbix et la base de données. En effet, la sollicitation permanente de la base de données pour actualiser les données peut monopoliser une part importante des ressources matérielles, au détriment du serveur Zabbix lui-même, et dégrader ses performances ou sa disponibilité.
Si vous avez besoin de précisions supplémentaires, vous pouvez consulter la documentation officielle :
Il existe également d’autres composants externes aux serveurs Zabbix qui ne seront pas installés lors de ce tutoriel :
Java Gateway : permet de collecter des métriques spécifiques aux applications Java comme Tomcat par exemple.
Web Service : composant séparé qui permet à Zabbix de tester des applications web dynamiques en simulant un vrai navigateur (via Selenium/Chrome) pour vérifier des parcours utilisateurs complexes.
Proxy : le proxy Zabbix est un serveur qui va pouvoir collecter des métriques pour le compte du serveur Zabbix principal. Il peut notamment servir pour faire de la répartition de charge ou/et de la supervision de sites distants.
Ressources matérielles
La documentation Zabbix ne donne pas réellement de prérequis concernant les ressources matérielles à mobiliser pour faire fonctionner correctement Zabbix. Voici quelques conseils pour correctement dimensionner votre VM / serveur.
Zabbix et surtout la base de données vont consommer une part significative de ressources CPU, de RAM et d’espace disque en fonction du nombre de métriques que vous monitorez, de la fréquence à laquelle vous les monitorez et de votre moteur de base de données.
Dans la mesure où Zabbix ne préconise pas un SGBD (système de gestion de base de données) spécifique selon les cas d’usage, partez du principe que plus le parc de systèmes à superviser est important, plus le nombre de métriques que vous souhaitez collecter est élevé et plus leur fréquence de collecte est grande, plus votre serveur devra disposer de ressources en CPU et en RAM.
Concernant l’espace disque, il faut prendre également en considération la durée souhaitée de la rétention des données collectées. Des données disponibles avec un historique de 7 jours, 30 jours ou 3 ans n’auront pas les mêmes besoins en quantité de stockage.
Zabbix nous fournit tout de même des exemples de configuration pour la CPU et la RAM :
Taille d’infrastructure
Nombre de métriques monitorés
Nombre de cœurs CPU
Mémoire RAM (GB)
Petite
1000
2
8
Moyenne
10 000
4
16
Grande
100 000
16
64
Très grande
1 000 000
32
96
Et un tableau avec des formules pour calculer la taille de la base de données : Taille BDD Zabbix
Cependant, il reste difficile de prévoir à l’avance le nombre de métriques à superviser sans avoir déployé Zabbix. Une méthode pourrait être de commencer avec un espace disque modéré (par exemple 20 Go pour une petite / moyenne infrastructure), puis d’ajuster progressivement la capacité en fonction de la croissance réelle de la base de données.
Par exemple, si vous définissez une rétention de l’historique sur 7 jours, il suffit d’observer la croissance de la base de données sur cette période et de retenir la taille atteinte en fin de rétention. Vous obtiendrez ainsi une valeur relativement stable qui n’évoluera qu’ensuite qu’au rythme de l’ajout de nouvelles métriques à collecter.
Types d’installations
Zabbix peut être installé de plusieurs manières :
Installation depuis les sources :
Il est possible d’installer le code source et de le compiler soi-même pour avoir un contrôle total de bout en bout sur l’installation. Cette méthode d’installation répond à des besoins spécifiques et ne sera pas utilisée pour ce tutoriel, si toutefois vous souhaitez y jeter un œil, voici la documentation.
Installation des paquets Zabbix depuis les dépôts officiels :
Le site de Zabbix.com fournit les commandes d’installation pour installer les paquets Zabbix depuis les dépôts officiels, avec un large choix de distributions Linux. Le site fournit également des commandes pour configurer les bases de données MySQL et PostgreSQL, ainsi que la configuration du serveur web. C’est la solution recommandée par l’éditeur pour la plupart des installations « On Premise ».
C’est la méthode que nous allons utiliser.
Installation sous forme d’image Docker :
Zabbix est aussi disponible sous la forme d’images Docker, ouvrant ainsi la porte à l’exécution sous la forme de conteneur. Pour en savoir plus : Zabbix container.
Installation sous forme d’image Cloud :
Zabbix fournit des images cloud pour son installation chez différents fournisseurs.
Si vous êtes intéressé pour déployer Zabbix comme une ressource Cloud, voilà le lien : Image Cloud Zabbix.
Important : Il existe une cinquième méthode d’installation, à savoir l’installation de Zabbix sous la forme d’une Appliance. Cela permet d’avoir un Zabbix « prêt à l’emploi » basé sur AlmaLinux/MySQL et disponible sur différents formats (ISO, VHDX, VMX, qcow2…). Cependant, cette Appliance n’est utile que pour un lab ou pour évaluer Zabbix mais n’est pas destinée à un usage en production.
Installation de Zabbix sur Linux
Comme mentionné précédemment, nous allons utiliser les paquets du dépôt officiel de Zabbix, qui est la méthode recommandée par l’éditeur. Rendez-vous à la page d’installation suivante : Installation Zabbix.
Sélectionnez « Packages Zabbix » puis choisissez la version de Zabbix, votre distribution Linux, sa version, les composants Zabbix « Server, Frontend, Agent 2 », sa base de données et le serveur web voulu.
Pour ma part, je suis parti sur l’installation de Zabbix 7.4, sur Rocky Linux 9.6 avec une base de données MySQL et Apache comme serveur web.
Attention : toutes les versions des distributions proposées ne peuvent pas nécessairement héberger les composants du serveur Zabbix, certaines apparaissent néanmoins sur le site uniquement avec les commandes permettant d’installer l’agent, par exemple.
Vous pouvez ensuite suivre la suite du tutoriel en adaptant vos commandes avec celles fournies par Zabbix pour votre distribution.
Pensez bien à taper vos commandes avec un compte ayant des droits administrateurs.
Installation du dépôt Zabbix
La première étape consiste à installer le dépôt Zabbix. Sur Red Hat et ses dérivés (Rocky Linux, Alma Linux, CentOS…), il faut désactiver les paquets Zabbix du dépôt EPEL s’il est utilisé (ce qui n’est pas mon cas), puis installer le dépôt Zabbix avec la commande rpm suivante :
sudo rpm -Uvh https://repo.zabbix.com/zabbix/7.4/release/rocky/9/noarch/zabbix-release-latest-7.4.el9.noarch.rpm
Puis, effacez le cache du gestionnaire de paquets dnf pour avoir les paquets à jour :
sudo dnf clean all
Installation de la base de données
Les commandes d’installation pour la base de données ne sont pas fournies par Zabbix, il faut donc procéder à son installation avant d’installer Zabbix. Pour ma part, j’ai opté pour l’installation d’une base MySQL sur RockyLinux :
sudo dnf install mysql-server -y
Démarrez ensuite le service au démarrage et immédiatement avec la commande :
sudo systemctl enable –now mysqld
Vérifiez que le service est actif avec la commande :
systemctl status mysqld
Nous allons maintenant taper la commande ci-dessous pour effectuer le minimum syndical pour la sécurisation de MySQL :
sudo mysql_secure_installation
Vous serez invité à changer le mot de passe root, mais aussi à supprimer les utilisateurs anonymes, désactiver l’accès root à distance, etc… Tout est bien expliqué. Voici un exemple sur mon serveur pour vous guider :
Installation des paquets Zabbix
Il est maintenant temps d’installer les paquets provenant du dépôt Zabbix pour mettre en place notre serveur. On y retrouve les paquets :
zabbix-server-mysql qui est le cœur du serveur Zabbix compilé pour une base MySQL.
zabbix-web-mysql : contient le nécessaire pour héberger l’interface web de Zabbix.
zabbix-apache-conf : fichiers de configuration pour le serveur Apache qui va permettre de configurer automatiquement le virtual host et PHP.
zabbix-sql-scripts : contient les scripts SQL pour initialiser la base de données (création des tables, index, premières données…).
zabbix-selinux-policy : présent uniquement sur les distributions Red Hat et dérivées, ce paquet configure automatiquement les politiques SELinux pour que le serveur Zabbix puisse fonctionner.
zabbix-agent2 : installe la deuxième version de l’agent Zabbix, qui va nous permettre de monitorer le serveur Zabbix.
sudo dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2 -y
Ces paquets sont en réalité un ensemble de paquets contenant PHP, ses extensions, Apache (httpd)…
Il vous sera demandé si vous souhaitez importer les deux clés GPG suivantes. Tapez « o », puis appuyez sur « Entrée » pour continuer.
Les clés GPG sont des clés cryptographiques utilisées pour vérifier l’authenticité et l’intégrité d’un logiciel ou d’un paquet. Elles sont demandées afin d’établir une relation de confiance avec le dépôt et d’autoriser l’installation des paquets.
Le site de Zabbix nous propose également d’installer des plugins pour superviser différents types de base de données avec l’agent 2. Ce n’est pas obligatoire mais si vous souhaitez avoir des métriques sur la base de données qui héberge votre serveur Zabbix, installez le plugin correspondant.
Par exemple avec la base de données MySQL :
sudo dnf install zabbix-agent2-plugin-mssql -y
Les paquets sont installés, nous allons maintenant préparer la base de données.
Préparation de la base de données
Connectez-vous à votre instance MySQL :
sudo mysql -u root -p
Puis, tapez les commandes suivantes fournies par le site de Zabbix pour : créer la base de données zabbix, créer l’utilisateur zabbix, lui donner tous les privilèges sur la base et autoriser Zabbix à créer des fonctions temporairement dans MySQL.
N’oubliez pas de changer le mot de passe Zabbix avec un mot de passe robuste :
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by ‘motdepasserobuste’;
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
Ensuite, nous allons utiliser la commande zcat qui va permettre de lister le contenu de l’archive server.sql.gz sans la décompresser et d’importer le schéma et les données de Zabbix dans la base MySQL. Tapez le mot de passe de l’utilisateur zabbix créé juste avant.
sudo zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql –default-character-set=utf8mb4 -uzabbix -p zabbix
Retournez dans la base MySQL afin de désactiver l’option permettant à Zabbix de créer les fonctions. Elle n’était utile que pour l’import du schéma et des données.
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;
Finalisation de l’installation
Éditez le fichier suivant :
sudo nano /etc/zabbix/zabbix_server.conf
Décommentez la ligne suivante et ajoutez-y le mot de passe du compte zabbix :
Sauvegardez avec Ctrl+X, la touche O et entrée.
Enfin, redémarrez et activez au démarrage les différents composants du serveur Zabbix :
sudo systemctl restart zabbix-server zabbix-agent2 httpd php-fpm
sudo systemctl enable zabbix-server zabbix-agent2 httpd php-fpm
Théoriquement, tout est prêt et l’accès à la page d’installation de Zabbix est opérationnel. Vous pouvez y accéder en tapant l’adresse suivante :
http://ip_du_serveur/zabbix
Vous arriverez sur cette page pour choisir la langue que vous souhaitez pour votre serveur Zabbix. Une fois choisie, cliquez sur « Prochaine étape ».
La page suivante montre si les prérequis sont remplis pour l’installation du serveur. Regardez que tout est « OK », ce qui est normalement le cas.
Nous allons maintenant tester la connexion à la base de données depuis le serveur Zabbix. Adaptez les différents champs selon votre configuration et tapez le mot de passe de l’utilisateur zabbix.
L’avant-dernière étape consiste à définir des paramètres de base pour le serveur Zabbix. À savoir le nom du serveur, le fuseau horaire et le thème.
Vous pouvez également cocher l’option « Crypter les connexions depuis l’interface web » et importer les différents fichiers demandés (Certificat, clé…). Ce n’est pas le cas dans ce tutoriel. Rassurez-vous, il est toujours possible de modifier ses paramètres après l’installation du serveur Zabbix.
Vous arriverez sur une page résumant votre configuration. Si cela vous convient, cliquez sur « Prochaine étape », puis « Installer ».
Cliquez sur « Terminé » pour arriver sur la page de connexion.
Utilisez les identifiants du compte par défaut de Zabbix :
Nom d’utilisateur : Admin
Mot de passe : zabbix
Normalement vous arriverez sur la page d’accueil qui montre le tableau de bord par défaut :
Votre serveur Zabbix est installé !
Configuration du pare-feu
Enfin, nous allons configurer le pare-feu pour permettre la communication entre le serveur et les agents.
Par défaut, Zabbix utilise deux ports différents pour la communication avec les agents :
Le port 10050 est utilisé par Zabbix pour la communication avec un agent « passif », c’est-à-dire que c’est le serveur qui sollicite l’agent et l’agent ne fait que répondre aux requêtes.
Le port 10051 est quant à lui utilisé pour communiquer avec un agent actif, dans ce cas, c’est l’agent qui initie la connexion au serveur afin de checker les informations à envoyer et les envoyer une fois collectées. Cette méthode est plus adéquate pour un environnement contenant beaucoup de machines car bien moins coûteuse en ressources pour le serveur Zabbix et pour le réseau.
Le port 10050 n’a pas besoin d’être ouvert sur le serveur mais sur l’hôte. Si vous souhaitez que les agents soient actifs, ouvrez le port 10051 en TCP sur le serveur Zabbix avec la / les commandes suivantes :
Pour Red Hat et ses dérivés :
sudo firewall-cmd –permanent –add-port=10051/tcp
sudo firewall-cmd –reload
Pour Debian et ses dérivés (avec ufw) :
sudo ufw allow 10051/tcp
Pour administrer votre serveur Zabbix depuis une machine cliente, pensez à ouvrir le port 80 et 443 en écoute sur votre serveur.
Pour Red Hat et ses dérivés :
sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –permanent –add-service=https
sudo firewall-cmd –permanent –reload
Pour Debian et ses dérivés :
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Gestion des utilisateurs, groupes et rôles
Par mesure de sécurité, la première action à faire va être de modifier le mot de passe par défaut du compte administrateur.
Dans le menu à gauche, cliquez sur « Utilisateurs » puis « Utilisateurs » et cliquez sur le compte « Admin ».
Cliquez ensuite sur « Changer le mot de passe » et actualiser.
Une meilleure pratique serait de créer des utilisateurs locaux par personne, ou d’effectuer une intégration avec un annuaire LDAP, notamment pour des questions de traçabilité.
Pour cela, cliquez sur « Créer un utilisateur » en haut à droite.
Vous pourrez ensuite remplir des informations classiques (Login, nom, prénom, mot de passe…) mais également les affecter à un ou plusieurs groupes :
Et lui affecter des permissions via différents rôles, en cliquant sur « Permissions » :
Il est également possible de créer vos propres rôles en choisissant les droits associés :
Et également des groupes d’utilisateurs personnalisés, dans lesquels vous pourrez définir des permissions en lecture / écriture sur des « Groupes de modèles » et des « Groupes d’hôtes ».
Je vous recommande de revenir sur cette partie une fois le tutoriel terminé, afin de pouvoir créer correctement vos groupes et vos rôles, puisque de nouvelles notions seront abordées progressivement.
Ajout d’un hôte
Avant de pouvoir exploiter notre serveur Zabbix, nous allons procéder à l’ajout d’un premier hôte Linux qui fait office de serveur DHCP dans le lab afin de voir ensemble plusieurs fonctionnalités clés.
Cliquez sur « Surveillance », puis « Hôtes » et « Créer un hôte ».
Dans la fenêtre qui s’affiche, remplissez les champs suivants dans l’onglet « hôte » :
Nom de l’hôte, qui correspond à son identifiant unique dans Zabbix.
Nom visible, qui correspond au nom qui sera affiché dans Zabbix.
Modèle : Un modèle, également appelé « Template », permet aux hôtes d’hériter automatiquement d’un ensemble de paramètres préconfigurés : métriques à collecter, déclencheurs associés, dashboard à afficher… Vous pouvez en ajouter plusieurs, créer les vôtres, modifier les templates existants et la liste fournie par Zabbix est déjà très riche. Je vous conseille très fortement de les utiliser car ils vous feront gagner beaucoup de temps !
Ces modèles sont organisés en « Groupe de modèles » pour séparer les différents types de template.
Vous remarquerez sûrement la présence de deux templates Linux « Linux by Zabbix agent » et « Linux by Zabbix agent active ». Le premier est un modèle conçu pour des agents passif. Le second est conçu pour des agents actifs.
Groupes d’hôtes, qui est un champ obligatoire afin de rattacher un hôte à un groupe, il en existe une petite liste mais vous pouvez tout à fait en créer de nouveaux en écrivant directement le nom du groupe dans la barre de recherche.
Une interface, qui va spécifier à quel IP ou nom DNS est rattaché l’hôte, de quelle manière les informations vont être transmises (Agent, SNMP…) et sur quel port. Pour un hôte, choisissez « Agent » puis renseignez l’adresse IP (et le nom DNS si vous le souhaitez).
Veillez à ce que les paramètres « Surveillé par » soit sur « Serveur » et que la case « Activé » soit cochée.
En résumé, votre page devrait ressembler à ça :
Concernant les autres onglets, voici à quoi ils correspondent et ce qu’on peut y paramétrer:
L’onglet « IPMI » n’est utile que pour la supervision d’un serveur physique, car Zabbix y collecte des informations matérielles (température, ventilateurs, alimentation) via une carte de gestion dédiée intégrée au serveur.
L’onglet « Tags » permet d’ajouter des étiquettes aux hôtes. Les tags permettent d’identifier et d’organiser les hôtes afin de faciliter le filtrage, l’affichage et la gestion des alertes dans Zabbix.
L’onglet « Macros » permet de définir des variables que Zabbix va remplacer automatiquement pour l’hôte.
L’onglet « Inventaire » vous permet de saisir manuellement ou de remonter automatiquement des informations d’inventaire (OS, nom d’hôte, version de l’agent…) pour l’hôte.
L’onglet « Chiffrement » sert à exiger un chiffrement de la connexion avec l’hôte via une PSK ( Pre shared key) ou un certificat.
L’onglet « Table de correspondance » vous permet de mapper certaines valeurs de l’équipement par une valeur lisible par l’être humain.
Dans le cadre de ce tutoriel, le paramétrage de l’onglet « Hôte » suffit. Cliquez sur « Ajouter » pour créer votre hôte.
A la création de celui-ci, nous pouvons remarquer plusieurs éléments. Tout d’abord, la disponibilité est grisée car l’agent n’est pas encore installé sur le serveur en question.
Nous remarquons également la présence de tags, de 43 données remontées, de graphiques et de tableaux de bord. Ces éléments sont issus directement du Template Linux que nous avons associé à cet hôte.
Astuce : il est dorénavant possible de cloner votre hôte afin d’en créer un deuxième qui serait similaire. Il suffit en théorie seulement de modifier le nom d’hôte et l’IP, ce qui fait gagner un certain temps !
Installation de l’agent sur Linux
Passons maintenant à l’installation de l’agent 2 sur SRV-DHCP-01, afin que des données commencent à remonter dans Zabbix. Retournez sur le site de Zabbix, puis allez dans « Packages Zabbix ». Sélectionnez les informations liées à votre distribution puis sélectionnez « Agent 2 » en composant :
Puis suivez les commandes que Zabbix vous fournit. Soit dans mon cas :
wget https://repo.zabbix.com/zabbix/7.4/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.4+debian13_all.deb
sudo dpkg -i zabbix-release_latest_7.4+debian13_all.deb
sudo apt update
sudo apt install zabbix-agent2
sudo systemctl restart zabbix-agent2
sudo systemctl enable zabbix-agent2
Vous pouvez faire un systemctl status zabbix-agent2 afin de vérifier que le service est bien actif.
Modifiez ensuite le fichier suivant :
sudo nano /etc/zabbix/zabbix_agent2.conf
Si vous souhaitez un agent passif, cherchez le paramètre Server= et remplacez l’IP 127.0.0.1 par l’IP du serveur Zabbix :
Si vous souhaitez un agent actif, cherchez le paramètre ServerActive= et remplacez l’IP par celle de votre serveur et le hostname :
Puis rechargez la configuration :
sudo systemctl restart zabbix-agent2
Enfin, uniquement si vous souhaitez un agent passif, ouvrez le port 10050 sur l’hôte :
Pour Red Hat et ses dérivés :
sudo firewall-cmd –permanent –add-port=10050/tcp
sudo firewall-cmd –reload
Pour Debian et ses dérivés (avec ufw) :
sudo ufw allow 10050/tcp
Exploitation des données
Revenez sur l’interface web de votre serveur Zabbix, puis au bout de quelques minutes la disponibilité devrait être verte. En cliquant sur le bouton « Dernières données », vous devriez voir des données remontées.
Chaque donnée que vous voyez correspond à une métrique qui est relevée par l’agent. On peut voir à quand remonte la dernière vérification, la dernière valeur relevée et s’il y a du changement sur cette valeur (une augmentation ou une réduction en général). La fréquence de vérification est dépendante à chaque métrique et n’est pas aléatoire, dans notre cas, ces métriques et fréquences sont associées au template Linux.
On remarque également la présence de tags rattachés à chaque métrique, cela permet de trier par catégorie les différentes métriques. Par exemple, pour voir uniquement les métriques liées au système, vous pouvez cliquer sur le tag « system » :
Il est possible de voir des graphiques liés à ces métriques. Généralement, nous pouvons les utiliser pour consulter l’historique ou la disponibilité d’un service ou pour surveiller la consommation de ressources. Pour illustrer cette idée, voici le graphique correspondant à la disponibilité de l’agent sur le serveur DHCP :
On remarque que l’agent était indisponible au début puisque l’agent est devenu disponible rapidement, ce qui coïncide avec le moment où j’ai modifié le fichier zabbix_agent2.conf.
Ou encore la consommation en RAM sur les dernières 30 minutes :
Toutes ces métriques ne seront pas forcément utiles et vous avez le choix de les désactiver soit au niveau de l’hôte si cela ne concerne que quelques hôtes ou au niveau du template si vous souhaitez que toutes vos machines ne remontent plus ces métriques.
Pour modifier le template, cliquez sur « Collecte de données », « Modèles », puis cherchez le nom du modèle dans la barre de recherche et enfin cliquez sur « Eléments » :
En cliquant sur vos éléments, vous pourrez modifier la fréquence des vérifications ou/et les désactiver :
Création d’un élément (item)
Dans mon cas, j’aimerais superviser le service DHCP de mon serveur Linux afin d’avoir une alerte lorsque le service ne tourne plus. Il faut donc procéder à la création d’un élément puis d’un déclencheur qui lui est associé.
Cet élément va être créé au niveau de l’hôte et non pas au niveau du template car je n’ai qu’un seul serveur Linux DHCP.
Cliquez sur « Collecte de données », « Hôtes » puis « Eléments ».
Tout en haut à droite, cliquez sur « Créer un élément » :
Mon élément nommé « service.dhcp » va vérifier le nombre de process kea-dhcp4 qui tourne grâce à la clé « proc.num » qui va indiquer à l’agent quoi vérifier et comment. Si le résultat est supérieur ou égal à 1 alors le service fonctionne, sinon, s’il est à 0, le service ne tourne plus.
Il existe un certain nombre de clés qui pourront répondre à vos besoins. Je vous invite à lire la documentation pour trouver votre bonheur :
J’ai par ailleurs ajouté un tag à l’élément pour le retrouver plus facilement :
Voici le résultat quand le service est actif :
Et arrêté :
Création d’un déclencheur (trigger)
Notre élément est capable de détecter lorsque le service ne fonctionne plus. Il faut maintenant paramétrer un déclencheur pour déclencher une alerte de supervision dans Zabbix.
Retournez dans « Collecte de données », « Hôtes » puis cliquez sur « Déclencheur » :
Vous pourrez y voir la liste des déclencheurs actifs. Cliquez-en haut à droite sur « Créer un déclencheur :
Voici un petit descriptif des différentes options à savoir pour paramétrer votre déclencheur :
Le nom du déclencheur est la première chose à paramétrer. Veillez à choisir un nom parlant et conforme aux formats des autres déclencheurs et en lien avec votre élément.
Il est possible de remplir le champ « Données opérationnelles » qui donnera un peu plus de contexte lorsqu’une alerte apparaîtra dans l’interface :
La sévérité de l’évènement correspond à la gravité que vous voulez associé à votre déclencheur allant de « Information » à « Désastre ». Dans notre exemple, un serveur DHCP est très pénalisant lorsqu’il tombe en panne mais ne met pas en péril le système d’information. La sévérité a donc été estimée à « Haut ».
Le champ « Expression » est le cœur du déclencheur. C’est ici que l’on définit la condition à valider pour déclencher notre alerte. En cliquant sur « Ajouter », nous pouvons construire notre expression à l’aide d’un assistant. La condition construite ici est assez simple : si la dernière valeur de service.dhcp=0 alors on déclenche une alerte.
Ce qui nous donne l’expression :
last(/SRV-DHCP-01/proc.num[kea-dhcp4])=0
Pour en savoir plus, je vous invite à lire la documentation qui fournit des exemples pour toutes les fonctions disponibles : Fonctions Zabbix.
Génération d’événement OK : définit comment et quand l’alerte est automatiquement fermée.
Mode de génération des événements PROBLÈME : détermine si Zabbix crée un seul problème ou plusieurs pour la même condition.
Un événement OK ferme : précise quels problèmes sont clôturés lorsqu’un état OK est détecté.
Autoriser la fermeture manuelle : permet de fermer manuellement un problème depuis l’interface
Ce qui nous donne :
Le service étant toujours stoppé, une alerte devrait remonter pour nous dire que le service est KO.
Allez dans « Surveillance » puis « Problèmes ».
Au bout de quelques minutes, une alerte s’est déclenchée pour nous informer que le service ne fonctionnait plus.
Après avoir redémarré le service, l’état change pour nous informer que le problème est résolu puis il disparaîtra peu après :
Alerting avec Zabbix
Pour finir sur la partie supervision, je vous propose de voir ici un aperçu sur la partie « Alerting ».
Zabbix offre un large choix de médias pour envoyer des alertes :
Des outils de ticketing : Glpi, Jira, ServiceNow…
Des réseaux sociaux : Discord, Telegram…
Ou encore des outils collaboratifs : Email, MS Teams, Office365…
Pour effectuer toutes ces intégrations, Zabbix fournit des documentations avec beaucoup de solutions à la page suivante : Intégration.
Afin d’illustrer cette partie, je suis partie sur une intégration entre Zabbix et GLPI pour effectuer de la création de tickets automatiquement lorsqu’un problème survient.
Nous n’allons pas nous attarder sur la configuration spécifique de GLPI car la documentation est complète sur le sujet. Cependant, nous allons explorer la partie configuration de Zabbix, car beaucoup d’éléments sont communs avec les autres médias (Propriété du média, création d’un utilisateur…).
Vous pouvez retrouver la liste en allant dans « Alertes » et « Types de média » :
Par défaut, pour GLPI, Zabbix nous propose d’utiliser le système de webhook. En bref, Zabbix enverra un appel http à l’API de GLPI pour procéder à la création ou mise à jour d’un ticket.
Dans l’onglet « Type de média », vous pourrez choisir le type de média à utiliser ainsi que les paramètres liés à ce média. Typiquement pour le webhook, nous avons les variables utilisées entre Zabbix et GLPI pour faire correspondre les différentes données.
Après avoir configuré la partie GLPI, j’ai modifié les variables pour ajouter l’URL de mon serveur GLPI et le jeton utilisateur à utiliser.
Dans « Modèles de message », vous y trouverez les messages HTML envoyés en fonction des différents événements. Ces messages peuvent être personnalisés pour être personnalisés pour avoir le contenu qui vous intéresse.
Généralement, pour votre média, il faudra créer un groupe avec un droit en lecture sur les hôtes, un rôle associé et un utilisateur pour lui affecter le média créé.
Commençons par le groupe. Dans « Utilisateurs », « Groupes d’utilisateurs », cliquez sur « Créer un nouveau groupe ». Donnez-lui un nom puis allez dans « Autorisations de l’hôte » :
Ajoutez une permission de lecture sur les groupes d’hôtes de votre choix. Typiquement, si vous ne souhaitez avoir que des remontées de tickets sur des machines de Production, vous pourrez y inscrire votre groupe de Production et seules ces machines auront des tickets qui remonteront dans GLPI.
Créez ensuite un rôle dans « Utilisateurs », « Rôles utilisateur », « Ajouter un rôle ».
Ce rôle n’a besoin d’avoir aucun droit dans l’interface de Zabbix, car en général, personne ne doit utiliser un compte de média pour faire des actions dans Zabbix et les droits de lecture lui sont conférés via son groupe d’hôte. Ne lui attribuez surtout pas un rôle administrateur (sauf si la documentation pour votre solution vous indique le contraire) !
Donnez-lui un nom et enlevez tous les droits sauf un élément de l’interface utilisateur, car Zabbix oblige d’en avoir un au minimum pour le rôle.
Allez ensuite dans « Utilisateurs », « Utilisateurs » et « Créer un utilisateur ». Renseignez un nom d’utilisateur, un mot de passe et le groupe de lecture précédemment créé.
Allez ensuite dans l’onglet « Média », puis cliquez sur « Ajouter ».
Sélectionnez votre média. En fonction de la nature de votre média, par exemple pour du mail, il faudra remplir le champ « Envoyer à ». Ce champ n’est pas utile pour les webhooks donc un # suffira, mais pour un envoi de mail, par exemple, il faudrait préciser le serveur SMTP.
Définissez la plage durant laquelle vous souhaitez que le média soit actif, par exemple ici, c’est 24/24 7/7 et les niveaux de sévérité qui pourront bénéficier de la création d’un ticket dans GLPI.
Puis ajoutez-lui le rôle.
Il faut maintenant paramétrer une action de déclencheur pour que Zabbix déclenche l’action de création automatique.
Allez dans « Alertes », « Actions » et « Actions de déclencheurs » puis cliquez sur « Créer une action ».
Donnez-lui un nom et, si vous le souhaitez, définissez une ou plusieurs conditions pour déclencher la création du ticket.
Allez ensuite dans l’onglet « Opérations », il y a trois opérations disponibles :
Opérations (le seul obligatoire) permet de créer un ticket lorsqu’un problème se déclenche dans Zabbix.
Opérations de récupération se déclenche lorsqu’un problème passe en « Résolu » pour procéder à une fermeture du ticket.
Opérations de mise à jour envoi une mise à jour lorsqu’un problème est modifié : changement de la sévérité, acquittement du problème, ajout d’un commentaire…
La configuration des trois opérations est assez simple et consiste à envoyer un message à votre utilisateur précédemment créé via votre média.
Notre configuration est prête pour faire de l’alerting. Pour vous montrer le résultat, j’ai déclenché un problème en rendant indisponible le serveur DHCP, puis en le rendant disponible.
Lors de la création du problème, dans « Actions », on remarque que notre action de déclencheur s’est bien activée :
Côté GLPI dans « Assistance », « Problèmes », le ticket a été créé automatiquement. Au moment où l’agent était disponible, le ticket a été résolu automatiquement :
Découverte automatique avec Zabbix
Ajoutons maintenant notre hôte Windows à l’aide de la découverte automatique. En effet, la découverte automatique va vous permettre de découvrir des hôtes pour les intégrer automatiquement dans votre Zabbix.
Cela peut s’avérer grandement utile pour un grand parc de machines à intégrer dans Zabbix, par exemple. Pour le paramétrer, allez dans « Collecte de données » puis « Découverte » puis cliquez sur «Créer une règle de découverte ».
Le paramétrage de la règle de découverte est assez simple, globalement vous lui donnez une plage d’IP, la fréquence à laquelle la règle de découverte doit s’exécuter et quel nom apparaît dans Zabbix.
Attardons-nous sur la partie « Vérifications », elle va vous permettre d’effectuer des tests de découverte via une multitude de protocoles pour découvrir les hôtes de notre réseau :
Par conséquent, vous pouvez en mettre plusieurs types de vérification et avoir une seule règle pour remonter tous types d’hôtes. Dans notre cas, nous vérifierons la métrique « system.sw.os » qui identifie le système d’exploitation utilisé par l’hôte et la métrique « agent.hostname » pour remonter son nom d’hôte.
Nous avons paramétré la règle de découverte automatique, donc les hôtes vont commencer à remonter dans votre réseau. Cependant, il serait judicieux de leur affecter un modèle automatiquement pour ne pas devoir passer sur chaque hôte à la main pour en lier un.
Allez dans l’onglet « Alertes » puis « Actions » et « Actions de découverte » puis « Créer une action » en haut à droite :
Nous allons donner un nom à l’action, typiquement « Découverte Windows », puis nous allons définir des conditions pour déclencher l’action. Voici les trois conditions qui devront être remplies pour ajouter un hôte Windows :
Allez ensuite dans l’onglet « Opérations » puis définissez les actions à faire lorsque vos conditions sont remplies. Ici, l’hôte est ajouté dans Zabbix, il est lié au groupe d’hôte « Windows » et au modèle « Windows by Zabbix agent ».
Vous pouvez très bien ensuite cloner cette alerte et modifier les valeurs pour la découverte des hôtes Linux.
Installation de l’agent sur Windows
Nous allons vérifier notre configuration en installant l’agent 2 sur un client Windows 11. Avant de l’installer, pensez bien à renommer votre PC si ce n’est pas déjà fait pour éviter d’avoir un nom aléatoire comme WIN-BJFHD92 dans Zabbix.
Pour installer l’agent 2, retournez sur le site de Zabbix depuis votre hôte Windows puis cliquez sur « Agents Zabbix ». Choisissez ensuite l’OS « Windows », sa version : amd64 (correspondant à une architecture CPU 64 bits), la version du Zabbix…
Je vous conseille de garder le chiffrement « OpenSSL » pour garder la possibilité de pouvoir chiffrer les communications dans le futur entre votre serveur et vos agents. Enfin, le fichier peut être téléchargeable en format MSI, ce qui veut dire qu’il peut être déployé automatiquement par GPO dans un environnement Active Directory, une bonne nouvelle !
Descendez un peu plus bas et cliquez sur « Download » pour installer l’agent 2 Zabbix :
Ouvrez ensuite le fichier MSI et suivez les étapes suivantes :
« Next »
« Accept » puis « Next » :
Modifiez l’emplacement de votre agent 2, si vous le souhaitez, puis cliquer sur « Next »
Sur cette page, renseignez l’IP de votre serveur Zabbix et, si vous souhaitez que votre agent soit actif, renseignez l’IP du serveur Zabbix à la place de 127.0.0.1.
Concernant les options :
Enable PSK : vous permet de chiffrer la communication serveur / agent à l’aide d’une clé si vous l’avez paramétrée sur le serveur.
Add agent location to the path : permet de charger le répertoire d’installation de l’agent Zabbix dans la variable d’environnement PATH de Windows pour pouvoir exécuter différentes commandes Zabbix sans avoir à se rendre dans le dossier d’installation C:\Program Files\Zabbix Agent\ (par défaut).
Cliquez ensuite sur « Next » et « Install » . Patientez jusqu’à la fin de l’installation, qui ne dure que quelques secondes.
Vérifiez que le service Zabbix Agent 2 est actif en vous rendant dans la console Services.msc. Si ce n’est pas le cas, démarrez-le et activez-le automatiquement au démarrage de la machine.
Côté pare-feu, le flux est déjà ouvert lors de l’installation de l’agent :
Si l’on revient sur le serveur Zabbix, votre hôte devrait apparaître plus ou moins rapidement en fonction de la fréquence de vos vérifications.
Lorsque l’on regarde en détail l’hôte, le groupe « Windows » lui a bien été ajouté avec le template « Windows by Zabbix agent ».
De la même manière que pour le serveur Linux, un ensemble d’éléments préconfigurés remonte automatiquement à une certaine fréquence dans le serveur Zabbix :
Création de dashboard
Pour cette dernière partie de tutoriel, je vous propose de voir ensemble la partie création de dashboard afin de vous aider à avoir une bonne visibilité sur votre infrastructure.
Cliquez sur « Tableau de bord » puis « Tous les tableaux de bord ».
Cliquez ensuite sur « Créer un tableau de bord » et remplissez les informations suivantes :
Propriétaire : Définissez le propriétaire du dashboard.
Son nom.
La période d’affichage par défaut qui définit l’intervalle de temps que Zabbix affiche automatiquement sur les graphiques.
Cliquez ensuite sur « Ajouter un Widget » puis vous pourrez modéliser vos propres graphiques avec beaucoup d’options personnalisables.
Les changements sont dynamiques, donc au fur et à mesure que vous construisez votre graphique, vous pouvez voir si le résultat correspond à vos attentes ou non.
Voici un exemple simple de graphique qui affiche les problèmes en cours sur les serveurs Linux et le serveur Zabbix :
Ou encore, un graphique qui affiche la consommation CPU du client Windows :
À la fin des modifications, pensez à cliquer sur « Sauvegarder les modifications ».
Conclusion
Dans ce tutoriel, nous avons fait un tour d’horizon de la solution Zabbix : son installation, sa configuration et la supervision d’un premier hôte Linux et Windows.
N’oubliez pas que Zabbix est une solution hautement personnalisable, nous n’avons effleuré qu’une petite partie des fonctionnalités et n’hésitez surtout pas à vous aider de la documentation qui est riche et qui dispose de nombreux exemples pour vous aider à configurer votre Zabbix.
Je compte d’ailleurs faire d’autres articles sur cette solution dans le futur. Je vous remercie pour votre lecture, n’hésitez pas à laisser un avis dans les commentaires.
Apprenti Ingénieur de Production / Exploitation Informatique
