LoginSignup
6
7

More than 3 years have passed since last update.

DockerでのZabbix 5.0の環境構築メモ

Posted at

前提

  • ubuntu 20.04 LTSで作業(20.04固有の作業はないはず)
  • docker-ce、docker-composeはインストール済
  • 公式コンテナ利用
  • IPMIを使えるようにする
  • 起動環境自体をプライベートリポジトリ等で管理するために、workディレクトリ下に環境を作成する。

目標

  • zabbixをdocker-composeで起動して、自分自身の死活監視まで正常動作させる。
  • ログ上の主要なエラーは潰しておく。

手順

gitから環境を取得してdocker-compose.yaml等を作成する。

gitから公式リポジトリを取得する

git clone  https://github.com/zabbix/zabbix-docker.git 

workディレクトリを作成してコピーする。
今回はalpine、mysql版を使用

mkdir zabbix
cp -p zabbix-docker/docker-compose_v3_alpine_mysql_latest.yaml zabbix/docker-compose.yaml
cp -p zabbix-docker/.[eM]* zabbix/.
cd zabbix

※必要に応じて認証情報等は書き換える。

agentの名前解決エラー対策

cannot send list of active checks to "172.16.239.6": host [91f5d0ca0498] not found

agentの名前解決ができないのが原因らしいので下記を設定する。
- zabbix-agentのhostname指定
- zabbix起動後のserver設定でagentのホスト名を設定(こちらは後で行う)

docker-compose.yaml
 zabbix-agent:
  image: zabbix/zabbix-agent:alpine-5.0-latest
+  hostname: 'zabbix-agent'  # 追加
  ports:
   - "10050:10050"

proxyの名前解決エラー対策

cannot parse proxy data from active proxy at "172.16.238.6": proxy "zabbix-proxy-sqlite3" not found
cannot parse proxy data from active proxy at "172.16.238.5": proxy "zabbix-proxy-mysql" not found

proxyの名前解決ができないのが原因なので、下記を設定する。

  • zabbix-proxy-mysqlとzabbix-proxy-sqlite3のIPアドレスを固定する(動的割当だと管理画面で設定できないので)
  • 念のためhostnameも設定(たぶん不要)
  • zabbix起動後のプロキシ設定で上記2つを設定(こちらは後で行う)
docker-compose.yaml
(略)

 zabbix-proxy-sqlite3:
  image: zabbix/zabbix-proxy-sqlite3:alpine-5.0-latest
+  hostname: 'zabbix-proxy-sqlite3' # 追加
  ports:
   - "10061:10051"

(略)

   zbx_net_frontend:
+    ipv4_address: 172.16.238.200 #追加

(略)

zabbix-proxy-mysql:
  image: zabbix/zabbix-proxy-mysql:alpine-5.0-latest
+  hostname: 'zabbix-proxy-mysql' # 追加
  ports:
   - "10071:10051"

(略)

   zbx_net_frontend:
+    ipv4_address: 172.16.238.201 #追加

(略)

zbx_net_frontendで指定されたIPアドレス範囲で、バッティングしないよう後半のアドレスを指定する。
(この例では200、201を設定している)

IPMIの利用設定を行う

公式のzabbix-serverコンテナでは、docker_entrypoint.shでzabbix_server.confを書き換えてからzabbix_serverを起動している。
そのため、zabbix_server.confの修正は.env_srvを書き換えることで反映させるようになっている。

.env_srv
# ZBX_DBTLSCIPHER13= # Available since 5.0.0
# ZBX_DEBUGLEVEL=3
# ZBX_STARTPOLLERS=5
- # ZBX_IPMIPOLLERS=0
+ ZBX_IPMIPOLLERS=5
# ZBX_STARTPREPROCESSORS=3 # Available since 3.4.0

IPMI pollerの多重度はとりあえず5にしているが、いくつが適切かは今のところ理解してない…。

起動する

$ docker-compose up -d
WARNING: Some services (zabbix-agent, zabbix-java-gateway, zabbix-proxy-mysql, zabbix-proxy-sqlite3, zabbix-server, zabbix-snmptraps, zabbix-web-apache-mysql, zabbix-web-nginx-mysql) use the 'deploy' key, which will be ignored. Compose does not support 'deploy' configuration - use `docker stack deploy` to deploy to a swarm.
WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.

Creating network "zabbix_zbx_net_backend" with driver "bridge"
Creating network "zabbix_zbx_net_frontend" with driver "bridge"
Creating network "zabbix_default" with the default driver
Creating zabbix_mysql-server_1        ... done
Creating zabbix_zabbix-java-gateway_1 ... done
Creating zabbix_zabbix-snmptraps_1    ... done
Creating zabbix_db_data_mysql_1       ... done
Creating zabbix_zabbix-server_1       ... done
Creating zabbix_zabbix-proxy-mysql_1      ... done
Creating zabbix_zabbix-agent_1            ... done
Creating zabbix_zabbix-web-nginx-mysql_1  ... done
Creating zabbix_zabbix-proxy-sqlite3_1    ... done
Creating zabbix_zabbix-web-apache-mysql_1 ... done

今回は単一サーバで動けばいいのでswarm関連のWARNINGは全部無視する。
非swarm環境で運用する場合は、各コンテナにrestart: alwaysを設定する。

ブラウザでサーバにアクセスしてzabbix画面を開く

自身の死活監視を有効化

こちらを参考に自身の死活監視対象サーバのDNS名にzabbix-agentを設定する。
https://qiita.com/zembutsu/items/d98099bf68399c56c236#zabbix-server-%E3%81%AE-%E5%88%A9%E7%94%A8%E4%B8%8D%E5%8F%AF-%E3%82%92%E8%A7%A3%E6%B6%88%E3%81%99%E3%82%8B

プロキシのエラー対策の続き

  • 管理-> プロキシでzabbix-prosy-mysqlを追加する。
    プロキシのIPアドレスはdocker-compose.yamlに記述したものを設定する。
    zabbix-proxy-mysql-proxy-setting.png

  • 同様にzabbix-prosy-sqlite3を設定する。

ipmitoolをコンテナにインストールする

問題が起きたときの切り分けにコンテナ自体にipmitoolを入れておく。

mkdir zabbix-server
cd zabbix-server

Dockerfileを作成

Dockerfile
FROM zabbix/zabbix-server-mysql:alpine-5.0-latest

USER root
RUN apk add --no-cache ipmitool openipmi openipmi-libs
USER 1997

ユーザーをrootにしてipmi関連パッケージを追加するだけ。

docker-compose.yamlを該当イメージを利用するように修正

docker-compose.yaml
version: '3.5'
services:
 zabbix-server:
-   image: zabbix/zabbix-server-mysql:alpine-5.0-latest
+   image: zabbix-server:latest
+   build:
+    context: zabbix-server/.
  ports:
   - "10051:10051"

ビルドする

$ docker-compose build
WARNING: Some services (zabbix-agent, zabbix-java-gateway, zabbix-proxy-mysql, zabbix-proxy-sqlite3, zabbix-server, zabbix-snmptraps, zabbix-web-apache-mysql, zabbix-web-nginx-mysql) use the 'deploy' key, which will be ignored. Compose does not support 'deploy' configuration - use `docker stack deploy` to deploy to a swarm.
zabbix-java-gateway uses an image, skipping
zabbix-snmptraps uses an image, skipping
mysql-server uses an image, skipping
zabbix-agent uses an image, skipping
zabbix-web-nginx-mysql uses an image, skipping
zabbix-web-apache-mysql uses an image, skipping
zabbix-proxy-mysql uses an image, skipping
zabbix-proxy-sqlite3 uses an image, skipping
db_data_mysql uses an image, skipping
Building zabbix-server
Step 1/4 : FROM zabbix/zabbix-server-mysql:alpine-5.0-latest
 ---> 2cd9aff9da96
Step 2/4 : USER root
 ---> Using cache
 ---> 1dc1875d8487
Step 3/4 : RUN apk add --no-cache ipmitool openipmi openipmi-libs
 ---> Using cache
 ---> 5ca8cb96d08e
Step 4/4 : USER 1997
 ---> Using cache
 ---> 050ee613cdff

Successfully built 050ee613cdff
Successfully tagged zabbix-server:latest

docker-compose up -dでイメージの修正を反映させる。

ipmitool実行

ipmitoolを実行するときはdocker execで行う

$docker exec -it zabbix_zabbix-server_1 ipmitool -H XXX.XXX.XXX.XXX -I lanplus -U YYYYYYYY -P ZZZZZZZZ lan print
Set in Progress         : Set Complete
Auth Type Support       : MD5 
Auth Type Enable        : Callback : MD5 
                        : User     : MD5 
                        : Operator : MD5 
                        : Admin    : MD5 
                        : OEM      : MD5 
(略)

参考

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7