SSD Nodes Learn Hosting plans →
Guides Matt ConnorPar Matt Connor · Mis à jour le 2026-08-07

Installer Zabbix 7.0 LTS sur Ubuntu 24.04

Installez Zabbix 7.0 LTS sur Ubuntu 24.04 : dépôt, schéma MySQL, frontend nginx et agent2, avec les erreurs de configuration les plus fréquentes.

Ce que vous allez mettre en place

Un VPS Ubuntu 24.04 unique exécutant toute la stack Zabbix 7.0 LTS : le daemon zabbix-server qui interroge les hôtes et déclenche les alertes, une base de données MariaDB/MySQL qui stocke chaque métrique, un frontend PHP servi par nginx et zabbix-agent2 qui collecte les métriques de la machine elle-même. Une fois l’installation terminée, vous indiquez un deuxième serveur, vous lui associez un template et vous recevez un e-mail dès qu’un disque est plein ou qu’un service s’arrête.

Zabbix est plus lourd qu’un outil de page d’état : c’est un véritable système de séries temporelles avec des templates, des triggers, une escalade des alertes et une conservation de l’historique. La plupart des difficultés se concentrent dans trois étapes souvent ignorées : importer le schéma de la base de données, définir le mot de passe de la base que le serveur lit réellement et décommenter deux lignes dans la configuration nginx. Si ces étapes sont correctes, le reste se fait dans un assistant. Si vous avez seulement besoin de vérifier qu’un service est disponible ou non et de publier une page d’état, un moniteur de disponibilité léger comme Uptime Kuma suffit dans un seul conteneur ; Zabbix justifie sa complexité lorsque vous avez besoin de seuils par métrique et d’une escalade des alertes sur de nombreux hôtes.

Utilisez la branche 7.0 LTS : son serveur, son frontend, son agent2 et son schéma sont versionnés ensemble, et elle reçoit des correctifs de sécurité pendant plusieurs années. Avant de copier le nom du fichier du dépôt ci-dessous, consultez rapidement la page officielle de téléchargement de Zabbix. Le paquet de version latest pointe toujours vers la dernière version corrective 7.0, mais si vous préférez figer une version 7.0-N précise, la page indique également le nom de ce fichier. Toutes les autres commandes de ce guide restent valables pour toute la branche 7.0.

Dimensionnement, ports et prérequis

Partez d’un VPS KVM Ubuntu 24.04 neuf avec root ou sudo. Soyez réaliste concernant les ressources : 2 GB de RAM et deux vCPU constituent le minimum réaliste pour le serveur, la base de données, nginx et PHP sur une même machine qui surveille quelques hôtes. Une machine de 1 GB démarre, mais la base de données manque de mémoire à mesure que l’historique augmente. Prévoyez 4 GB au-delà de quelques dizaines d’hôtes. Au-delà d’une centaine, déplacez la base de données sur son propre serveur. L’espace disque dépend du nombre d’éléments collectés et de la durée de conservation de l’historique. Prévoyez quelques gigaoctets au départ. Le housekeeper supprime les anciennes données selon les périodes de rétention que vous définissez.

Ports : 80 et 443 pour le frontend, accessibles publiquement ou limitées à votre propre adresse IP. Le serveur écoute sur le port TCP 10051 pour recevoir les données envoyées par les agents actifs. Chaque agent écoute sur le port TCP 10050 pour permettre au serveur de l’interroger. Si un firewall se trouve en amont, n’ouvrez que les ports que vous exposez. Il est préférable de créer un enregistrement DNS de type A pour le frontend, car vous voudrez lui associer un certificat réel. Un serveur Zabbix surveille tous les autres services que vous exploitez. Il a donc sa place dans la pile plus large de services auto-hébergés qui mérite d’être déployée en 2026, plutôt que d’être ajouté après coup.

Étape 1 : ajouter le dépôt officiel Zabbix 7.0

Le paquet zabbix-release fait une seule chose : il installe la liste des sources APT et la clé de signature sur votre système. Installez-le, puis actualisez l’index.

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update

Si wget renvoie 404 Not Found, le nom du fichier a changé. Ouvrez la page de téléchargement de Zabbix, sélectionnez Ubuntu 24.04 et copiez l’URL zabbix-release exacte affichée. Un apt update propre affiche une ligne repo.zabbix.com et aucun avertissement concernant la clé. The following signatures couldn't be verified because the public key is not available signifie que le paquet de release n’a jamais installé sa clé. Relancez donc dpkg -i, puis actualisez de nouveau.

Étape 2 : installer le serveur, le frontend et l’agent

Installez en une seule fois le serveur compilé pour MySQL, le frontend PHP, la configuration nginx, les fichiers de schéma SQL et agent2.

sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
  zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

zabbix-server-mysql est le serveur compilé pour MySQL/MariaDB. Pour PostgreSQL, installez plutôt zabbix-server-pgsql et adaptez les étapes de configuration de la base de données ci-dessous. zabbix-sql-scripts contient le schéma que vous importerez ensuite. Dans la version 7.0, il s’agit d’un paquet distinct. Si vous l’oubliez, le chemin d’importation sera introuvable par la suite. Aucun de ces paquets n’installe de moteur de base de données. Installez donc MariaDB maintenant si le serveur n’en possède pas déjà un.

sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb

Étape 3, créez la base de données avec le bon jeu de caractères

Zabbix est strict concernant la collation : la base de données doit être utf8mb4 avec utf8mb4_bin, sinon l’import échoue en cours de route avec des erreurs de clé étrangère. Ouvrez un shell root avec sudo mysql, puis exécutez :

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'choose-a-strong-password';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;

La ligne SET GLOBAL sert de mesure de sécurité pour l’import. Le schéma Zabbix crée des fonctions stockées, et un compte qui n’est pas SUPER, comme zabbix, ne peut pas les créer lorsque la journalisation binaire est activée. MySQL 8 active la journalisation binaire par défaut, et certaines versions MariaDB gérées font de même (ce n’est pas le cas de MariaDB standard). Si vous omettez cette option sur un serveur où la journalisation binaire est activée, l’import s’arrête avec ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled. En la définissant avec root, vous contournez ce problème. Désactivez-la de nouveau après l’import. Notez le mot de passe exactement : la configuration du serveur doit contenir la même chaîne, octet par octet.

Étape 4, importer le schéma (l’étape souvent oubliée)

C’est la raison la plus fréquente pour laquelle un frontend fraîchement installé refuse de se charger : la base de données que vous avez créée est vide. Chargez-y le schéma fourni dans zabbix-sql-scripts.

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

La commande demande le mot de passe zabbix, s’exécute en trente à soixante secondes sur un petit VPS et n’affiche rien en cas de succès. Le silence est donc normal. zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory signifie que le paquet zabbix-sql-scripts n’est pas installé (revenez à l’étape 2). ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' signifie que le mot de passe ou le grant de l’étape 3 est incorrect. Une fois l’import terminé, désactivez de nouveau le flag de sécurité :

sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"

Vérifiez l’import avec sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;". Si la commande renvoie un nombre, et non une erreur doesn't exist, le schéma est bien chargé.

Étape 5 : définir le mot de passe de la base de données dans zabbix_server.conf

Le serveur lit les identifiants de la base de données dans /etc/zabbix/zabbix_server.conf. Seul le mot de passe doit être défini : DBName et DBUser ont déjà la valeur par défaut zabbix. Décommentez la ligne # DBPassword= et définissez sa valeur :

DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-password

Le mot de passe doit être strictement identique, octet par octet, à celui de l’étape 3. Une valeur DBPassword vide ou incorrecte est la cause la plus fréquente du bandeau « Zabbix server is not running » que vous verrez plus loin : le daemon démarre, échoue à s’authentifier auprès de la base de données, puis se termine. Rien à l’écran ne l’indique. Seul le journal le montre.

Étape 6, Configurer nginx pour le frontend

Le paquet zabbix-nginx-conf installe un server block dans /etc/zabbix/nginx.conf et le lie à nginx depuis /etc/nginx/conf.d/zabbix.conf. Cependant, les lignes listen et server_name sont commentées par défaut. nginx ne sert donc rien pour Zabbix tant que vous ne les avez pas modifiées :

server {
    listen          80;
    server_name     zabbix.example.com;
    ...
}

Utilisez votre domaine, ou l’adresse IP publique du serveur si vous n’avez pas encore de DNS. Deux points sont à vérifier. Le site d’accueil nginx par défaut d’Ubuntu écoute également sur le port 80 et est défini comme default server. Il prend donc en charge toute requête dont le nom ne correspond pas. Supprimez-le, sinon la mauvaise page s’affiche : sudo rm -f /etc/nginx/sites-enabled/default. Si /etc/nginx/conf.d/zabbix.conf est absent, ce qui correspond à un problème connu de packaging, créez le lien manuellement avec sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf. Testez ensuite la configuration et rechargez nginx :

sudo nginx -t
sudo systemctl reload nginx

nginx -t doit afficher test is successful. Si la commande affiche nginx: [emerg] a duplicate default server for 0.0.0.0:80, le site par défaut et le bloc Zabbix revendiquent tous deux default_server. Supprimez le site par défaut, puis effectuez un nouveau test. Le plus souvent, le test réussit avec uniquement un avertissement conflicting server name, mais le navigateur affiche toujours la page d’accueil standard. Le site par défaut prend alors en charge la requête parce que le nom ne correspond à aucun server block. Sa suppression corrige le problème.

Étape 7, démarrer et activer les services

Démarrez le serveur, l’agent, PHP-FPM et nginx, puis activez-les pour qu’ils redémarrent après un reboot.

sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable  zabbix-server zabbix-agent2 nginx php8.3-fpm

Ubuntu 24.04 fournit PHP 8.3. Le service FPM est donc php8.3-fpm. Le paquet zabbix-nginx-conf exécute son frontend sous ce même processus maître. Vérifiez que le serveur a démarré et qu’il reste actif :

sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.log

Un journal normal se termine par le démarrage du serveur, suivi de l’exécution de ses processus housekeeper, poller et trapper. Si vous voyez [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost', la DBPassword de l’étape 5 ne correspond pas. Corrigez-la, puis redémarrez le service. Une ligne [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist indique que vous avez ignoré l’import du schéma à l’étape 4. Le serveur n’a donc rien à lire.

Étape 8, Terminer l’assistant de configuration web

Accédez à http://your-domain-or-ip. L’assistant de configuration de Zabbix s’ouvre. Suivez les étapes :

  1. Bienvenue, choisissez une langue.
  2. Vérification des prérequis, chaque ligne doit afficher OK par défaut ; le pool /etc/zabbix/php-fpm.conf fourni augmente déjà les limites PHP nécessaires à Zabbix.
  3. Configuration de la connexion à la base de données, sélectionnez MySQL comme type de base de données, indiquez l’hôte localhost, le port 0 (ce qui correspond au port ou socket par défaut), le nom de la base de données zabbix, l’utilisateur zabbix et le mot de passe de l’étape 3. Des identifiants incorrects ou un schéma manquant sont signalés à ce stade.
  4. Paramètres, conservez l’hôte du serveur Zabbix localhost, le port 10051 et indiquez le nom de l’installation.
  5. Résumé de la préinstallation, puis Installer ; l’assistant écrit /etc/zabbix/web/zabbix.conf.php.
  6. Terminer, connectez-vous avec Admin (A majuscule) et le mot de passe zabbix, puis modifiez immédiatement ce mot de passe dans Utilisateurs.

Si l’assistant signale Cannot create the configuration file, l’utilisateur web ne peut pas écrire dans /etc/zabbix/web/. Téléchargez le zabbix.conf.php proposé, placez-le manuellement à cet emplacement avec sudo, puis cliquez sur Terminer.

Étape 9, ajouter l’hôte local et lui associer un template

Zabbix ne se surveille pas automatiquement. Accédez à Data collection → Hosts → Create host, définissez le nom d’hôte sur zabbix-server, ajoutez-le au groupe Linux servers, puis ajoutez une interface Agent avec l’adresse IP 127.0.0.1 et le port 10050. Dans Templates, associez Linux by Zabbix agent (la variante en interrogation passive ; Linux by Zabbix agent active utilise le push de l’agent). Enregistrez.

Dans la minute qui suit, la ligne de l’hôte affiche un libellé ZBX vert et les métriques apparaissent dans Monitoring → Latest data. Un libellé ZBX rouge signifie que le serveur ne peut pas joindre l’agent. Ce cas d’échec est décrit plus bas et ne signale pas une erreur dans cette étape.

Étape 10, un déclencheur utile et une alerte par e-mail

Le modèle Linux by Zabbix agent fournit déjà des déclencheurs pour une charge CPU élevée, une mémoire faible et des disques saturés. Les alertes sont donc disponibles dès que vous le liez. Pour voir comment créer un déclencheur, ajoutez le vôtre : ouvrez l’hôte, allez dans Triggers → Create trigger, donnez-lui le nom Root filesystem over 90% full on {HOST.NAME}, définissez la sévérité sur High, puis utilisez cette expression :

last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90

vfs.fs.dependent.size[/,pused] est l’item exprimé en pourcentage utilisé que la découverte des systèmes de fichiers du modèle crée pour le système de fichiers racine. Le modèle Linux de la version 7.0 collecte vfs.fs.get une seule fois, puis crée des items dépendants pour chaque point de montage. Le déclencheur fonctionne donc sans collecte supplémentaire. Enregistrez-le.

Un déclencheur ne fait que recolorer une ligne du dashboard tant qu’aucune action ne prévient un utilisateur. Dans Alerts → Media types → Email, définissez le serveur SMTP, le port, l’adresse de l’expéditeur, la sécurité de la connexion, généralement STARTTLS, ainsi que les identifiants du relay si nécessaire. Utilisez ensuite Test. Un échec indique que le chemin SMTP est incorrect, avant même qu’une alerte réelle en dépende. Ajoutez une adresse à l’utilisateur Admin dans Users → Users → Admin → Media → Add, puis sélectionnez les niveaux de sévérité qui doivent déclencher une notification. Configurez ensuite l’action dans Alerts → Actions → Trigger actions → Create action : ajoutez une condition comme Trigger severity >= Warning et, dans Operations, envoyez la notification à Admin par e-mail. Enregistrez l’action et activez-la. Vous préférez un outil de chat ? Zabbix 7.0 fournit des types de média webhook pour Slack, Discord et Telegram. Configurez-en un comme pour l’e-mail, puis affectez-le à un utilisateur.

Surveiller un second serveur avec l’agent

Pour surveiller un autre serveur, ajoutez-y également le dépôt Zabbix. Ubuntu 24.04 ne fournit aucun paquet Zabbix. Installez ensuite uniquement l’agent :

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update
sudo apt install -y zabbix-agent2

Modifiez /etc/zabbix/zabbix_agent2.conf. Définissez Server sur l’adresse IP du serveur Zabbix pour les vérifications passives. Pour les vérifications actives, définissez également ServerActive et utilisez un Hostname unique, correspondant à l’hôte que vous créez dans le frontend :

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

Exécutez sudo systemctl enable --now zabbix-agent2 et autorisez le trafic TCP sur le port 10050 depuis le serveur Zabbix vers cette machine. Dans le frontend, créez ensuite un hôte dont l’interface Agent pointe vers l’adresse IP de cette machine. Associez le template Linux. L’hôte doit commencer à remonter des données en moins d’une minute.

Modes de panne et chaînes affichées

Le frontend affiche Error connecting to database ou une erreur de base de données. À l’étape DB de l’assistant, Access denied for user 'zabbix'@'localhost' (using password: YES) signifie que le mot de passe ne correspond pas à celui de l’étape 3 ou que GRANT n’a jamais été exécuté. Si la connexion à la base de données fonctionne, mais que le frontend affiche The frontend does not match Zabbix database ou Table 'zabbix.users' doesn't exist, l’import du schéma de l’étape 4 a été ignoré ou a échoué. Relancez-le dans une base de données nouvellement créée.

Bannière orange : Zabbix server is not running: the information displayed may not be current. Le frontend fonctionne, mais ne peut pas joindre un serveur actif. Trois causes sont possibles, par ordre de probabilité. Le service est arrêté : vérifiez systemctl status zabbix-server et démarrez-le. Le service fonctionne, mais ne peut pas joindre sa base de données : le journal affiche [Z3001] connection to database 'zabbix' failed: [1045] Access denied, ce qui indique un DBPassword incorrect ou vide. Le frontend pointe vers le mauvais serveur : l’hôte localhost et le port 10051 sont enregistrés dans /etc/zabbix/web/zabbix.conf.php. Ubuntu n’active pas SELinux par défaut. La cause liée au socket SELinux mentionnée dans les guides RHEL ne s’applique donc pas. Ici, le problème vient presque toujours du mot de passe de la base de données ou d’un service arrêté.

L’hôte affiche l’étiquette rouge ZBX ; erreur de l’élément : Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused. L’agent ne fonctionne pas ou n’écoute pas. Vérifiez systemctl status zabbix-agent2 et confirmez ListenPort=10050. Un délai d’attente au lieu de « connection refused » signifie qu’un pare-feu bloque le port 10050. Le message associé Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. signifie que l’agent est joignable, mais que sa ligne Server= ne contient pas l’adresse IP du serveur Zabbix. Ajoutez-la, puis redémarrez l’agent.

Page d’accueil nginx par défaut ou 502 Bad Gateway. Cette page signifie que le site par défaut est toujours activé ou que le bloc Zabbix n’est pas lié. Supprimez /etc/nginx/sites-enabled/default et confirmez que /etc/nginx/conf.d/zabbix.conf existe, comme indiqué à l’étape 6. Un 502 signifie que nginx a bien joint PHP, mais que PHP-FPM est arrêté ou écoute sur un autre socket. Démarrez php8.3-fpm et vérifiez que le socket fastcgi_pass du bloc Zabbix correspond à celui du pool en cours d’exécution.

Sauvegardes, mises à niveau et TLS

La base de données contient tout l’historique. Sauvegardez-la donc régulièrement avec mysqldump et conservez le dump hors du serveur :

mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gz

Les fichiers de configuration /etc/zabbix sont peu volumineux et méritent aussi d’être sauvegardés, mais ils peuvent être recréés ; les données, non. La restauration suit l’ordre inverse : créez la base de données, importez le dump, puis indiquez son emplacement dans la configuration.

Les mises à niveau au sein de la branche 7.0 sont des exécutions apt update && apt upgrade classiques. Le serveur applique les migrations de schéma lors de son prochain démarrage. Mettez donc les paquets à niveau, puis redémarrez zabbix-server. Une future branche majeure nécessite une migration planifiée. Lisez ses notes de mise à niveau, effectuez d’abord un dump de la base de données et prévoyez une modification de schéma irréversible. C’est précisément pour cette raison que vous devez rester sur une branche LTS et y rester.

Ne laissez pas le frontend utiliser HTTP en clair. Une fois que le DNS pointe vers le serveur, installez-y un certificat avec Certbot et Let's Encrypt sur nginx pour Ubuntu 24.04. Cette procédure réécrit le server block pour écouter sur 443 et rediriger le trafic de 80. Profitez du durcissement de ce serveur, qui se connecte pour surveiller tous les autres serveurs que vous administrez, pour sécuriser aussi son SSH avec fail2ban qui bloque les tentatives SSH par force brute. Une connexion de monitoring ne doit pas circuler en clair, et sa porte d’entrée ne doit pas rester ouverte aux attaques par devinette de mot de passe.

FAQ

Ai-je besoin de l’agent Zabbix ou puis-je superviser sans lui ?

Les deux approches fonctionnent. L’agent (agent2) fournit des métriques détaillées par hôte : processeur, mémoire, disques, processus, services et fichiers journaux. C’est le choix habituel pour les serveurs que vous contrôlez. La supervision sans agent concerne les équipements sur lesquels vous ne pouvez pas installer de logiciel : SNMP pour les switches et les imprimantes, ping ICMP pour vérifier l’accessibilité, contrôles HTTP pour les endpoints et IPMI pour l’état du matériel. La plupart des déploiements réels combinent les deux.

Pourquoi le frontend indique-t-il que le serveur Zabbix ne fonctionne pas ?

Le frontend fonctionne, mais ne parvient pas à joindre un processus zabbix-server actif. En général, le serveur démarre, échoue à se connecter parce que DBPassword dans zabbix_server.conf est incorrect ou vide, puis s’arrête immédiatement. Exécutez systemctl status zabbix-server et lisez /var/log/zabbix/zabbix_server.log ; une ligne [Z3001] connection to database ... failed le confirme. Corrigez le mot de passe, puis redémarrez le service. La bannière disparaît dans la minute.

Dois-je utiliser MySQL ou puis-je utiliser PostgreSQL ?

Les deux sont entièrement pris en charge : zabbix-server-mysql avec MariaDB ou MySQL, comme dans ce guide, ou zabbix-server-pgsql avec PostgreSQL. Pour les petites installations, le choix importe peu. Pour les grandes installations, PostgreSQL avec l’extension TimescaleDB partitionne les tables d’historique et réduit fortement le coût de la maintenance. C’est pourquoi les grands sites tendent à le choisir. Sélectionnez une solution et conservez-la. Une migration ultérieure nécessite un export et une réimportation complets, pas un simple changement de configuration.

Quelle quantité de RAM faut-il à un serveur Zabbix tout-en-un ?

Pour une seule machine qui supervise quelques hôtes, 2 GB est un minimum réaliste et 4 GB offrent une marge confortable au-delà de quelques dizaines d’hôtes. La mémoire sert principalement au cache de la base de données et aux pollers du serveur. Un VPS de 1 GB fonctionne, mais la base de données manque de mémoire à mesure que l’historique augmente. Au-delà de cent hôtes, placez la base de données sur son propre serveur et ajustez son buffer pool au lieu d’ajouter encore de la RAM à une seule machine.

Zabbix est-il surdimensionné pour quelques serveurs ?

Cela peut être le cas. Si vous avez seulement besoin de savoir si un service est disponible et de disposer d’une page à partager, un outil plus léger comme Uptime Kuma pour la supervision de disponibilité et de statut est plus rapide à déployer et plus facile à lire en un coup d’œil. Choisissez Zabbix si vous avez besoin de seuils par métrique, de graphiques historiques, d’hôtes basés sur des modèles et de règles d’escalade, c’est-à-dire de fonctions qu’un simple outil de ping ne peut pas fournir à l’échelle d’un parc.