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
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;
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”.
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
Port | Service |
---|---|
80 | HTTP |
443 | HTTPS |
10050 | Zabbix Agent |
10051 | Zabbix 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.
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.
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é.
Ç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 👀
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’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 compte utilisateur
Rendez-vous dans Utilisateurs → Utilisateurs et cliquez sur “Créer un 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.
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.
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.
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.
Ajout d’une intégration avec Discord
Créez un serveur discord afin d’y implémenter un webhook.
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”.
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.
Rendez-vous dans l’onglet Administration → Macros et cliquez sur “Ajouter”. De là, ajoutez les macros suivantes :
Macro | Valeur | Description |
---|---|---|
{$DISCORD.WEBHOOK} | https://discord.com/api/webhooks/XX | Webhook Discord |
{$ZABBIX.URL} | http://ZabbixIP/ | URL du serveur Zabbix |
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.