Guide de déploiement

Zabbix sur VPS : superviser serveurs, services et réseau

Déployer sur un VPS Cloud →

Tutoriel

Self-hosting

Zabbix sur VPS : superviser serveurs, services et réseau

Un disque qui se remplit la nuit, un service qui s'arrête sans prévenir, un lien réseau saturé : sans supervision, c'est un client qui vous l'apprend. Zabbix est une plateforme de supervision open source (licence AGPL-3.0) qui surveille serveurs, applications et équipements réseau, et prévient la bonne personne dès qu'un seuil est franchi. Ce guide l'installe sur un VPS avec Docker Compose, le place derrière nginx en HTTPS, relie le VPS à son propre agent, puis ajoute vos autres serveurs et vos alertes.

6 min de lecture3 étapes
Sommaire· Ce que fait Zabbix1/12
  1. 01Ce que fait Zabbix
  2. 02Ce que Zabbix apporte
  3. 03Zabbix face aux autres options
  4. 04Prérequis
  5. 05Installer Zabbix avec Docker Compose
  6. 06Changez le mot de passe d'usine avant tout
  7. 07Placer Zabbix derrière nginx en HTTPS
  8. 08Relier l'hôte « Zabbix server » à l'agent du VPS
  9. 09Superviser vos autres serveurs
  10. 10Recevoir les alertes
  11. 11Sauvegarder et mettre à jour
  12. 12Installation en un clic sur ServOrbit

Ce que fait Zabbix

Zabbix collecte des mesures — charge du processeur, mémoire libre, espace disque, état d'un service, temps de réponse d'une page — et les compare à des déclencheurs. Quand une expression devient vraie, par exemple « moins de 10 % d'espace libre depuis cinq minutes », Zabbix ouvre un problème, l'affiche dans ses tableaux de bord et lance les actions prévues : un e-mail, un message Telegram, un webhook.

Les mesures arrivent par plusieurs chemins : l'agent Zabbix installé sur chaque serveur, le protocole SNMP pour les routeurs, commutateurs et onduleurs, des scénarios web pour les sites et les API, ou des requêtes directes vers une base de données. Des modèles prêts à l'emploi regroupent les bonnes mesures et les bons déclencheurs pour Linux, Windows, nginx, MySQL, PostgreSQL ou Docker.

Ce que Zabbix apporte

  • Agents Linux et Windows — processeur, mémoire, disques, réseau, services, processus et journaux.
  • SNMP — équipements réseau supervisés sans agent, avec découverte automatique des interfaces.
  • Déclencheurs et escalades — des seuils lisibles, des dépendances entre hôtes, des alertes qui montent d'un niveau si personne ne réagit.
  • Scénarios web — disponibilité, temps de réponse et contenu d'une suite de pages ou d'appels d'API.
  • Tableaux de bord, cartes et rapports — pour l'équipe d'exploitation comme pour vos clients.
  • Droits par groupe d'hôtes — chaque utilisateur ne voit que ce qui le concerne.

Zabbix face aux autres options

Faites défiler le tableau

ZabbixPrometheus + GrafanaUptime Kuma
Ce qui est superviséServeurs, services, réseau, sites webMétriques d'applications et de conteneursDisponibilité de sites et de ports
CollecteAgent, SNMP, HTTP, bases de donnéesExportateurs interrogésSondes HTTP, TCP, ping
ConfigurationInterface webFichiers YAMLInterface web
AlertesIntégrées, avec escaladesAlertmanager à partIntégrées
CoûtPrix du VPSPrix du VPSPrix du VPS

Prérequis

Un VPS Ubuntu 24.04 avec 2 Go de RAM et 20 Go de disque pour quelques dizaines d'hôtes, Docker et le plugin Compose installés, et un sous-domaine qui pointe vers le VPS, par exemple zabbix.example.com. Prévoyez davantage de disque si vous gardez un long historique : c'est la base PostgreSQL qui grossit avec le nombre de mesures.

Installer Zabbix avec Docker Compose

  1. Préparer le répertoire et le mot de passe de la base

    Le fichier .env porte le mot de passe de PostgreSQL, partagé par le serveur et l'interface web.

    mkdir -p /opt/zabbix && cd /opt/zabbix
    echo "DB_PASSWORD=$(openssl rand -hex 16)" > .env
    chmod 600 .env
  2. Écrire le fichier docker-compose.yml

    Quatre services : le serveur Zabbix, l'interface web (nginx et PHP), l'agent du VPS et PostgreSQL. Seule l'interface web est publiée, et seulement sur la boucle locale : nginx s'occupera du HTTPS.

    services:
      zabbix-server:
        image: zabbix/zabbix-server-pgsql:alpine-8.0.0
        restart: unless-stopped
        depends_on:
          database:
            condition: service_healthy
        environment:
          DB_SERVER_HOST: database
          POSTGRES_USER: zabbix
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_DB: zabbix
      zabbix-web:
        image: zabbix/zabbix-web-nginx-pgsql:alpine-8.0.0
        restart: unless-stopped
        depends_on:
          - zabbix-server
        ports:
          - "127.0.0.1:8080:8080"
        environment:
          ZBX_SERVER_HOST: zabbix-server
          DB_SERVER_HOST: database
          POSTGRES_USER: zabbix
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_DB: zabbix
          PHP_TZ: Africa/Casablanca
      zabbix-agent:
        image: zabbix/zabbix-agent2:alpine-8.0.0
        restart: unless-stopped
        environment:
          ZBX_HOSTNAME: "Zabbix server"
          ZBX_SERVER_HOST: zabbix-server
      database:
        image: postgres:17.11-alpine
        restart: unless-stopped
        environment:
          POSTGRES_USER: zabbix
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_DB: zabbix
        volumes:
          - zabbix-db:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U zabbix -d zabbix"]
          interval: 5s
          retries: 12
    volumes:
      zabbix-db: {}
  3. Démarrer la pile

    Au premier démarrage, le serveur crée le schéma de la base ; comptez une minute avant que l'interface réponde.

    docker compose up -d
    docker compose ps
    curl -fsS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/

Changez le mot de passe d'usine avant tout

Une installation neuve de Zabbix ouvre le compte Admin avec le mot de passe zabbix, connu de tous. Connectez-vous immédiatement, puis remplacez-le dans User settings, Profile, Change password — avant même de placer l'interface derrière son nom de domaine.

Placer Zabbix derrière nginx en HTTPS

Le port 8080 n'écoute que sur 127.0.0.1 : nginx, installé sur l'hôte, reçoit le trafic public et le relaie. Certbot ajoute ensuite le certificat et la redirection vers HTTPS.

server {
    listen 80;
    server_name zabbix.example.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
certbot --nginx -d zabbix.example.com

Relier l'hôte « Zabbix server » à l'agent du VPS

Zabbix crée d'office un hôte « Zabbix server » qui interroge un agent sur 127.0.0.1. Dans Docker, l'agent vit dans son propre conteneur : ouvrez Data collection, puis Hosts, cliquez sur « Zabbix server » et remplacez l'interface Agent par le nom DNS zabbix-agent, avec « Connect to » sur DNS. Une minute plus tard, l'indicateur ZBX passe au vert et Latest data affiche le processeur, la mémoire et la charge du VPS.

Superviser vos autres serveurs

Sur chaque serveur, installez le paquet zabbix-agent2 de votre distribution ou du dépôt officiel Zabbix, puis déclarez l'IP publique de votre VPS Zabbix comme serveur autorisé. En mode passif, c'est le serveur Zabbix qui interroge l'agent sur le port 10050 : ouvrez ce port à cette seule IP.

# /etc/zabbix/zabbix_agent2.conf
Server=203.0.113.10
Hostname=web-01
systemctl restart zabbix-agent2
ufw allow from 203.0.113.10 to any port 10050 proto tcp

Dans Data collection, puis Hosts, créez l'hôte web-01 avec son IP et le modèle « Linux by Zabbix agent ». Le mode actif, où l'agent pousse ses données vers le port 10051 du serveur, demande d'ouvrir ce port sur le VPS Zabbix : réservez-le aux IP de vos serveurs.

Recevoir les alertes

Dans Alerts, puis Media types, activez et configurez l'e-mail (serveur SMTP, expéditeur), Telegram ou Slack — Zabbix fournit des types prêts à l'emploi pour des dizaines de services. Ajoutez ensuite le média à votre utilisateur dans User settings, Profile, Media, puis activez l'action « Report problems to Zabbix administrators » dans Alerts, Actions. Testez en arrêtant l'agent d'un serveur : un problème « Zabbix agent is not available » doit vous parvenir.

Sauvegarder et mettre à jour

Toute la configuration et l'historique vivent dans PostgreSQL. Une sauvegarde quotidienne par pg_dump suffit :

cd /opt/zabbix
docker compose exec -T database pg_dump -U zabbix zabbix | gzip > zabbix-$(date +%F).sql.gz

Pour mettre à jour, changez le numéro de version des trois images Zabbix dans docker-compose.yml, puis docker compose pull && docker compose up -d : le serveur met le schéma à niveau au démarrage. Sauvegardez la base juste avant, et lisez les notes de version avant de changer de branche majeure.

Installation en un clic sur ServOrbit

Depuis le Marketplace de votre espace client, Zabbix s'installe sur un VPS ServOrbit sans écrire une ligne : serveur, interface web, PostgreSQL et agent du VPS sont déployés, l'hôte « Zabbix server » est déjà relié à son agent, le mot de passe d'usine est remplacé par un mot de passe généré, affiché dans votre espace client, et l'interface est publiée en HTTPS sur votre domaine ou sur le sous-domaine gratuit du VPS.

Supervisez votre parc depuis votre VPS

Un VPS ServOrbit Ubuntu 24.04 avec 2 Go de RAM suffit pour démarrer Zabbix. Installation en un clic depuis le Marketplace, HTTPS sur votre domaine ou sur le sous-domaine gratuit du VPS, mot de passe administrateur généré pour vous.