This section describes how to deploy Zabbix with Docker or Docker Compose.
Zabbix officially provides:
Zabbix fourni des images Docker pour chaque composant Zabbix en tant que conteneurs portables et auto-suffisants pour accélérer le déploiement et mettre à jour la procédure.
Les composants Zabbix sont fournis avec la prise en charge de base de données MySQL et PostgreSQL, le support des serveurs web Apache2 et Nginx. Ces images sont séparées en différentes images.
Official Zabbix component images may contain the following tags:
Tag | Description | Example |
---|---|---|
latest | The latest stable version of a Zabbix component based on Alpine Linux image. | zabbix-agent:latest |
<OS>-trunk | The latest nightly build of the Zabbix version that is currently being developed on a specific operating system. <OS> - the base operating system. Supported values: alpine - Alpine Linux; ltsc2019 - Windows 10 LTSC 2019 (agent only); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022 (agent only); ubuntu - Ubuntu |
zabbix agent:ubuntu-trunk |
<OS>-latest | The latest stable version of a Zabbix component on a specific operating system. <OS> - the base operating system. Supported values: alpine - Alpine Linux; ltsc2019 - Windows 10 LTSC 2019 (agent only); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022 (agent only); ubuntu - Ubuntu |
zabbix-agent:ol-latest |
<OS>-X.X-latest | The latest minor version of a Zabbix component of a specific major version and operating system. <OS> - the base operating system. Supported values: alpine - Alpine Linux; centos - CentOS (only for Zabbix 4.0) ltsc2019 - Windows 10 LTSC 2019 (agent only); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022 (agent only); ubuntu - Ubuntu X.X - the major Zabbix version (supported: 4.0, 5.0, 6.0, 6.2). |
zabbix-agent:alpine-6.0-latest |
<OS>-X.X.* | The latest minor version of a Zabbix component of a specific major version and operating system. <OS> - the base operating system. Supported values: alpine - Alpine Linux; centos - CentOS (only for Zabbix 4.0) ltsc2019 - Windows 10 LTSC 2019 (agent only); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022 (agent only); ubuntu - Ubuntu X.X - the major Zabbix version (supported: 4.0, 5.0, 6.0, 6.2). * - the Zabbix minor version |
zabbix-agent:alpine-6.4.1 |
Tout le monde peut suivre les modifications du fichier Docker en utilisant le dépôt officiel de Zabbix sur github.com. Vous pouvez faire un fork du projet ou créer vos propres images basées sur les fichiers Docker officiels.
Toutes les images des composants Zabbix fournissent des variables d'environnement pour contrôler la configuration. Ces variables d'environnement sont répertoriées dans chaque dépôt de composants. Ces variables d'environnement sont des options des fichiers de configuration Zabbix, mais avec une méthode de nommage différente. Par exemple, ZBX_LOGSLOWQUERIES
est égal à LogSlowQueries
des fichiers de configuration du serveur Zabbix et des proxys Zabbix.
Certaines options de configuration ne sont pas modifiables. Par exemple, PIDFile
et LogType
.
Certains composants ont des variables d'environnement spécifiques, qui n'existent pas dans les fichiers de configuration officiels de Zabbix :
Variable | Composants | Description |
---|---|---|
DB_SERVER_HOST |
Serveur Proxy Interface Web |
Cette variable est l’adresse IP ou le nom DNS du serveur MySQL ou PostgreSQL.
Par défaut, la valeur est mysql-server ou postgres-server pour MySQL ou PostgreSQL respectivement |
DB_SERVER_PORT |
Serveur Proxy Interface Web |
Cette variable est le port du serveur MySQL ou PostgreSQL. Par défaut, la valeur est '3306' ou '5432' respectivement. |
MYSQL_USER |
Serveur Proxy Interface Web |
Utilisateur de la base de données MySQL. Par défaut, la valeur est 'zabbix'. |
MYSQL_PASSWORD |
Serveur Proxy Interface Web |
Mot de passe de la base de données MySQL. Par défaut, la valeur est 'zabbix'. |
MYSQL_DATABASE |
Serveur Proxy Interface Web |
Nom de la base de données. Par défaut, la valeur est 'zabbix' pour le serveur Zabbix et 'zabbix_proxy' pour le proxy Zabbix. |
POSTGRES_USER |
Serveur Interface Web |
utilisateur de la base de données PostgreSQL. Par défaut, la valeur est 'zabbix'. |
POSTGRES_PASSWORD |
Serveur Interface Web |
Mot de passe de la base de données PostgreSQL. Par défaut, la valeur est 'zabbix'. |
POSTGRES_DB |
Serveur Interface Web |
Nom de la base de données. Par défaut, la valeur est 'zabbix' pour le serveur Zabbix et 'zabbix_proxy' pour le proxy Zabbix. |
PHP_TZ |
Interface Web | Fuseau horaire au format PHP. La liste complète des fuseaux horaires pris en charge est disponible sur php.net. Par défaut, la valeur est 'Europe/Riga'. |
ZBX_SERVER_NAME |
Interface Web | Nom de l'installation Zabbix visible dans le coin supérieur droit de l'interface Web.
Par défaut, la valeur est 'Zabbix Docker' |
ZBX_JAVAGATEWAY_ENABLE |
Serveur Proxy |
Permet la communication avec la passerelle Java Zabbix pour collecter les vérifications liées à Java. Par défaut, la valeur est "false" |
ZBX_ENABLE_SNMP_TRAPS |
Serveur Proxy |
Active la fonctionnalité de trap SNMP. Il requiert l'instance zabbix-snmptraps et le volume partagé /var/lib/zabbix/snmptraps au niveau du serveur Zabbix ou au proxy Zabbix. |
Les images permettent d'utiliser certains points de montage. Ces points de montage sont différents et dépendent du type de composant Zabbix :
Volume | Description |
---|---|
Agent Zabbix | |
/etc/zabbix/zabbix_agentd.d | Le volume permet d'inclure des fichiers *.conf et d'étendre l'agent Zabbix en utilisant la fonctionnalité UserParameter |
/var/lib/zabbix/modules | Le volume permet de charger des modules supplémentaires et d'étendre l'agent Zabbix à l'aide de la fonctionnalité LoadModule |
/var/lib/zabbix/enc | Le volume est utilisé pour stocker les fichiers liés à TLS. Ces noms de fichiers sont spécifiés à l'aide des variables d'environnement ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE et ZBX_TLSPSKFILE |
Serveur Zabbix | |
/usr/lib/zabbix/alertscripts | Le volume est utilisé pour les scripts d'alerte personnalisés. C'est le paramètre AlertScriptsPath dans zabbix_server.conf |
/usr/lib/zabbix/externalscripts | Le volume est utilisé par des vérifications externes. C'est le paramètre ExternalScripts dans zabbix_server.conf |
/var/lib/zabbix/modules | Le volume permet de charger des modules supplémentaires et d'étendre le serveur Zabbix à l'aide de la fonctionnalité LoadModule |
/var/lib/zabbix/enc | Le volume est utilisé pour stocker les fichiers liés à TLS. Ces noms de fichiers sont spécifiés à l'aide des variables d'environnement ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE et ZBX_TLSPSKFILE |
/var/lib/zabbix/ssl/certs | Le volume est utilisé comme emplacement des fichiers de certificat client SSL pour l'authentification du client. C'est le paramètre SSLCertLocation dans zabbix_server.conf |
/var/lib/zabbix/ssl/keys | Le volume est utilisé comme emplacement des fichiers de clé privée SSL pour l'authentification du client. C'est le paramètre SSLKeyLocation dans zabbix_server.conf |
/var/lib/zabbix/ssl/ssl_ca | Le volume est utilisé comme emplacement des fichiers d'autorité de certification (CA) pour la vérification du certificat du serveur SSL. C'est le paramètre SSLCALocation dans zabbix_server.conf |
/var/lib/zabbix/snmptraps | Le volume est utilisé comme emplacement du fichier snmptraps.log. Il peut être partagé par le conteneur zabbix-snmptraps et hérité à l'aide de l'option Docker volumes_from lors de la création d'une nouvelle instance du serveur Zabbix. La fonctionnalité de traitement des traps SNMP peut être activée en utilisant le volume partagé et en basculant la variable d'environnement ZBX_ENABLE_SNMP_TRAPS sur 'true' |
/var/lib/zabbix/mibs | Le volume permet d'ajouter de nouveaux fichiers MIB. Il ne supporte pas les sous-répertoires, toutes les MIBs doivent être placées dans /var/lib/zabbix/mibs |
Proxy Zabbix | |
/usr/lib/zabbix/externalscripts | Le volume est utilisé par des vérifications externes. C'est le paramètre ExternalScripts dans zabbix_proxy.conf |
/var/lib/zabbix/modules | Le volume permet de charger des modules supplémentaires et d'étendre le serveur Zabbix à l'aide de la fonctionnalité LoadModule |
/var/lib/zabbix/enc | Le volume est utilisé pour stocker les fichiers liés à TLS. Ces noms de fichiers sont spécifiés à l'aide des variables d'environnement ZBX_TLSCAFILE , ZBX_TLSCRLFILE , ZBX_TLSKEY_FILE et ZBX_TLSPSKFILE |
/var/lib/zabbix/ssl/certs | Le volume est utilisé comme emplacement des fichiers de certificat client SSL pour l'authentification du client. C'est le paramètre SSLCertLocation dans zabbix_proxy.conf |
/var/lib/zabbix/ssl/keys | Le volume est utilisé comme emplacement des fichiers de clé privée SSL pour l'authentification du client. C'est le paramètre SSLKeyLocation dans zabbix_proxy.conf |
/var/lib/zabbix/ssl/ssl_ca | Le volume est utilisé comme emplacement des fichiers de l'autorité de certificat (CA) pour la vérification SSL du certificat du serveur for SSL server certificate verification. It is the SSLCALocation parameter in zabbix_proxy.conf |
/var/lib/zabbix/snmptraps | Le volume est utilisé comme emplacement du fichier snmptraps.log. Il peut être partagé par le conteneur zabbix-snmptraps et hérité en utilisant l'option Docker volumes_from lors de la création d'une nouvelle instance du serveur Zabbix. La fonctionnalité de traitement des traps SNMP peut être activée en utilisant le volume partagé et en basculant la variable d'environnement ZBX_ENABLE_SNMP_TRAPS sur 'true' |
/var/lib/zabbix/mibs | Le volume permet d'ajouter de nouveaux fichiers MIB. Il ne supporte pas les sous-répertoires, toutes les MIBs doivent être placées dans /var/lib/zabbix/mibs |
Interface Web Zabbix basée sur un serveur Web Apache2 | |
/etc/ssl/apache2 | Le volume permet d'activer HTTPS pour l'interface web Zabbix. Le volume doit contenir les deux fichiers ssl.crt et ssl.key préparés pour les connexions SSL Apache2 |
Interface Web Zabbix basée sur un serveur Web Nginx | |
/etc/ssl/nginx | Le volume permet d'activer HTTPS pour l'interface web Zabbix. Le volume doit contenir les deux fichiers ssl.crt , ssl.key et dhparam.pem préparés pour les connexions SSL Nginx |
snmptraps Zabbix | |
/var/lib/zabbix/snmptraps | Le volume contient le fichier journal snmptraps.log nommé avec les traps SNMP reçues |
/var/lib/zabbix/mibs | Le volume permet d'ajouter de nouveaux fichiers MIB. Il ne supporte pas les sous-répertoires, toutes les MIBs doivent être placées dans /var/lib/zabbix/mibs |
Pour plus d'informations, utilisez les dépôts officiels de Zabbix dans Docker Hub.
Exemple 1
L'exemple suivant montre comment exécuter le serveur Zabbix avec la prise en charge de la base de données MySQL, l'interface Web Zabbix basée sur le serveur Web Nginx et la passerelle Java Zabbix.
1. Créez un réseau dédié aux conteneurs de composants Zabbix :
2. Démarrez une instance de serveur MySQL vide
# docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
--restart unless-stopped \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
3. Démarrez l'instance de la passerelle Java Zabbix
# docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-6.0-latest
4. Démarrez l'instance de serveur Zabbix et liez l'instance à l'instance de serveur MySQL créée
# docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:alpine-6.0-latest
L'instance de serveur Zabbix expose le port 10051/TCP (trappeur Zabbix) à la machine hôte.
5. Démarrez l'interface Web Zabbix et liez l'instance avec le serveur MySQL créé et les instances de serveur Zabbix
# docker run --name zabbix-web-nginx-mysql -t \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-6.0-latest
L'instance d'interface Web Zabbix expose le port 80/TCP (HTTP) à la machine hôte.
Exemple 2
L'exemple suivant montre comment exécuter le serveur Zabbix avec la prise en charge de la base de données PostgreSQL, l'interface Web Zabbix basée sur le serveur Web Nginx et la fonction d'interruption SNMP.
1. Créez un réseau dédié aux conteneurs de composants Zabbix :
2. Démarrez une instance de serveur PostgreSQL vide
# docker run --name postgres-server -t \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
--network=zabbix-net \
--restart unless-stopped \
-d postgres:latest
3. Démarrez l'instance snmptraps de Zabbix
# docker run --name zabbix-snmptraps -t \
-v /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw \
-v /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro \
--network=zabbix-net \
-p 162:1162/udp \
--restart unless-stopped \
-d zabbix/zabbix-snmptraps:alpine-6.0-latest
L'instance Zabbix snmptrap expose le port 162/UDP (traps SNMP) à la machine hôte.
4. Démarrez l'instance de serveur Zabbix et liez l'instance à l'instance de serveur PostgreSQL créée
# docker run --name zabbix-server-pgsql -t \
-e DB_SERVER_HOST="postgres-server" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
-e ZBX_ENABLE_SNMP_TRAPS="true" \
--network=zabbix-net \
-p 10051:10051 \
--volumes-from zabbix-snmptraps \
--restart unless-stopped \
-d zabbix/zabbix-server-pgsql:alpine-6.0-latest
L'instance de serveur Zabbix expose le port 10051/TCP (trappeur Zabbix) à la machine hôte.
5. Démarrez l'interface Web Zabbix et liez l'instance avec le serveur PostgreSQL créé et les instances de serveur Zabbix
# docker run --name zabbix-web-nginx-pgsql -t \
-e ZBX_SERVER_HOST="zabbix-server-pgsql" \
-e DB_SERVER_HOST="postgres-server" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
--network=zabbix-net \
-p 443:8443 \
-p 80:8080 \
-v /etc/ssl/nginx:/etc/ssl/nginx:ro \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-pgsql:alpine-6.0-latest
L'instance de l'interface Web Zabbix expose le port 443/TCP (HTTPS) à la machine hôte.
Le répertoire /etc/ssl/nginx doit contenir un certificat avec le nom requis.
Exemple 3
L'exemple suivant montre comment exécuter le serveur Zabbix avec la prise en charge de la base de données MySQL, l'interface Web Zabbix basée sur le serveur Web Nginx et la passerelle Java Zabbix à l'aide de podman
sur Red Hat 8.
1. Créez un nouveau pod avec le nom "zabbix" et les ports exposés (interface Web, trappeur de serveur Zabbix) :
2. (facultatif) Démarrez le conteneur d'agent Zabbix à l'emplacement du pod zabbix
:
podman run --name zabbix-agent \
-eZBX_SERVER_HOST="127.0.0.1,localhost" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-agent-50:latest
3. Créez le répertoire ./mysql/
sur l'hôte et démarrez le serveur Oracle MySQL 8.0 :
podman run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-v ./mysql/:/var/lib/mysql/:Z \
--restart=always \
--pod=zabbix \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
3. Démarrez le conteneur du serveur Zabbix :
podman run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="127.0.0.1" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-server-mysql-50
4. Démarrez le conteneur Zabbix Java Gateway :
podman run --name zabbix-java-gateway -t \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-java-gateway-50
5. Démarrez le conteneur d'interface Web Zabbix :
podman run --name zabbix-web-mysql -t \
-e ZBX_SERVER_HOST="127.0.0.1" \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-web-mysql-50
Le pod zabbix
expose le port 80/TCP (HTTP) à la machine hôte à partir de 8080/TCP du conteneur zabbix-web-mysql
.
Zabbix fournit également des fichiers de composition pour définir et exécuter des composants Zabbix multi-conteneurs dans Docker. Ces fichiers de composition sont disponibles dans le référentiel officiel Zabbix docker sur github.com : https://github.com/zabbix/zabbix-docker. Ces fichiers de composition sont ajoutés à titre d'exemples, ils sont surchargés. Par exemple, ils contiennent des proxies prenant en charge MySQL et SQLite3.
Il existe plusieurs versions différentes des fichiers de composition :
Nom du fichier | Description |
---|---|
docker-compose_v3_alpine_mysql_latest.yaml |
Le fichier de composition exécute la dernière version des composants Zabbix 5.4 sur Alpine Linux avec prise en charge de la base de données MySQL. |
docker-compose_v3_alpine_mysql_local.yaml |
Le fichier de composition construit localement la dernière version de Zabbix 5.4 et exécute les composants Zabbix sur Alpine Linux avec prise en charge de la base de données MySQL. |
docker-compose_v3_alpine_pgsql_latest.yaml |
Le fichier de composition exécute la dernière version des composants Zabbix 5.4 sur Alpine Linux avec prise en charge de la base de données PostgreSQL. |
docker-compose_v3_alpine_pgsql_local.yaml |
Le fichier de composition construit localement la dernière version de Zabbix 5.4 et exécute les composants Zabbix sur Alpine Linux avec prise en charge de la base de données PostgreSQL. |
docker-compose_v3_centos_mysql_latest.yaml |
Le fichier de composition exécute la dernière version des composants Zabbix 5.4 sur CentOS 8 avec prise en charge de la base de données MySQL. |
docker-compose_v3_centos_mysql_local.yaml |
Le fichier de composition construit localement la dernière version de Zabbix 5.4 et exécute les composants Zabbix sur CentOS 8 avec la prise en charge de la base de données MySQL. |
docker-compose_v3_centos_pgsql_latest.yaml |
Le fichier de composition exécute la dernière version des composants Zabbix 5.4 sur CentOS 8 avec prise en charge de la base de données PostgreSQL. |
docker-compose_v3_centos_pgsql_local.yaml |
Le fichier de composition construit localement la dernière version de Zabbix 5.4 et exécute les composants Zabbix sur CentOS 8 avec la prise en charge de la base de données PostgreSQL. |
docker-compose_v3_ubuntu_mysql_latest.yaml |
Le fichier de composition exécute la dernière version des composants Zabbix 5.4 sur Ubuntu 20.04 avec prise en charge de la base de données MySQL. |
docker-compose_v3_ubuntu_mysql_local.yaml |
Le fichier de composition construit localement la dernière version de Zabbix 5.4 et exécute les composants Zabbix sur Ubuntu 20.04 avec la prise en charge de la base de données MySQL. |
docker-compose_v3_ubuntu_pgsql_latest.yaml |
Le fichier de composition exécute la dernière version des composants Zabbix 5.4 sur Ubuntu 20.04 avec prise en charge de la base de données PostgreSQL. |
docker-compose_v3_ubuntu_pgsql_local.yaml |
Le fichier de composition construit localement la dernière version de Zabbix 5.4 et exécute les composants Zabbix sur Ubuntu 20.04 avec la prise en charge de la base de données PostgreSQL. |
Les fichiers Docker Compose disponibles prennent en charge la version 3 de Docker Compose.
Les fichiers compose sont configurés pour prendre en charge le stockage local sur une machine hôte. Docker Compose créera un répertoire zbx_env
dans le dossier avec le fichier compose lorsque vous exécuterez les composants Zabbix à l'aide du fichier compose. Le répertoire contiendra la même structure que celle décrite ci-dessus dans la section Volumes et le répertoire pour le stockage de la base de données.
Il existe également des volumes en mode lecture seule pour les fichiers /etc/localtime
et /etc/timezone
.
Dans le même répertoire avec les fichiers compose sur github.com, vous pouvez trouver des fichiers avec des variables d'environnement par défaut pour chaque composant dans le fichier compose. Ces fichiers d'environnement sont nommés comme ceci :.env_<type de composant>
.
Exemple 1
La commande téléchargera les dernières images Zabbix 6.0 pour chaque composant Zabbix et les exécutera en mode détaché.
N'oubliez pas de télécharger les fichiers .env_<type de composant>
depuis le référentiel officiel Zabbix de github.com avec les fichiers compose.
Exemple 2
La commande téléchargera l'image de base Ubuntu 20.04 (focal), puis construira les composants Zabbix 5.4 localement et les exécutera en mode détaché.