iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
Formations
Bash / YAML · Intermédiaire

Supervision avec Zabbix

Superviser serveurs, réseau, bases de données et sites web avec Zabbix 7.0 LTS : installation, agent 2, templates, triggers, alertes, SNMP, proxies, API et mise en production.

ZabbixPostgreSQLNginxSNMPDocker
01Pourquoi superviser, et pourquoi Zabbix02Installer Zabbix 7.0 LTS avec PostgreSQL et Nginx03Agent 2, hôtes et templates04Items, triggers et découverte automatique05Alertes : media types, actions et escalades06Réseau, web, bases de données et proxies07Tableaux de bord, API et mise en production
Chapitre 2·30 min

Installer Zabbix 7.0 LTS avec PostgreSQL et Nginx

On installe ici le Zabbix server, sa base PostgreSQL, le frontend web servi par Nginx et un agent 2 pour superviser la machine elle-même. Deux méthodes : les paquets officiels sur Ubuntu 24.04, que je recommande pour la production, et Docker Compose, pratique pour tester ou pour une petite installation.

Dimensionner la machine

La documentation officielle donne des ordres de grandeur selon le nombre de métriques collectées, pas selon le nombre d'hôtes. Un serveur Linux avec le template standard représente une centaine de métriques.

TailleMétriquesCPURAM
Petite1 0002 cœurs8 Go
Moyenne10 0004 cœurs16 Go
Grande100 00016 cœurs64 Go

C'est la base de données qui limite en premier. Prévoyez un disque SSD, et de l'espace : l'historique grossit vite tant qu'on n'a pas réglé les durées de conservation, ce qu'on fera au chapitre 7.

Installation sur Ubuntu 24.04

Toutes les commandes suivantes s'exécutent en root, ou avec sudo.

Le dépôt officiel

Zabbix publie ses propres paquets, toujours plus récents que ceux de la distribution. On installe le paquet qui déclare le dépôt de la branche 7.0 :

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

Les paquets

apt install -y postgresql zabbix-server-pgsql zabbix-frontend-php php8.3-pgsql \
  zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

zabbix-sql-scripts contient le schéma de la base. zabbix-nginx-conf installe une configuration Nginx prête à l'emploi pour le frontend.

La base de données

On crée un utilisateur et une base dédiés, puis on importe le schéma initial. La commande createuser demande un mot de passe : notez-le, il servira deux fois.

sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

L'import prend une à deux minutes et affiche beaucoup de lignes INSERT et CREATE. C'est normal. Si vous connaissez mal PostgreSQL, les bases de PostgreSQL expliquent les rôles et les bases utilisés ici.

Le serveur

Dans /etc/zabbix/zabbix_server.conf, une seule ligne est obligatoire : le mot de passe de la base.

/etc/zabbix/zabbix_server.conf
DBPassword=le-mot-de-passe-choisi

Le frontend

Le fichier /etc/zabbix/nginx.conf livré par le paquet a ses deux premières lignes commentées. On les décommente et on les adapte :

/etc/zabbix/nginx.conf
server {
        listen          8080;
        server_name     zabbix.example.com;

Le port 8080 évite tout conflit avec un site déjà servi sur le port 80. Si Zabbix est seul sur la machine, mettez listen 80; et placez un certificat TLS devant, directement dans Nginx ou via un reverse proxy. La configuration de Nginx détaille cette partie.

Démarrage

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

Vérifiez que le serveur a démarré proprement :

tail -n 20 /var/log/zabbix/zabbix_server.log

Une ligne server #0 started [main process] suivie de la liste des processus lancés signifie que tout va bien. Une erreur de connexion à la base vient presque toujours du DBPassword.

L'assistant web

Ouvrez http://zabbix.example.com:8080. Un assistant en six étapes vérifie les prérequis PHP, demande les paramètres de la base, puis le nom de l'installation et le fuseau horaire.

  1. Les prérequis doivent tous être en « OK ». Avec les paquets officiels, c'est le cas.
  2. Type de base : PostgreSQL, hôte localhost, base zabbix, utilisateur zabbix, et le mot de passe choisi plus haut.
  3. Nom du serveur Zabbix : il s'affiche en haut de l'interface. Mettez quelque chose qui distingue la production d'un environnement de test.
  4. Fuseau horaire : choisissez le vôtre, sinon les graphiques seront décalés.

Connectez-vous ensuite avec l'utilisateur Admin et le mot de passe zabbix. Changez ce mot de passe immédiatement, dans Users > Users. Un frontend Zabbix exposé avec les identifiants par défaut est une porte ouverte sur toute votre infrastructure.

Dans Data collection > Hosts, un hôte « Zabbix server » existe déjà. Il est supervisé par l'agent 2 installé sur la même machine. Au bout de quelques minutes, sa colonne de disponibilité passe au vert : la chaîne complète fonctionne.

Variante Docker Compose

Zabbix publie des images officielles pour chaque composant. Le nom suit le motif zabbix/<composant>:<os>-<version>, par exemple zabbix/zabbix-server-pgsql:alpine-7.0-latest. Voici une installation minimale avec PostgreSQL :

compose.yaml
services:
  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: ${ZBX_DB_PASSWORD}
      POSTGRES_DB: zabbix
    volumes:
      - pgdata:/var/lib/postgresql/data
 
  zabbix-server:
    image: zabbix/zabbix-server-pgsql:alpine-7.0-latest
    restart: unless-stopped
    depends_on:
      - postgres
    environment:
      DB_SERVER_HOST: postgres
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: ${ZBX_DB_PASSWORD}
      POSTGRES_DB: zabbix
    ports:
      - "10051:10051"
 
  zabbix-web:
    image: zabbix/zabbix-web-nginx-pgsql:alpine-7.0-latest
    restart: unless-stopped
    depends_on:
      - zabbix-server
    environment:
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: postgres
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: ${ZBX_DB_PASSWORD}
      POSTGRES_DB: zabbix
      PHP_TZ: Europe/Paris
    ports:
      - "8080:8080"
 
  zabbix-agent:
    image: zabbix/zabbix-agent2:alpine-7.0-latest
    restart: unless-stopped
    environment:
      ZBX_HOSTNAME: "Zabbix server"
      ZBX_SERVER_HOST: zabbix-server
 
volumes:
  pgdata:

Le mot de passe vit dans un fichier .env à côté, jamais dans le compose.yaml commité :

echo "ZBX_DB_PASSWORD=$(openssl rand -base64 24)" > .env
docker compose up -d

Le conteneur du serveur crée le schéma lui-même au premier démarrage. Le frontend répond ensuite sur le port 8080, avec les mêmes identifiants par défaut à changer. Dans l'hôte « Zabbix server » de l'interface, remplacez l'adresse de l'interface agent 127.0.0.1 par le nom DNS zabbix-agent, sinon le serveur cherchera l'agent dans son propre conteneur.

Pour les bases de Compose, volumes et fichiers .env, voir le guide Docker Compose. Le dépôt zabbix/zabbix-docker fournit aussi des fichiers Compose complets, avec proxy, Java gateway et réception des traps SNMP.

Ouvrir les bons ports

Sur le serveur Zabbix, en plus de SSH, deux ports suffisent :

ufw allow 8080/tcp     # frontend web, ou 443 derrière un reverse proxy
ufw allow 10051/tcp    # agents actifs et proxies

Sur chaque machine supervisée en mode passif, il faut ouvrir le port 10050, mais seulement pour l'adresse du serveur Zabbix :

ufw allow from 10.0.0.10 to any port 10050 proto tcp

Ne laissez jamais le port 10050 ouvert à tout Internet. Les règles de pare-feu sont détaillées dans le guide UFW.


Le serveur tourne et se supervise lui-même. Il reste à lui donner quelque chose à superviser : c'est l'objet du chapitre suivant, avec l'agent 2, les templates et l'enregistrement automatique des hôtes.

Précédent
Pourquoi superviser, et pourquoi Zabbix
Suivant
Agent 2, hôtes et templates

Développeur fullstack passionné. J'apprends en construisant et je documente tout — front, back, outils. Le code s'apprend mieux en public.

Naviguer

IndexTous les articlesFormationsProfilOutilsBibliothech

Ailleurs

GitHub RSS

Newsletter

Les articles, libs et découvertes. Une fois par semaine, pas plus.

© 2026 William LoreeConçu & codé à la main