Passer au contenu principal

Zabbix

Un outil open source de surveillance des infrastructures IT, offrant des alertes et des analyses en temps réel.

⚠️ Avertissements importants

  • Remplacez le mot de passe par défaut Mot_de_passe dans les variables du Docker compose et dans la base de données par un mot de passe fort et unique.
  • Protégez l'accès à l'interface Zabbix en limitant son exposition sur Internet (utilisez un VPN, une authentification forte ou un pare-feu).
  • Remplacez le mot de passe de l'administrateur par défaut de Zabbix.

1. Crée les volumes.

C'est optionnel, si vous ne les utilisez pas, supprimez-les en conséquence dans le compose et faites des montages liés à vos dossiers locaux par exemple /srv/zabbix/exemple_data

docker volume create postgresql-data
docker volume create zabbix-server-data
docker volume create zabbix-snmptraps-data
docker volume create zabbix-export-data
docker volume create zabbix-web-data

2. Docker Compose

services:
  postgresql-server:
    image: postgres:latest
    container_name: postgresql-server
    restart: unless-stopped
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - postgresql-data:/var/lib/postgresql/data        # À modifier si vous faites des montages liés à vos dossiers locaux

  zabbix-server:
    image: zabbix/zabbix-server-pgsql:latest
    container_name: zabbix-server
    restart: unless-stopped
    depends_on:
      - postgresql-server
    environment:
      DB_SERVER_HOST: postgresql-server
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    ports:
      - "10051:10051"                                   # Port d'écoute agent
    volumes:
      - zabbix-server-data:/var/lib/zabbix              # À modifier si vous voulez plutôt faire des montages liés à vos dossiers locaux
      - zabbix-snmptraps-data:/var/lib/zabbix/snmptraps # À modifier si vous voulez plutôt faire des montages liés à vos dossiers locaux
      - zabbix-export-data:/var/lib/zabbix/export       # À modifier si vous voulez plutôt faire des montages liés à vos dossiers locaux

  zabbix-web-nginx-pgsql:
    image: zabbix/zabbix-web-nginx-pgsql:latest
    container_name: zabbix-web
    restart: unless-stopped
    depends_on:
      - postgresql-server
      - zabbix-server
    environment:
      DB_SERVER_HOST: postgresql-server
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
      ZBX_SERVER_HOST: zabbix-server
      PHP_TZ: ${PHP_TZ}
    ports:
      - "${ZABBIX_FRONTEND_PORT}:8080"
    volumes:
      - zabbix-web-data:/usr/share/zabbix               # À modifier si vous voulez plutôt faire des montages liés à vos dossiers locaux

  zabbix-agent:
    image: zabbix/zabbix-agent:latest
    container_name: zabbix-agent
    restart: unless-stopped
    depends_on:
      - zabbix-server
    environment:
      ZBX_HOSTNAME: "zabbix-server"
      ZBX_SERVER_HOST: zabbix-server
      ZBX_SERVER_PORT: '10051'                          # Communique avec le port d'écoute agent du Zabbix server
      ZBX_SERVER_ACTIVE: zabbix-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

volumes:                                                # À supprimez si vous faites des montages liés à vos dossiers locaux
  postgresql-data:
      external: true
  zabbix-server-data:
      external: true
  zabbix-snmptraps-data:
      external: true
  zabbix-export-data:
      external: true
  zabbix-web-data:
      external: true

3. Environnement variable

POSTGRES_USER=zabbix
POSTGRES_PASSWORD=Mot_de_passe                        # Remplacez le mot de passe par un mot de passe fort
POSTGRES_DB=zabbix
PHP_TZ=Europe/Zurich                                  # Remplacez par votre
ZABBIX_FRONTEND_PORT=17318                            # Optionnel : Remplacez le port de la page Zabbix

4. Accédez à la page d'administration

ip:17318 et le nom d'utilisateur par défaut est Admin et le mot de passe zabbix

5. Notification Discord

6. Installation de Zabbix Agent sur une base Debian

Pour surveiller d'autres serveurs Debian, vous devez installer l'agent Zabbix sur chaque machine à monitorer.

6.1. Installation via le dépôt officiel Zabbix

# Mettre à jour les paquets
sudo apt update

# Installer les dépendances
sudo apt install -y wget curl gnupg2 software-properties-common

# Télécharger et installer le dépôt Zabbix (Debian 13 - Trixie)
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb
sudo dpkg -i zabbix-release_latest+debian123_all.deb
sudo apt update

# Installer l'agent Zabbix
sudo apt install -y zabbix-agent2

# Installer les plugins Zabbix agent 2
sudo apt install -y zabbix-agent2-plugin-mongodb zabbix-agent2-plugin-mssql zabbix-agent2-plugin-postgresql

Note : Pour Debian 12 (Bookworm), remplacez debian13 par debian12 dans l'URL ci-dessus.

Pour les autres distributions : https://www.zabbix.com/download

6.2. Configuration de l'agent

Éditez le fichier de configuration de l'agent :

sudo nano /etc/zabbix/zabbix_agent2.conf

Modifiez les paramètres suivants :

# Adresse IP ou hostname du serveur Zabbix
Server=IP_DU_SERVEUR_ZABBIX

# Adresse IP du serveur Zabbix pour les checks actifs
ServerActive=IP_DU_SERVEUR_ZABBIX

# Nom d'hôte unique pour identifier ce serveur dans Zabbix
Hostname=nom-du-serveur-debian

# Optionnel : Autoriser les commandes à distance (à activer avec prudence)
# AllowKey=system.run[*]

Exemple avec l'IP 192.168.1.100 :

Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=debian-web-01

6.3. Démarrer et activer l'agent

# Démarrer l'agent Zabbix
sudo systemctl start zabbix-agent2

# Activer le démarrage automatique
sudo systemctl enable zabbix-agent2

# Vérifier le statut
sudo systemctl status zabbix-agent2

6.4. Configurer le pare-feu

Si vous utilisez UFW ou iptables, autorisez le port 10050 :

# Avec UFW
sudo ufw allow 10050/tcp

# Avec iptables
sudo iptables -A INPUT -p tcp --dport 10050 -j ACCEPT
sudo netfilter-persistent save

6.5. Ajouter l'hôte dans l'interface Zabbix

  1. Connectez-vous à l'interface web Zabbix
  2. Allez dans ConfigurationHosts
  3. Cliquez sur Create host
  4. Remplissez les informations :
    • Hostname : debian-web-01 (le même que dans la config)
    • Groups : Sélectionnez ou créez un groupe (ex: "Linux servers")
    • Agent : Dans l'onglet Interfaces, ajoutez l'IP de votre serveur Debian
    • Port : 10050
  5. Dans l'onglet Templates, ajoutez le template Linux by Zabbix agent
  6. Cliquez sur Add

6.6. Vérification

Pour vérifier que l'agent communique correctement :

# Vérifier les logs
sudo tail -f /var/log/zabbix/zabbix_agent2.log

# Tester la connectivité depuis le serveur Zabbix
zabbix_get -s IP_DU_SERVEUR_DEBIAN -k agent.ping

Astuce : Dans l'interface Zabbix, l'icône de disponibilité de l'hôte deviendra verte (ZBX) après quelques minutes si la connexion est établie.

7. Si vous voulez approfondir, Zabbix propose une bonne documentation