【Zabbix】docker-composeで最新バージョンの構築手順(CentOS8環境)

NW機器を監視するツール「Zabbix」をDockerで構築したのでまとめます。

構築は「docker-compose」を利用し、5分程度で構築可能です。
※CentOS8環境なのでfirewall設定はしっかりとしておくこと。

Dockerイメージは以下のZabbix公式のイメージを使用しています。
https://hub.docker.com/u/zabbix/

「docker-compose」でZabbix最新バージョン構築(CentOS8)

CentOS8最新版でDockerをインストールします。
インストール手順は以下のページを参考にしてください。

※CentOS8のバージョンは2020年12月時点で以下が最新となります。

[root@zabbix ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

「docker-compose」インストール

上記でDockerをインストール後、別途「docker-compose」をインストールします。

[root@zabbix ~]# curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

対象のディレクトリに権限を付与とリンクの紐づけをします。

[root@zabbix ~]# chmod +x /usr/local/bin/docker-compose
[root@zabbix ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

「docker-compose」が問題なく動作している場合は以下でバージョンを確認します。

[root@zabbix ~]# docker-compose --version
docker-compose version 1.27.4, build 40524192

docker-composeは上記以外にもPythonのpipインストールでも取得できます。
以下のページを参考にしてください。

gitインストール

今回、ZabbixのDockerイメージファイルをgitからクローンするため「git」コマンドが必要となります。
以下コマンドで「git」をインストールします。

[root@zabbix ~]# yum -y install git

Zabbixインストール(docker-compose)

gitをインストールした後はZabbixのインストールを実施します。

事前にZabbixのファイルの保存先フォルダを作成し、移動します。

[root@zabbix ~]# mkdir docker
[root@zabbix ~]# cd docker/
[root@zabbix docker]#

次に、gitコマンドでZabbixのDockerファイルをコピーします。

[root@zabbix docker]# git clone https://github.com/zabbix/zabbix-docker.git
[root@zabbix docker]# ll
合計 4
drwxr-xr-x. 17 root root 4096 12月  1 19:54 zabbix-docker

「zabbix-docker」フォルダがコピーされているので、移動します。

[root@zabbix docker]# cd zabbix-docker/
[root@zabbix zabbix-docker]#

フォルダの中身は以下のようになっています。

[root@zabbix zabbix-docker]# ll
合計 200
-rw-r--r--. 1 root root 18046 12月  1 19:54 LICENSE
-rw-r--r--. 1 root root  3815 12月  1 19:54 README.md
drwxr-xr-x. 5 root root    48 12月  1 19:54 agent
drwxr-xr-x. 3 root root    20 12月  1 19:54 agent2
-rwxr-xr-x. 1 root root  1591 12月  1 19:54 build.sh
-rw-r--r--. 1 root root 11460 12月  1 19:54 docker-compose_v3_alpine_mysql_latest.yaml
-rw-r--r--. 1 root root 11972 12月  1 19:54 docker-compose_v3_alpine_mysql_local.yaml
-rw-r--r--. 1 root root 12179 12月  1 19:54 docker-compose_v3_alpine_pgsql_latest.yaml
-rw-r--r--. 1 root root 12688 12月  1 19:54 docker-compose_v3_alpine_pgsql_local.yaml
-rw-r--r--. 1 root root 11462 12月  1 19:54 docker-compose_v3_centos_mysql_latest.yaml
-rw-r--r--. 1 root root 11996 12月  1 19:54 docker-compose_v3_centos_mysql_local.yaml
-rw-r--r--. 1 root root 12179 12月  1 19:54 docker-compose_v3_centos_pgsql_latest.yaml
-rw-r--r--. 1 root root 12712 12月  1 19:54 docker-compose_v3_centos_pgsql_local.yaml
-rw-r--r--. 1 root root 11244 12月  1 19:54 docker-compose_v3_ubuntu_mysql_latest.yaml
-rw-r--r--. 1 root root 11770 12月  1 19:54 docker-compose_v3_ubuntu_mysql_local.yaml
-rw-r--r--. 1 root root 11960 12月  1 19:54 docker-compose_v3_ubuntu_pgsql_latest.yaml
-rw-r--r--. 1 root root 12485 12月  1 19:54 docker-compose_v3_ubuntu_pgsql_local.yaml
-rwxr-xr-x. 1 root root  1220 12月  1 19:54 generate-stackbrew-library.sh
drwxr-xr-x. 5 root root    48 12月  1 19:54 java-gateway
-rw-r--r--. 1 root root 12170 12月  1 19:54 kubernetes.yaml
drwxr-xr-x. 5 root root    48 12月  1 19:54 proxy-mysql
drwxr-xr-x. 5 root root    48 12月  1 19:54 proxy-sqlite3
drwxr-xr-x. 5 root root    48 12月  1 19:54 server-mysql
drwxr-xr-x. 5 root root    48 12月  1 19:54 server-pgsql
drwxr-xr-x. 5 root root    48 12月  1 19:54 snmptraps
drwxr-xr-x. 5 root root    48 12月  1 19:54 web-apache-mysql
drwxr-xr-x. 5 root root    48 12月  1 19:54 web-apache-pgsql
drwxr-xr-x. 5 root root    48 12月  1 19:54 web-nginx-mysql
drwxr-xr-x. 5 root root    48 12月  1 19:54 web-nginx-pgsql
drwxr-xr-x. 3 root root    18 12月  1 19:54 zabbix-appliance

CentOS-PostgreSQLのyamlファイルをコピーする

上記で「yaml」ファイルのうち、CentOSかつデータベースがPostgreSQLである以下のファイルを「docker-compose.yaml」へコピーします。

docker-compose_v3_centos_pgsql_latest.yaml

コピーコマンドは以下となります。

[root@zabbix zabbix-docker]# cp -p docker-compose_v3_centos_pgsql_latest.yaml docker-compose.yaml

ちなみにMySQLでインストールした際は、データベースエラーが発生し、Zabbixがうまく起動しなかったのでお勧めしません。

[root@zabbix zabbix-docker]# cp docker-compose_v3_centos_mysql_latest.yaml docker-compose.yaml

「Zabbix」Dockerイメージダウンロード

docker-composeへのコピーが完了したら、Dockerイメージをダウンロードします。

[root@zabbix zabbix-docker]# docker-compose pull

以下のようにイメージがダウンロードされます。

[root@zabbix zabbix-docker]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
zabbix/zabbix-web-nginx-pgsql    centos-5.2-latest   03944f503723        33 hours ago        384MB
zabbix/zabbix-web-apache-pgsql   centos-5.2-latest   702fd55967a3        34 hours ago        386MB
zabbix/zabbix-proxy-mysql        centos-5.2-latest   3f231c250065        34 hours ago        343MB
zabbix/zabbix-server-pgsql       centos-5.2-latest   998a185d742b        34 hours ago        276MB
zabbix/zabbix-proxy-sqlite3      centos-5.2-latest   0060c3333c16        34 hours ago        269MB
zabbix/zabbix-agent              centos-5.2-latest   ac2f0444a721        34 hours ago        258MB
zabbix/zabbix-java-gateway       centos-5.2-latest   ed90e38a790c        34 hours ago        402MB
zabbix/zabbix-snmptraps          centos-5.2-latest   b0ce63d104ba        34 hours ago        303MB
busybox                          latest              dc3bacd8b5ea        8 days ago          1.23MB
mysql                            8.0                 dd7265748b5d        11 days ago         545MB
postgres                         latest              f51c55ac75ed        13 days ago         314MB

Zabbix起動前に「Firewall」で必要なポート開放とNAPTの許可を実施

上記イメージのダウンロードまで行くとあとはZabbixを起動するだけですが、CentOS8のDocker環境ではFirewallで設定しないとコンテナ間での通信ができずエラーとなってしまします。
そのため以下にてNAPTの許可を実施します。

[root@zabbix zabbix-docker]# firewall-cmd --add-masquerade --permanent
[root@zabbix zabbix-docker]# firewall-cmd --reload

Zabbixへのアクセスはhttpとなるので以下でサービスを開放します。

[root@zabbix zabbix-docker]# firewall-cmd --zone=public --add-service=http
[root@zabbix zabbix-docker]# firewall-cmd --zone=public --add-service=http --permanent
[root@zabbix zabbix-docker]# firewall-cmd --reload

また、Zabbixで使用するポートの開放もしておきます。

[root@zabbix zabbix-docker]# firewall-cmd --zone=public --add-port=10071/tcp --permanent
[root@zabbix zabbix-docker]# firewall-cmd --zone=public --add-port=10061/tcp --permanent
[root@zabbix zabbix-docker]# firewall-cmd --zone=public --add-port=10051/tcp --permanent
[root@zabbix zabbix-docker]# firewall-cmd --zone=public --add-port=10050/tcp --permanent
[root@zabbix zabbix-docker]# firewall-cmd --zone=public --add-port=8443/tcp --permanent
[root@zabbix zabbix-docker]# firewall-cmd --zone=public --add-port=162/udp --permanent
[root@zabbix zabbix-docker]# firewall-cmd --reload

最終的なFirewallの設定は以下となっています。

[root@zabbix zabbix-docker]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client http ssh
  ports: 10071/tcp 10061/tcp 8443/tcp 162/udp 10051/tcp 10050/tcp
  protocols:
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

「Zabbix」をdocker-composeで起動

上記でFirewallの許可設定を実施した後は、「Zabbix」を起動します。

[root@zabbix zabbix-docker]# docker-compose up -d

起動に成功すると、http://<IPアドレスorホスト名>でアクセスします。
アクセスすると以下の様にログイン画面が表示されます。

ログインパスは以下となります。

  • Username: Admin
  • Password: zabbix

ログイン後は以下の様にアクセスできると成功です。

docker-composeを使用したZabbixの構築手順は以上となります。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!