Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 412 minIntermédiaire

Installer Zabbix 7.0 LTS sur Debian 13

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • préparer une VM Debian 13 pour Zabbix sur Proxmox VE ;
  • installer le serveur, l'interface web et l'agent 2 depuis le dépôt officiel ;
  • créer la base MariaDB et importer son schéma ;
  • terminer l'assistant web et sécuriser le compte Admin ;
  • diagnostiquer un serveur qui ne démarre pas.

3 exercices corrigés

Installer Zabbix, c'est installer quatre choses sur une même machine : la base de données (MariaDB), le serveur Zabbix, son interface web (PHP avec Apache) et un agent pour que le serveur se supervise lui-même. Ce chapitre suit l'installation de Zabbix 7.0 LTS sur Debian 13 depuis le dépôt officiel, du choix de la VM à la première connexion, puis les réglages de sécurité et les pannes d'installation les plus courantes.

Préparer la machine

Chez Sorbier, srv-journaux est une VM du cluster Proxmox VE. Pour une infrastructure de quelques dizaines d'hôtes :

RessourceMaquette de TPSorbier (environ 60 hôtes, 4 000 éléments)
Processeurs2 vCPU4 vCPU
Mémoire4 Go8 Go
Disque30 Go100 Go, sur un stockage rapide (SSD)
SystèmeDebian 13, installation minimale avec le serveur SSHIdem

Donne-lui une adresse fixe (192.168.10.180/28, passerelle 192.168.10.190, DNS 192.168.10.177 et 192.168.10.181) et un nom résolu par le DNS de l'annuaire (srv-journaux.ad.sorbier.example). Règle surtout l'heure : les déclencheurs, les journaux et les rapports de disponibilité n'ont de sens que si toutes les horloges sont justes.

bash
sudo timedatectl set-timezone Europe/Paris
# chrony, synchronisé sur les contrôleurs de domaine
sudo apt install chrony
echo "server 192.168.10.177 iburst" | sudo tee /etc/chrony/sources.d/sorbier.sources
echo "server 192.168.10.181 iburst" | sudo tee -a /etc/chrony/sources.d/sorbier.sources
# on n'utilise que les contrôleurs de domaine : désactive le pool Internet de Debian
sudo sed -i 's/^pool /#pool /' /etc/chrony/chrony.conf
sudo systemctl restart chrony
chronyc sources          # les deux serveurs doivent apparaître, l'un marqué ^*

Ajouter le dépôt officiel de Zabbix

Debian fournit un paquet Zabbix, mais dans une version qui suit le rythme de Debian, pas celui de l'éditeur. On utilise le dépôt officiel, qui livre chaque version corrective de la 7.0 LTS. Le paquet zabbix-release installe la clé de signature et la ligne du dépôt :

bash
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian13_all.deb
sudo dpkg -i zabbix-release_latest_7.0+debian13_all.deb
sudo apt update

Puis les paquets :

bash
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent2
sudo apt install mariadb-server
PaquetContenu
zabbix-server-mysqlLe serveur, compilé pour MySQL et MariaDB (il installe aussi fping, utilisé pour les pings)
zabbix-frontend-phpL'interface web, dans /usr/share/zabbix
zabbix-apache-confLa configuration Apache qui publie l'interface sous /zabbix et règle PHP (durée d'exécution, mémoire, taille des envois)
zabbix-sql-scriptsLes scripts de création de la base, dans /usr/share/zabbix-sql-scripts/
zabbix-agent2L'agent 2, pour superviser srv-journaux lui-même
mariadb-serverMariaDB 11.8, la version de Debian 13, prise en charge par Zabbix 7.0

Créer la base de données

Sous Debian, le compte root de MariaDB s'authentifie par le système (unix_socket) : sudo mariadb ouvre une session sans mot de passe. Crée la base et un compte dédié, avec un mot de passe long :

sql
-- sudo mariadb
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zbx-Sorbier-Base-2026!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
QUIT;
  • utf8mb4 et utf8mb4_bin sont les seuls réglages pris en charge : avec une collation insensible à la casse, SRV-WEB et srv-web seraient confondus, et Zabbix signale l'erreur dans son journal et dans l'interface ;
  • le compte n'a de droits que sur la base zabbix, et seulement en local (droits et moindre privilège) ;
  • log_bin_trust_function_creators autorise temporairement l'import des déclencheurs SQL du schéma ; on le remet à 0 juste après.

Importe le schéma et les données initiales (quelques minutes : la base contient déjà les modèles officiels) :

bash
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mariadb --default-character-set=utf8mb4 -uzabbix -p zabbix
sudo mariadb -e "SET GLOBAL log_bin_trust_function_creators = 0;"

Configurer et démarrer le serveur

Dans /etc/zabbix/zabbix_server.conf, les lignes DBName=zabbix et DBUser=zabbix sont déjà bonnes. Renseigne le mot de passe :

ini
# /etc/zabbix/zabbix_server.conf
DBPassword=Zbx-Sorbier-Base-2026!

Ce fichier est lisible par le groupe zabbix seulement : ne le copie pas dans un ticket ou une capture d'écran. Démarre les services et active-les au démarrage :

bash
sudo systemctl restart zabbix-server zabbix-agent2 apache2
sudo systemctl enable zabbix-server zabbix-agent2 apache2
systemctl status zabbix-server --no-pager
sudo ss -lntp | grep -E ':10050|:10051'

Le serveur doit écouter sur 10051, l'agent sur 10050. Le journal du serveur, /var/log/zabbix/zabbix_server.log, doit se terminer par des lignes de démarrage de ses processus, sans cannot connect to the database.

L'assistant de l'interface web

Ouvre http://192.168.10.180/zabbix depuis le poste d'administration. L'assistant compte six étapes.

  1. Welcome : choisis la langue. Le français n'apparaît que si la locale fr_FR.UTF-8 existe sur le serveur. Sinon, lance sudo dpkg-reconfigure locales, coche fr_FR.UTF-8 UTF-8, puis sudo systemctl restart apache2 et recharge la page.
  2. Check of pre-requisites : tout doit être OK. Une ligne en rouge désigne un module PHP manquant ou un réglage, que le paquet zabbix-apache-conf règle normalement.
  3. Configure DB connection : Database type MySQL, Database host localhost, Database port 0 (le port par défaut), Database name zabbix, User zabbix, le mot de passe. Laisse Database TLS encryption décoché : la connexion est locale, par socket.
  4. Settings : Zabbix server name « Sorbier — supervision » (affiché en haut de chaque page), Default time zone Europe/Paris, le thème.
  5. Pre-installation summary : relis.
  6. Install : l'assistant écrit /etc/zabbix/web/zabbix.conf.php.

Connecte-toi avec le compte Admin, mot de passe zabbix.

Sécuriser l'installation

  • HTTPS. L'interface transporte des mots de passe : publie-la en HTTPS avec un certificat de l'autorité interne (AD CS dans le cours Windows Server). Avec Apache : sudo a2enmod ssl, sudo a2ensite default-ssl, puis dans /etc/apache2/sites-available/default-ssl.conf les lignes SSLCertificateFile et SSLCertificateKeyFile vers ton certificat et sa clé, et sudo systemctl reload apache2. Redirige ensuite le port 80 vers 443.
  • Les flux. Seul le VLAN ADMIN joint l'interface web (TCP 443). Le port 10051 n'est ouvert qu'aux agents actifs et aux proxys qui en ont besoin, le port 162 qu'aux équipements qui envoient des traps.
  • L'authentification. Zabbix 7.0 sait authentifier par LDAP (l'annuaire de Sorbier), par SAML et propose l'authentification à deux facteurs (Users > Authentication, onglet MFA settings). Active-la au moins pour les comptes Super admin.
  • Les sauvegardes. La configuration est dans la base : sauvegarde-la (mariadb-dump --single-transaction zabbix), avec /etc/zabbix/, et teste la restauration (cours Sauvegarde et PRA).
  • Les mises à jour. sudo apt update && sudo apt upgrade installe les versions correctives de la 7.0. Lis les notes de version avant, et prends un instantané.

Dépanner une installation

SymptômeCause probableVérification et correction
Bandeau rouge « Zabbix server is not running: the information displayed may not be current »Le serveur est arrêté, ou l'interface ne le joint passystemctl status zabbix-server ; lire /var/log/zabbix/zabbix_server.log ; vérifier $ZBX_SERVER dans /etc/zabbix/web/zabbix.conf.php
cannot connect to the database … Access denied for user 'zabbix'@'localhost' dans le journalMot de passe différent dans DBPassword et dans MariaDBCorriger DBPassword, puis systemctl restart zabbix-server
Avertissement sur le jeu de caractères ou la collation de la base, dans le journal ou dans l'interfaceBase créée sans utf8mb4 et utf8mb4_binRecréer la base avec la bonne collation et réimporter le schéma (sur une base neuve)
Le journal signale une version de base non prise en charge (Unsupported DB)Version de MariaDB ou de MySQL hors de la plage de la 7.0Comparer avec les prérequis de la 7.0 (MariaDB 10.5 à 12.3) ; la MariaDB 11.8 de Debian 13 convient
Page blanche ou erreur 500 sur /zabbixModule PHP manquant, configuration Apache absentesudo apachectl -S, journal /var/log/apache2/error.log ; réinstaller zabbix-apache-conf
L'hôte « Zabbix server » affiche l'agent en rougeL'agent 2 n'est pas démarré, ou Server= ne contient pas 127.0.0.1systemctl status zabbix-agent2 ; zabbix_get -s 127.0.0.1 -k agent.ping (paquet zabbix-get) doit répondre 1

Et avec Docker ?

Zabbix publie des images officielles pour chaque composant (zabbix/zabbix-server-mysql, zabbix/zabbix-web-nginx-mysql, zabbix/zabbix-agent2, zabbix/zabbix-proxy-sqlite3…), avec des étiquettes par version, par exemple 7.0-alpine-latest. Le dépôt zabbix-docker de l'éditeur fournit des fichiers Compose prêts à l'emploi. C'est rapide pour une maquette, mais pour ton épreuve l'installation par paquets se justifie et s'explique plus facilement : chaque fichier de configuration est à sa place habituelle. Le cours Docker présente Compose.

Exercices

Exercice 1 sur 3 L'ordre des opérations Réussi À revoir

Remets dans l'ordre : importer le schéma ; installer zabbix-release ; démarrer zabbix-server ; créer la base et le compte zabbix ; terminer l'assistant web ; renseigner DBPassword ; installer les paquets Zabbix et MariaDB ; changer le mot de passe d'Admin.

Voir la réponseMasquer la réponse de l'exercice 1
  1. Installer zabbix-release (le dépôt), puis apt update.
  2. Installer les paquets Zabbix et MariaDB.
  3. Créer la base (utf8mb4_bin) et le compte zabbix.
  4. Importer le schéma (server.sql.gz).
  5. Renseigner DBPassword dans zabbix_server.conf.
  6. Démarrer zabbix-server (et l'agent, et Apache).
  7. Terminer l'assistant web.
  8. Changer le mot de passe d'Admin, aussitôt connecté.

Démarrer le serveur avant l'import du schéma, ou avant DBPassword, produit une erreur de connexion à la base dans le journal.

Tu avais trouvé ?

Exercice 2 sur 3 Lire un journal Réussi À revoir

Après l'installation, le bandeau rouge « Zabbix server is not running » s'affiche. Le journal contient :

text
2481:20261103:101512.402 Starting Zabbix Server. Zabbix 7.0.32.
2481:20261103:101512.409 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: NO)
2481:20261103:101512.409 database is down: reconnecting in 10 seconds
  1. Que signifie using password: NO ?
  2. Quelle est la correction ?
Voir la réponseMasquer la réponse de l'exercice 2
  1. Le serveur a tenté la connexion sans mot de passe : la ligne DBPassword= est restée commentée (# DBPassword=) ou vide dans /etc/zabbix/zabbix_server.conf.
  2. Décommenter la ligne et y mettre le mot de passe du compte MariaDB, puis sudo systemctl restart zabbix-server, et vérifier que le journal n'affiche plus d'erreur. Si le journal disait using password: YES, le mot de passe serait faux : vérifier celui du compte avec mariadb -uzabbix -p zabbix.

Tu avais trouvé ?

Exercice 3 sur 3 Les flux de srv-journaux Réussi À revoir

Écris les règles de pfSense nécessaires à cette étape (et seulement à celle-ci) : les techniciens administrent Zabbix depuis le VLAN ADMIN ; srv-journaux synchronise son heure et résout les noms sur les contrôleurs de domaine ; il télécharge ses mises à jour sur Internet.

Voir la réponseMasquer la réponse de l'exercice 3
Interface d'entréeSourceDestinationPortProtocoleAction
ADMIN192.168.10.208/28192.168.10.180443 (et 80, redirigé)TCPAutoriser
SERVEURS192.168.10.180Alias DEPOTS_MAJ (deb.debian.org, security.debian.org, repo.zabbix.com)80, 443TCPAutoriser

L'heure et le DNS (192.168.10.180 vers .177 et .181, UDP 123 et UDP/TCP 53) restent dans le VLAN 20 : ils ne traversent pas le pare-feu, aucune règle n'est nécessaire (ce sont les contrôleurs de domaine qui relaient les noms Internet). La matrice de Sorbier autorise déjà ADMIN vers toutes les zones en HTTPS : la première règle existe, il suffit de vérifier qu'elle couvre srv-journaux. Pour les mises à jour, un alias de type Host qui contient les noms des dépôts est plus précis qu'« Internet » : pfSense résout ces noms régulièrement.

Tu avais trouvé ?

Chapitre terminé !

Fais les 3 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Hôtes, modèles, éléments et déclencheurs ZabbixRevoir le sommaire du cours