Qu’est-ce que Zabbix ?

Zabbix est une solution de monitoring open-source utilisée pour suivre la performance et la disponibilité des serveurs, des applications, des réseaux et de l’infrastructure informatique en général. Il permet de collecter des données en temps réel sur l’état des systèmes, d’envoyer des alertes en cas de détection de problèmes, et de générer des rapports et des graphiques pour faciliter l’analyse. Il utilise un modèle de collecte de données basé sur des agents installés sur les hôtes à surveiller ou via des requêtes SNMP (ou encore MQTT).

Prérequis

  • Une machine virtuelle Rocky Linux
  • Une connexion à Internet
  • Des machines à monitorer
  • Un cerveau

ND : À noter qu’ici nous installerons le serveur complet sur une seule machine. mariadb et nginx seront de ce fait stockés sur cette même machine. De plus, je ne vais pas vous montrer ici comment installer un certificat TLS pour la page Web. HAProxy pourra délivrer aux utilisateurs un certificat valide.

Installation du service

Installation du repo Zabbix

rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
dnf clean all

Installation du serveur Zabbix, d’nginx, de l’agent et de mariadb

dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2 zabbix-agent2-plugin-* mariadb-server

Installation des paquets

Si dnf vous demande d’autoriser l’ajout des clés GPG, faites-donc :

Zabbix Official Repository - x86_64                                   3.1 kB
Import de la clef GPG 0xB5333005 :
Utilisateur : « Zabbix LLC (Apr 2024) <packager@zabbix.com> »
Empreinte : 4C3D 6F2C C75F 5146 754F C374 D913 219A B533 3005
Provenance : /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-B5333005
Voulez-vous continuer ? [o/N] : o
La clé a bien été importée
Zabbix Official Repository (non-supported) - x86_64                   3.1 kB
Import de la clef GPG 0x08EFA7DD :
Utilisateur : « Zabbix LLC (Jul 2022) <packager@zabbix.com> »
Empreinte : D9AA 84C2 B617 479C 6E4F CF4D 19F2 4753 08EF A7DD
Provenance : /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-08EFA7DD
Voulez-vous continuer ? [o/N] : o

Paramétrage de mariadb

Activation au démarrage et lancement de mariadb

systemctl enable --now mariadb

““Sécurisation”” du serveur mariadb

mysql_secure_installation
Switch to unix_socket authentication [Y/n] 
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] 
Disallow root login remotely? [Y/n] 
Remove test database and access to it? [Y/n] 
Reload privilege tables now? [Y/n]

Création de la base de données

mysql -u root -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
quit;

Création de la base de données

Importation de la structure de la base de données de Zabbix sur la base SQL

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u zabbix -p zabbix

ND : Renseignez le mot de passe que vous avez donné à votre utilisateur zabbix pendant la création de la database après avoir tapé la commande précédente.

Désactivation de la fonctionnalité ’log_bin_trust_function_creators’ activée précédemment qui permet de créer des fonctions ou des triggers dans la base de données avec un utilisateur sans privilèges

mysql -u root -p
SET GLOBAL log_bin_trust_function_creators = 0;
quit;

Liaison de la base de données avec le serveur Zabbix

Éditez le fichier /etc/zabbix/zabbix_server.conf pour décommenter la variable “DBPassword” et y insérer le mot de passe de l’utilisateur “zabbix”.

Modification du fichier zabbix_server.conf

Redémarrage des services et lancement de ces dit-services au boot de la machine

systemctl restart zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php-fpm

Autorisation des ports avec firewall-cmd

firewall-cmd --zone=public --add-port=80/tcp --add-port=443/tcp --add-port=10050/tcp --add-port=10051/tcp --permanent
firewall-cmd --reload
PortService
80HTTP
443HTTPS
10050Zabbix Agent
10051Zabbix Trapper

Autorisation d’accéder au réseau pour Zabbix auprès d’SELinux

setsebool -P zabbix_can_network on

Configuration du service

Connection au dashboard

Vous pouvez maintenant écrire l’adresse IP de votre serveur Zabbix dans votre navigateur. Vous devriez être accueilli par le wizard.

Page de bienvenue

Cliquez sur “Prochaine étape” afin d’arriver sur la page “Vérification des prérequis”. Si vous avez bien suivi ce guide, tout devrait être sur OK et vous devriez être en mesure de continuer.

Pour “Configurer la connexion à la base de données”, nous avons installé celle-ci sur la machine locale, de ce fait, laissez localhost comme hôte. Renseignez le nom de la base de données, son utilisateur ainsi que son mot de passe. Laissez “Texte brut” pour stocker les informations d’identification étant donné que nous n’avons pas mis en place de Vault HashiCorp ou CyberArk.

Configuration de la base de données

Renseignez le nom de votre serveur dans le champ à cet effet, le fuseau horaire de celui-ci (ici, (UTC+01:00) Europe/Paris) et le thème qui sera utilisé par défaut.

Zabbix vous fera un résumé avant l’installation. À présent, le fichier /etc/zabbix/web/zabbix.conf.php sera généré.

Résumé pré-installation

Ça y est ! La page de login ! Plus très loin du début de la fin. Veuillez noter que le combo login/mdp est Admin/zabbix 👀

Page de connexion

Création d’un groupe d’hôtes

Rendez-vous dans Collecte de données → Groupes d’hôtes et cliquez sur “Créer un groupe d’hôtes”. Donnez-lui un nom et cliquez sur “Ajouter”.

Création d’un groupe d’hôtes

Création d’un groupe d’utilisateurs

Rendez-vous dans Utilisateurs → Groupe d’utilisateurs et cliquez sur “Créer un groupe d’utilisateurs”. Donnez-lui un nom et allez dans l’onglet “Autorisations de l’hôte”. Ici, vous pouvez sélectionner votre groupe d’hôte précédemment créé. Donnez-lui les permissions appropriées à votre cas et cliquez sur “Ajouter”.

Création d’un groupe d’utilisateurs

Ajout des autorisations appropriées sur le groupe d’utilisateurs

Création d’un compte utilisateur

Rendez-vous dans Utilisateurs → Utilisateurs et cliquez sur “Créer un utilisateur”.

Création d’un utilisateur

Ajout des permissions appropriées sur l’utilisateur

Profitez d’être dans cet onglet pour modifier le mot de passe du compte “Admin”.

Ajout d’une intégration avec Gmail

Rendez-vous à cette page afin de générer un token pour Zabbix. Google ne permettant plus de se connecter directement à ses serveurs SMTP via le mot de passe de votre compte, il est nécessaire de générer un mot de passe spécifiquement pour Zabbix.

Création d’un token pour Zabbix

Vous pouvez maintenant copier le mot de passe généré de 16 caractères. Attention tout de même, il ne sera plus possible de voir ce mot de passe par la suite.

Affichage du mot de passe d’application

Rendez-vous dans l’onglet Alertes → Types de média puis sur Gmail sur votre Dashboard Zabbix et renseignez vos identifiants. Attention à ne pas coller le mot de passe avec des espaces.

Configuration du hook Gmail

Cliquez sur “Actualiser” puis à droite du service Gmail, cliquez sur “Test”. Renseignez votre email personnel et cliquez sur “Test”. Vous devriez recevoir un mail dans la minute qui suit.

Envoi du mail de test

Résultat du mail de test

Ajout d’une intégration avec Discord

Créez un serveur discord afin d’y implémenter un webhook.

Création du serveur

Dans les paramètres du channel que vous voulez utiliser pour intégrer le webhook, clliquez sur “Intégrations” puis sur “Créer un webhook”. Cliquez ensuite sur “Copier l’URL du webhook”.

Création du webhook

Retournez sur Zabbix et activez le service Discord dans l’onglet Alertes → Types de média puis cliquez sur “Test”. De là, renseignez dans l’onglet “discord_endpoint” votre clé API webhook. De plus, renseignez l’URL de votre serveur Zabbix dans le champ “zabbix_url”. Enfin, mettez à 0 les valeurs suivantes : “event_source”, “event_update_status” et “event_value” De là, lorsque vous cliquerez sur “Test”, vous devriez recevoir un message de Zabbix sur votre serveur discord.

Test du webhook

Résultat du test du webhook

Rendez-vous dans l’onglet Administration → Macros et cliquez sur “Ajouter”. De là, ajoutez les macros suivantes :

MacroValeurDescription
{$DISCORD.WEBHOOK}https://discord.com/api/webhooks/XXWebhook Discord
{$ZABBIX.URL}http://ZabbixIP/URL du serveur Zabbix

Ajout des macros

Enfin, rendez-vous dans l’onglet Utilisateurs → Utilisateurs afin de créer un utilisateur avec le rôle “Guest” qui enverra les messages sur Discord.

Création du compte - Utilisateur

Création du compte - Média