# Zabbix

Un outil open source de surveillance des infrastructures IT, offrant des alertes et des analyses en temps réel.

[![](https://wiki.favrep.ch/uploads/images/gallery/2025-10/scaled-1680-/image-1759782094798.png)](https://wiki.favrep.ch/uploads/images/gallery/2025-10/image-1759782094798.png)

> ⚠️ **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`

```bash
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

```conf
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

```conf
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

<iframe style="width: 100%; aspect-ratio: 16 / 9; object-fit: cover;" src="https://www.youtube.com/embed/cqnHWhDt8Ec" title="Zabbix - Comment envoyer des alertes Zabbix à Discord via un webhook" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

### 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

```bash
# 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+debian13_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](https://www.zabbix.com/download)
#### 6.2. Configuration de l'agent

Éditez le fichier de configuration de l'agent :

```bash
sudo nano /etc/zabbix/zabbix_agent2.conf
```

Modifiez les paramètres suivants :

```conf
# 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` :

```conf
Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=debian-web-01
```

#### 6.3. Démarrer et activer l'agent

```bash
# 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 :

```bash
# 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 **Configuration** → **Hosts**
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 :

```bash
# 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](https://www.zabbix.com/documentation/current/en/manual/quickstart/login#:~:text=This%20is%20the%20Zabbix%20welcome,in%20as%20a%20Zabbix%20superuser.)