【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の構築手順は以上となります。

コメントを残す

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

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

ABOUT US

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