This section describes how to deploy Zabbix with Docker or Docker Compose.
Zabbix officially provides:
Zabbixは各ZabbixコンポーネントのDockerイメージをポータブルな自給自足のコンテナとして提供し、
デプロイとアップデート手順の迅速化を図っています。
Zabbixコンポーネントには、MySQL、PostgreSQLデータベースサポート、Apache2、Nginx Webサーバサポートが付属しています。
これらのイメージはそれぞれ別のイメージに分かれています。
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 |
github.com の Zabbix official repositoryを利用すれば、誰でもDockerファイルの変更を追うことができます。
プロジェクトをフォークしたり、公式 Docker ファイルをベースに独自のイメージを作成することができます。
すべての Zabbix コンポーネント イメージは、構成を制御するための環境変数を提供します。 これらの環境変数は、各コンポーネント リポジトリにリストされています。 これらの環境変数は Zabbix 構成ファイルのオプションですが、命名方法が異なります。 たとえばZBX_LOGSLOWQUERIES
は、Zabbix サーバーおよび Zabbix プロキシ構成ファイルのLogSlowQueries
と同じです。
一部の設定オプションは変更できません。 たとえばPIDFile
やLogType
一部のコンポーネントには、公式の Zabbix 設定ファイルには存在しない特定の環境変数があります。
変数 | コンポーネント | 説明 |
DB_SERVER_HOST |
Server Proxy Web interface |
この変数は、MySQL または PostgreSQL サーバーの IP または DNS 名です。 デフォルトの値は MySQL または PostgreSQL に対してそれぞれ mysql-server またはpostgres-server です。 |
DB_SERVER_PORT |
この変数はMySQL または PostgreSQL サーバーのポートです。 デフォルトの値はそれぞれ 3306 または5432 です。 |
|
MYSQL_USER |
Server Proxy Web-interface |
MySQL データベース ユーザー デフォルトの値は zabbix です。 |
MYSQL_PASSWORD |
Server Proxy Web interface |
MySQL データベースパスワード デフォルトの値は 'zabbix'です。 |
MYSQL_DATABASE |
Server Proxy Web interface |
Zabbix データベース名 デフォルトの値はZabbix サーバーの場合 zabbix 、Zabbix プロキシの場合zabbix\_proxy です。 |
POSTGRES_USER |
Server Web interface |
PostgreSQL データベースユーザー デフォルトの値は'zabbix'です |
POSTGRES_PASSWORD |
Server Web interface |
PostgreSQL データベースパスワード デフォルトの値は 'zabbix'です |
POSTGRES_DB |
Server Web interface |
Zabbix データベース名 デフォルトの値はZabbixサーバーの場合'zabbix'、Zabbixプロキシの場合 'zabbix_proxy' です |
PHP_TZ |
Web-interface | PHP フォーマットのタイムゾーン。 サポートされているタイムゾーンはphp.net で確認できます。 デフォルト値は Europe/Riga です。 |
ZBX_SERVER_NAME |
Web interface | Web インターフェイスの右上隅に表示される Zabbix インストール名 デフォルトの値は Zabbix Docker です。 |
ZBX_JAVAGATEWAY_ENABLE |
Server Proxy |
Zabbix Java ゲートウェイとの通信を有効にして、Java 関連のチェックを収集します。 デフォルトの値は"false"です。 |
ZBX_ENABLE_SNMP_TRAPS |
Server Proxy |
SNMP トラップ機能を有効にします。 zabbix-snmptraps インスタンスと共有ボリューム /var/lib/zabbix/snmptraps が Zabbix サーバーまたは Zabbix プロキシに必要です。 |
イメージでは、いくつかのマウント ポイントを使用できます。 これらのマウント ポイントはZabbix コンポーネントの種類によって異なります。
ボリューム | 説明 |
---|---|
Zabbix エージェント | |
/etc/zabbix/zabbix_agentd.d | *.conf ファイルを含めて、UserParameter 機能を使用して Zabbix エージェントを拡張できます |
/var/lib/zabbix/modules | LoadModule 機能を使用して、追加のモジュールをロードし、Zabbix エージェントを拡張できます。 |
/var/lib/zabbix/enc | TLS 関連のファイルを格納するために使用されます。 これらのファイル名は、ZBX_TLSCAFILE ,ZBX_TLSCRLFILE ,ZBX_TLSKEY_FILE ,ZBX_TLSPSKFILE 環境変数を使用して指定されます。 |
Zabbix サーバー | |
/usr/lib/zabbix/alertscripts | カスタム アラート スクリプトに使用されます。 zabbix_server.confのAlertScriptsPath パラメータです |
/usr/lib/zabbix/externalscripts | 外部チェックに使用されます。 zabbix_server.confのExternalScripts パラメータです |
/var/lib/zabbix/modules | LoadModule 機能を使用して、追加のモジュールをロードし、Zabbix サーバーを拡張できます。 |
/var/lib/zabbix/enc | TLS 関連のファイルを格納するために使用されます。 これらのファイル名は、ZBX_TLSCAFILE ,ZBX_TLSCRLFILE ,ZBX_TLSKEY_FILE ,ZBX_TLSPSKFILE 環境変数を使用して指定されます。 |
/var/lib/zabbix/ssl/certs | クライアント認証用の SSL クライアント証明書ファイルの格納場所として使用されます。 これは、zabbix_server.conf の SSLCertLocation パラメータです。 |
/var/lib/zabbix/ssl/keys | クライアント認証用の SSL 秘密鍵ファイルの格納場所として使用されます。 zabbix_server.confのSSLKeyLocation パラメータです。 |
/var/lib/zabbix/ssl/ssl_ca | SSL サーバー証明書検証用の認証局 (CA) ファイルの格納場所として使用されます。 zabbix_server.confのSSLCALocation パラメータです |
/var/lib/zabbix/snmptraps | ボリュームは、snmptraps.log ファイルの場所として使用されます。 これは、zabbix-snmptraps コンテナーによって共有され、Zabbix サーバーの新しいインスタンスを作成するときに、volumes_from Docker オプションを使用して継承される可能性があります。 共有ボリュームを使用し、ZBX_ENABLE_SNMP_TRAPS 環境変数を'true'に切り替えることで、SNMP トラップ処理機能を有効にすることができます。 |
/var/lib/zabbix/mibs | 新しい MIB ファイルを追加できます。 サブディレクトリはサポートしていません。すべての MIB を/var/lib/zabbix/mibs に配置する必要があります。 |
Zabbix プロキシ | |
/usr/lib/zabbix/externalscripts | 外部チェックによって使用されます。 zabbix_proxy.conf の ExternalScripts パラメータです。 |
/var/lib/zabbix/db_data/ | ボリュームにより、外部デバイスにデータベース ファイルを保存できます。 SQLite3 を使用する Zabbix プロキシでのみサポート |
/var/lib/zabbix/modules | LoadModule 機能を使用して、追加のモジュールをロードし、Zabbix サーバーを拡張できます。 |
/var/lib/zabbix/enc | TLS 関連のファイルを格納するために使用されます。 これらのファイル名は、ZBX_TLSCAFILE ,ZBX_TLSCRLFILE ,ZBX_TLSKEY_FILE ,ZBX_TLSPSKFILE 環境変数を使用して指定されます。 |
/var/lib/zabbix/ssl/certs | クライアント認証用の SSL クライアント証明書ファイルの格納場所として使用されます。 zabbix_proxy.conf の SSLCertLocation パラメータです。 |
/var/lib/zabbix/ssl/keys | クライアント認証用の SSL 秘密鍵ファイルの格納場所として使用されます。 zabbix_proxy.conf の SSLKeyLocation パラメータです。 |
/var/lib/zabbix/ssl/ssl_ca | SSL サーバー証明書検証用の認証局 (CA) ファイルの格納場所として使用されます。 zabbix_proxy.conf の SSLCALocation パラメータです。 |
/var/lib/zabbix/snmptraps | ボリュームは、snmptraps.log ファイルの場所として使用されます。 これは、zabbix-snmptraps コンテナーによって共有され、Zabbix サーバーの新しいインスタンスを作成するときに、volumes_from Docker オプションを使用して継承される可能性があります。 共有ボリュームを使用し、ZBX_ENABLE_SNMP_TRAPS 環境変数を'true'に切り替えることで、SNMP トラップ処理機能を有効にすることができます。 |
/var/lib/zabbix/mibs | 新しい MIB ファイルを追加できます。 サブディレクトリはサポートしていません。すべての MIB を/var/lib/zabbix/mibs に配置する必要があります。 |
Apache2 Web サーバーに基づく Zabbix Web インターフェス | |
/etc/ssl/apache2 | Zabbix Web インターフェイスの HTTPS を有効にすることができます。 Apache2 SSL 接続用に準備されたssl.crt ファイルとssl.key ファイルの 2 つが格納されている必要があります。 |
Nginx Web サーバーに基づく Zabbix Web インターフェイスr | |
/etc/ssl/nginx | Zabbix Web インターフェイスの HTTPS を有効にすることができます。 Nginx SSL 接続用に準備された ssl.crt とssl.key およびdhparam.pem が格納されている必要があります。 |
Zabbix snmpトラップ | |
/var/lib/zabbix/snmptraps | 受信した SNMP トラップで名前が付けられたsnmptraps.log ログ ファイルが格納されます。 |
/var/lib/zabbix/mibs | 新しい MIB ファイルを追加できます。 サブディレクトリはサポートしていません。すべての MIB を/var/lib/zabbix/mibs に配置する必要があります。 |
詳細については、Docker Hub の Zabbix 公式リポジトリを参照してください。
例 1
この例は、MySQL データベースをサポートする Zabbix サーバー、Nginx Web サーバーに基づく Zabbix Web インターフェイス、および Zabbix Java ゲートウェイを実行する方法を示しています。
1. Zabbix コンポーネント コンテナ専用のネットワークを作成します。
2. 空の MySQL サーバー インスタンスを開始する
# 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. Zabbix Java ゲートウェイ インスタンスの起動
# docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-5.4-latest
4. Zabbix サーバー インスタンスを起動し、作成した MySQL サーバー インスタンスにインスタンスをリンクします。
# 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-5.4-latest
Zabbix サーバー インスタンスは、10051/TCP ポート (Zabbix トラッパー) をホスト マシンに公開します。
5. Zabbix Web インターフェイスを起動し、作成した MySQL サーバーと 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-5.4-latest
Zabbix Web インターフェイス インスタンスは、80/TCP ポート (HTTP) をホスト マシンに公開します。
例 2
この例では、PostgreSQL データベースをサポートする Zabbix サーバー、Nginx Web サーバーに基づく Zabbix Web インターフェイス、および SNMP トラップ機能を実行する方法を示します。
1. Zabbix コンポーネント コンテナ専用のネットワークを作成します。
2. 空の PostgreSQL サーバー インスタンスを起動する
# 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. Zabbix ANMPトラップ インスタンスの開始
# 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-5.4-latest
Zabbix snmptrap インスタンスは、162/UDP ポート (SNMP トラップ) をホスト マシンに公開します。
4. Zabbix サーバー インスタンスを起動し、作成した PostgreSQL サーバー インスタンスとインスタンスをリンクします。
# 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-5.4-latest
Zabbix サーバー インスタンスは、10051/TCP ポート (Zabbix トラッパー) をホスト マシンに公開します。
5. Zabbix Web インターフェイスを起動し、作成した PostgreSQL サーバーと 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-5.4-latest
Zabbix Web インターフェイス インスタンスは、443/TCP ポート (HTTPS) をホスト マシンに公開します。 ディレクトリ /etc/ssl/nginx には、必要な名前の証明書が含まれている必要があります。
例 3
この例では、MySQL データベースをサポートする Zabbix サーバー、Nginx Web サーバーに基づく Zabbix Web インターフェイス、Red Hat 8 でpodman
を使用する Zabbix Java ゲートウェイを実行する方法を示します。
1. zabbix
という名前と公開されたポート (Web インターフェイス、Zabbix サーバー トラッパー) で新しいポッドを作成します。
2. (オプション) zabbix
ポッドの場所で 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. ホストに ./mysql/
ディレクトリを作成し、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. 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. Zabbix Java ゲートウェイ コンテナを起動します。
podman run --name zabbix-java-gateway -t \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-java-gateway-50
5. Zabbix Web インターフェイス コンテナを起動します。
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
Pod zabbix
は zabbix-web-mysql
コンテナの 8080/TCP からホスト マシンに 80/TCP ポート (HTTP) を公開します。
Zabbix は、Docker でマルチコンテナ Zabbix コンポーネントを定義および実行するための構成ファイルも提供します。 これらの構成ファイルは、github.com の Zabbix docker 公式リポジトリ (https://github.com/zabbix/zabbix-docker) で入手できます。 これらの構成ファイルは例として追加され、オーバーロードされています。 たとえば、MySQL および SQLite3 をサポートするプロキシが含まれています。
構成ファイルにはいくつかの異なるバージョンがあります。
ファイル名 | 説明 |
---|---|
docker-compose_v3_alpine_mysql_latest.yaml |
Compose ファイルは、MySQL データベースをサポートする Alpine Linux で Zabbix 5.4 コンポーネントの最新バージョンを実行します。 |
docker-compose_v3_alpine_mysql_local.yaml |
構成ファイルは、Zabbix 5.4 の最新バージョンをローカルにビルドし、MySQL データベースをサポートする Alpine Linux で Zabbix コンポーネントを実行します。 |
docker-compose_v3_alpine_pgsql_latest.yaml |
Compose ファイルは、PostgreSQL データベースをサポートする Alpine Linux で Zabbix 5.4 コンポーネントの最新バージョンを実行します。 |
docker-compose_v3_alpine_pgsql_local.yaml |
構成ファイルは、Zabbix 5.4 の最新バージョンをローカルにビルドし、PostgreSQL データベースをサポートする Alpine Linux で Zabbix コンポーネントを実行します。 |
docker-compose_v3_centos_mysql_latest.yaml |
構成ファイルは、MySQL データベースをサポートする CentOS 8 で Zabbix 5.4 コンポーネントの最新バージョンを実行します。 |
docker-compose_v3_centos_mysql_local.yaml |
構成ファイルは、Zabbix 5.4 の最新バージョンをローカルにビルドし、MySQL データベースをサポートする CentOS 8 で Zabbix コンポーネントを実行します。 |
docker-compose_v3_centos_pgsql_latest.yaml |
構成ファイルは、PostgreSQL データベースをサポートする CentOS 8 で Zabbix 5.4 コンポーネントの最新バージョンを実行します。 |
docker-compose_v3_centos_pgsql_local.yaml |
構成ファイルは、Zabbix 5.4 の最新バージョンをローカルでビルドし、PostgreSQL データベースをサポートする CentOS 8 で Zabbix コンポーネントを実行します。 |
docker-compose_v3_ubuntu_mysql_latest.yaml |
構成ファイルは、MySQL データベースをサポートする Ubuntu 20.04 で Zabbix 5.4 コンポーネントの最新バージョンを実行します。 |
docker-compose_v3_ubuntu_mysql_local.yaml |
構成ファイルは、Zabbix 5.4 の最新バージョンをローカルにビルドし、MySQL データベースをサポートする Ubuntu 20.04 で Zabbix コンポーネントを実行します。 |
docker-compose_v3_ubuntu_pgsql_latest.yaml |
構成ファイルは、PostgreSQL データベースをサポートする Ubuntu 20.04 で最新バージョンの Zabbix 5.4 コンポーネントを実行します。 |
docker-compose_v3_ubuntu_pgsql_local.yaml |
構成ファイルは、Zabbix 5.4 の最新バージョンをローカルにビルドし、PostgreSQL データベースをサポートする Ubuntu 20.04 で Zabbix コンポーネントを実行します。 |
Docker Compose ファイルは、Docker Compose のバージョン 3 をサポートしています。
Docker Composeは、composeファイルを使ってZabbixコンポーネントを実行すると、composeファイルのあるフォルダに
zbx_env
ディレクトリが作成されます。このディレクトリには、上記のVolumesセクションで説明したものと同じ構造の
データベースを格納するためのディレクトリが作成されます。
また、/etc/localtime
と /etc/timezone
ファイル用の読み込み専用ボリュームも用意されます。
github.comのcomposeファイルと同じディレクトリに、composeファイル内の各コンポーネントのデフォルトの環境変数が書かれた
ファイルがあります。これらの環境ファイルは、.env_<コンポーネントの種類>
のような名前になっています。
例 1
このコマンドは、Zabbix コンポーネントごとに最新の Zabbix 5.4 イメージをダウンロードし、デタッチ モードで実行します。
github.com の公式 Zabbix リポジトリから構成ファイルを含む .env_<type of component>
ファイルをダウンロードしてください
例 2
このコマンドは、ベース イメージの Ubuntu 20.04 (focal) をダウンロードし、Zabbix 5.4 コンポーネントをローカルでビルドしてデタッチ モードで実行します。