家の仮想基盤を監視する為なのと、Zabbix での ESXi 関連の知見をためたいと思ったので自宅に Zabbix 7.0 系を Docker で構築しました。
本当は K8s とかにのせてどうのこうのとかやりたかったんですけど、監視はシンプルにしたかったので、特にごちゃごちゃせずに仮想マシンを 1 台立ててその上に Docker でどかーんと立てました。
基本的な構成はこちら。
CPU は 2 コアでメモリも 4GB 。
ハードディスクは一応 128GB にしていますが、足りなければ増量も検討してます。
でも検証用なのでそこまでガチにやる気も無いですし、ローテーションさえなんとかすればいいかなと。

ゲスト OS は AlmaLinux にしました。
最近、サポート系も増えそうなニュースがあったので、知見も増えるのではないかと思ってます。

Zabbixの構築方法(コンテナベース)
前提条件
- インストール環境
DockerおよびDocker ComposeがインストールされたLinuxマシン - 基本コンポーネント
- Zabbix Server: データの収集および監視
- Zabbix Webインターフェース: 管理画面
- Zabbix Agent: 監視対象ホストにインストール
Docker Composeを使った構築
Docker Composeファイル作成
基本構成の docker-compose.yml
ファイルを作成します。
version: '3.5'
services:
zabbix-server:
image: zabbix/zabbix-server-pgsql:alpine-7.0-latest
environment:
- DB_SERVER_HOST=zabbix-postgres
- POSTGRES_USER=zabbix
- POSTGRES_PASSWORD=zabbix_password
- ZBX_ENABLE_SNMP_TRAPS=1
depends_on:
- zabbix-postgres
ports:
- "10051:10051"
zabbix-web:
image: zabbix/zabbix-web-nginx-pgsql:alpine-7.0-latest
environment:
- DB_SERVER_HOST=zabbix-postgres
- POSTGRES_USER=zabbix
- POSTGRES_PASSWORD=zabbix_password
ports:
- "8080:8080"
zabbix-postgres:
image: postgres:13-alpine
environment:
- POSTGRES_USER=zabbix
- POSTGRES_PASSWORD=zabbix_password
- POSTGRES_DB=zabbix
Docker Compose 実行
作成した docker-compose.yml
ファイルのあるディレクトリで以下を実行します。
docker-compose up -d
動作確認
- Webブラウザで
http://<ホストIP>:8080
にアクセス - 初回セットアップウィザードでデータベース設定を入力
- DB Server Host:
zabbix-postgres
- DB User:
zabbix
- DB Password:
zabbix_password
- DB Server Host:
- 管理画面(デフォルトユーザー:admin、パスワード:zabbix)にログイン
Docker で立てる場合の注意点
Docker で立てるにはちゃんとインストールされていることが前提なので確認が必要です。
Ubuntu だと OS インストール時に Docker をインストールしてくれることもありますけど、どうなんだろう。
[nesk@localhost ~]$ docker -v
Docker version 27.5.1, build 9f9e405
あとこれは Docker の場合の注意点なんですけど本来変数とかって
cat /etc/zabbix/zabbix_agentd.conf
とかで編集すると思うのですが、それだと Docker を再起動する度にもどってしまうっぽい。
なので Docker 起動時に読み込む変数側を編集してあげないといけないです。
# ZBX_STARTALERTERS=3 # Available since 3.4.0
# ZBX_STARTLLDPROCESSORS=2
ZBX_JAVAGATEWAY=zabbix-java-gateway
# ZBX_JAVAGATEWAYPORT=10052
# ZBX_STARTJAVAPOLLERS=5 # #を削除する
# ZBX_STARTVMWARECOLLECTORS=5 # #を削除する
# ZBX_VMWAREFREQUENCY=60 # #を削除する
# ZBX_VMWAREPERFFREQUENCY=60 # #を削除する
# ZBX_VMWARECACHESIZE=8M # #を削除する
# ZBX_VMWARETIMEOUT=10 # #を削除する
# ZBX_ENABLE_SNMP_TRAPS=true # #を削除する
# ZBX_SOURCEIP=
# ZBX_SMSDEVICES=
# ZBX_HOUSEKEEPINGFREQUENCY=1
# ZBX_MAXHOUSEKEEPERDELETE=5000
# ZBX_PROBLEMHOUSEKEEPINGFREQUENCY=60
# ZBX_CACHESIZE=8M
"zabbix-docker/env_vars/.env_srv"
今回、vSphere や、仮想マシンを監視したいと考えているので、上記の項目に関しては入力しないといけない。(あまりこの項目について書かれている情報がないのはなんで・・・・?)

自分は自宅の温度とかも計測に使っていたりいろいろやってます。
アラート関連をもう少しきれいにしたいところですね。