ESXi 監視の Docker 版 Zabbix 7.0 構築

Tech

家の仮想基盤を監視する為なのと、Zabbix での ESXi 関連の知見をためたいと思ったので自宅に Zabbix 7.0 系を Docker で構築しました。
本当は K8s とかにのせてどうのこうのとかやりたかったんですけど、監視はシンプルにしたかったので、特にごちゃごちゃせずに仮想マシンを 1 台立ててその上に Docker でどかーんと立てました。

基本的な構成はこちら。

CPU は 2 コアでメモリも 4GB 。

ハードディスクは一応 128GB にしていますが、足りなければ増量も検討してます。

でも検証用なのでそこまでガチにやる気も無いですし、ローテーションさえなんとかすればいいかなと。

ゲスト OS は AlmaLinux にしました。

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

エフサステクノロジーズとサイバートラスト、AlmaLinux を利用したシステムの長期運用の実現に向け協業を開始
エフサステクノロジーズ株式会社とサイバートラストは、日本国内企業におけるLinux OSを利用したシステムのセキュアで安定した長期運用を実現するために、協業することを発表しました。

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

動作確認

  1. Webブラウザで http://<ホストIP>:8080 にアクセス
  2. 初回セットアップウィザードでデータベース設定を入力
    • DB Server Host: zabbix-postgres
    • DB User: zabbix
    • DB Password: zabbix_password
  3. 管理画面(デフォルトユーザー: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 や、仮想マシンを監視したいと考えているので、上記の項目に関しては入力しないといけない。(あまりこの項目について書かれている情報がないのはなんで・・・・?)

自分は自宅の温度とかも計測に使っていたりいろいろやってます。

アラート関連をもう少しきれいにしたいところですね。

タイトルとURLをコピーしました