Tutoriel Zabbix 7.0
Installation d'un serveur Zabbix sur Debian 12
Ce tutoriel explique l'installation et la configuration de Zabbix 7.0 avec Nginx et MariaDB sur Debian 12.
1. Configuration de l'IP statique
Éditer le fichier Netplan:
sudo nano /etc/network/interfaces
Contenu possible pour une interface en IP statique:
auto ens18
iface ens18 inet static
address 192.168.30.10/24
gateway 192.168.30.1
dns-nameservers 1.1.1.1 8.8.8.8
Redémarrer le réseau:
sudo systemctl restart networking
Vérifier:
ip a
2. Installation des paquets nécessaires
sudo apt update && sudo apt upgrade -y
sudo apt install -y gnupg lsb-release ca-certificates software-properties-common curl wget
Ajouter le dépôt Zabbix 7.0
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-1%2Bdebian12_all.deb
sudo dpkg -i zabbix-release_7.0-1+debian12_all.deb
sudo apt update
Installer les paquets Zabbix + MariaDB + Nginx
sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginxconf zabbix-sql-scripts zabbix-agent mariadb-server php-fpm php-mysql
3. Configuration de MariaDB
Démarrer MariaDB
sudo systemctl enable mariadb --now
Configurer MariaDB (sécurisation + création base Zabbix)
sudo mysql -u root -p
Puis exécuter:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'zabbix';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
FLUSH PRIVILEGES;
EXIT;
Importer le schéma de la base
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
4. Configuration du serveur Zabbix
Modifier /etc/zabbix/zabbix_server.conf:
sudo nano /etc/zabbix/zabbix_server.conf
Changer:
DBPassword=zabbix
Activez aussi LogFile, PidFile, DBHost si besoin.
5. Configuration de Nginx pour Zabbix
Modifier /etc/nginx/sites-available/zabbix:
sudo nano /etc/nginx/sites-available/zabbix
Configuration:
server {
listen 80;
server_name 192.168.30.10 SRV-ZABBIX-01.alpha.lan;
root /usr/share/zabbix;
index index.php index.html;
access_log /var/log/nginx/zabbix_access.log;
error_log /var/log/nginx/zabbix_error.log;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location ~ /\.ht {
deny all;
}
location ~ /(api\/|conf[^\.]|include|locale) {
deny all;
return 404;
}
location /vendor {
deny all;
return 404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "date.timezone=Europe/Paris";
}
}
Changer server_name:
server_name 192.168.30.10 SRV-ZABBIX-01.alpha.lan;
Activer PHP pour le frontend Zabbix
Modifier /etc/php/8.2/fpm/php.ini:
sudo nano /etc/php/8.2/fpm/php.ini
Modifier (exemples):
date.timezone=Europe/Paris
6. Démarrage des services
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx
sudo systemctl restart zabbix-server
sudo systemctl restart zabbix-agent
Activer au démarrage
sudo systemctl enable zabbix-server zabbix-agent nginx php8.2-fpm
7. Accès Web
Accéder à: http://192.168.30.10/zabbix
Configurer le frontend (connexion à la base zabbix, fuseau horaire, etc.)
Identifiants par défaut:
- Nom utilisateur:
Admin - Mot de passe:
zabbix
À ce stade, Zabbix est installé et fonctionnel avec Nginx et MariaDB sur le serveur principal.
Clonage d'un serveur Zabbix 7.0 sur Debian 12 (SRV-ZABBIX-01 vers SRV-ZABBIX-02)
Objectif
Créer une copie exacte du serveur SRV-ZABBIX-01 pour en faire un second noeud SRV-ZABBIX-02 dans une future configuration en haute disponibilité (cluster HA). Le serveur cloné aura une nouvelle IP, un nouveau nom d'hôte, et une configuration réseau propre.
Prérequis
- Avoir un serveur SRV-ZABBIX-01 fonctionnel avec Debian 12, Zabbix 7.0, MariaDB, Nginx
- Accès à une infrastructure vSphere ou équivalente pour cloner la VM
Étape 1: Clonage de la machine virtuelle sous vSphere
- Se connecter à vSphere Web Client
- Clic droit sur SRV-ZABBIX-01 → Clone → Clone to Virtual Machine
- Donner comme nom à la VM:
SRV-ZABBIX-02 - Choisir le datacenter, dossier, cluster et stockage identiques
- Réseau: laisser tel quel pour l'instant (sera modifié ensuite)
- Finaliser et attendre la fin du clonage
À ce stade, SRV-ZABBIX-02 est un clone identique à SRV-ZABBIX-01.
Étape 2: Configuration du système sur SRV-ZABBIX-02
2.1 Modifier le nom d'hôte (hostname)
echo "SRV-ZABBIX-02" | sudo tee /etc/hostname
sudo hostnamectl set-hostname SRV-ZABBIX-02
2.2 Modifier le fichier /etc/hosts
sudo nano /etc/hosts
Ajouter ou modifier comme suit:
127.0.0.1 localhost
192.168.30.10 SRV-ZABBIX-01
192.168.30.20 SRV-ZABBIX-02
2.3 Modifier l'adresse IP statique
sudo nano /etc/network/interfaces
Modifier ou adapter la configuration:
auto ens18
iface ens18 inet static
address 192.168.30.20/24
gateway 192.168.30.1
dns-nameservers 1.1.1.1 8.8.8.8
Redémarrer l'interface:
sudo systemctl restart networking
Vérifiez l'adresse IP:
ip a
Étape 3: Configuration spécifique à Nginx sur SRV-ZABBIX-02
3.1 Modifier le fichier de configuration Nginx
sudo nano /etc/nginx/sites-available/zabbix
Changer la directive server_name pour qu'elle reflète le nouveau nom d'hôte et IP:
server {
listen 80;
server_name 192.168.30.20 SRV-ZABBIX-02.alpha.lan;
root /usr/share/zabbix;
index index.php index.html;
access_log /var/log/nginx/zabbix_access.log;
error_log /var/log/nginx/zabbix_error.log;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location ~ /\.ht {
deny all;
}
location ~ /(api\/|conf[^\.]|include|locale) {
deny all;
return 404;
}
location /vendor {
deny all;
return 404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "date.timezone=Europe/Paris";
}
}
3.2 Redémarrer Nginx
sudo nginx -t
sudo systemctl restart nginx
Testez l'accès web sur: http://192.168.30.20/zabbix
Conclusion
À ce stade:
- SRV-ZABBIX-02 est une copie fonctionnelle de SRV-ZABBIX-01
- Le hostname, l'IP et Nginx sont correctement adaptés
- Ce serveur est prêt à être intégré dans un cluster HA avec
pacemaker,corosyncet une base MariaDB Galera
Mise en place d'un cluster HA (Haute Disponibilité) Zabbix
Objectif
Mettre en place un cluster haute disponibilité pour Zabbix, basé sur 2 nœuds Debian 12 déjà configurés:
- SRV-ZABBIX-01 (IP: 192.168.30.10)
- SRV-ZABBIX-02 (IP: 192.168.30.20)
Chaque serveur exécute Zabbix, MariaDB, PHP 8.2, Nginx, etc. (cf. parties précédentes).
Introduction au HA Zabbix
Ce que nous allons mettre en place:
- Zabbix Server en ressource unique active via Pacemaker
- MariaDB Galera en cluster actif-actif pour la réplication de la base
- Utilisation de
pcs,corosync,pacemaker,galeraetrsync
:::warning Important Zabbix ne supporte qu'un seul processus serveur actif, d'où l'importance d'utiliser Pacemaker pour gérer qui prend la main. :::
1. Installation des composants nécessaires
Sur les deux serveurs:
sudo apt install -y pacemaker corosync pcs galera-4 rsync
Créer l'utilisateur hacluster sur les deux machines:
sudo passwd hacluster # Mot de passe: Respons11
Activer les services:
sudo systemctl enable pcsd pacemaker corosync --now
Vérifier que pcsd écoute sur le port 2224:
ss -lnpt | grep 2224
2. Authentification des nœuds au cluster
Sur SRV-ZABBIX-01, exécuter:
sudo pcs host auth SRV-ZABBIX-01 SRV-ZABBIX-02 -u hacluster -p
Entrer le mot de passe: Respons11
Si vous obtenez une erreur:
Error: Hosts 'SRV-ZABBIX-01' not known to pcs
Modifier /etc/hosts sur les deux serveurs:
sudo nano /etc/hosts
Ajouter:
192.168.30.10 SRV-ZABBIX-01
192.168.30.20 SRV-ZABBIX-02
Puis relancer la commande d'authentification.
3. Création du cluster
Sur SRV-ZABBIX-01:
sudo pcs cluster setup zabbix-ha SRV-ZABBIX-01 SRV-ZABBIX-02
Démarrer le cluster
sudo pcs cluster start --all
sudo pcs cluster enable --all
Vérifier le statut
sudo pcs status
:::warning Bug rencontré: known-hosts vide Si vous rencontrez l'erreur:
Error: Hosts 'SRV-ZABBIX-01' not known to pcs
Solution:
- Supprimer le cluster défaillant:
sudo pcs cluster destroy --all - Refaire l'authentification, puis la création du cluster
- Ne pas hésiter à recloner la VM si l'état est corrompu :::
4. Configuration du cluster
Désactiver le STONITH (facultatif si aucun périphérique de fencing)
sudo pcs property set stonith-enabled=false
Ajouter la ressource Zabbix Server
sudo pcs resource create zabbix-server systemd:zabbix-server op monitor interval=30s
Empêcher le basculement trop fréquent
sudo pcs resource meta zabbix-server resource-stickiness=100
Redémarrer Zabbix (via Pacemaker uniquement)
sudo pcs resource restart zabbix-server
:::warning Important Ne jamais démarrer Zabbix manuellement! Utilisez toujours Pacemaker. :::
Vérifier le statut
sudo pcs status resources
5. Configuration du HA côté Zabbix
Modifier /etc/zabbix/zabbix_server.conf sur les deux serveurs:
sudo nano /etc/zabbix/zabbix_server.conf
Ajouter:
HANodeName=SRV-ZABBIX-01 # sur SRV-ZABBIX-01
HANodeName=SRV-ZABBIX-02 # sur SRV-ZABBIX-02
6. Mise en place de MariaDB Galera
6.1 Configuration du serveur MariaDB principal (SRV-ZABBIX-01)
Modifier /etc/mysql/mariadb.conf.d/60-galera.cnf:
sudo nano /etc/mysql/mariadb.conf.d/60-galera.cnf
Ajouter:
[galera]
wsrep_on=ON
galera_cluster_name="zabbix-galera"
galera_cluster_address="gcomm://192.168.30.10,192.168.30.20"
bind-address=0.0.0.0
default_storage_engine=InnoDB
binlog_format=row
innodb_autoinc_lock_mode=2
wsrep_node_name="SRV-ZABBIX-01"
wsrep_node_address="192.168.30.10"
Puis lancer MariaDB:
sudo galera_new_cluster
6.2 Configuration du second nœud (SRV-ZABBIX-02)
Même fichier 60-galera.cnf, ajuster:
wsrep_node_name="SRV-ZABBIX-02"
wsrep_node_address="192.168.30.20"
Démarrer MariaDB normalement:
sudo systemctl start mariadb
Vérification
mysql -u root -p
SHOW STATUS LIKE 'wsrep_cluster_size';
Vous devez voir: Value = 2
7. Tests de bascule (failover)
Scénario:
- Accéder à l'interface Zabbix via
http://192.168.30.10/zabbix - Éteindre SRV-ZABBIX-01
- Vérifier que Pacemaker bascule
zabbix-serversur SRV-ZABBIX-02 - Réactiver le serveur et vérifier si la ressource revient (grâce au stickiness = 100)
Résultat final
Vous avez maintenant un cluster Zabbix HA prêt à encaisser une panne!
- Zabbix ne tourne que sur un seul nœud à la fois
- La base MariaDB est répliquée activement sur les deux nœuds
- Vous pouvez administrer le cluster avec
pcsà tout moment
Commandes utiles
# Affiche l'état général
sudo pcs status
# Redémarre la ressource Zabbix
sudo pcs resource restart zabbix-server
# Voir les logs Corosync
journalctl -xe -u corosync
# Voir les logs Pacemaker
journalctl -xe -u pacemaker
Astuce bonus
Créer un alias pour surveiller le cluster facilement:
echo "alias cluster='pcs status'" >> ~/.bashrc && source ~/.bashrc
Documentation créée par Jerrom