サーバー監視、ドメイン監視を行いたい。
Zabbixの利用経験がなかったため、学習も兼ねて実装を行う。
障害時にSlackの指定チャンネルに通知が行くまでをゴールとする。
環境用意
名称 | バージョン |
---|---|
Ubuntu | 20.04.01 |
Zabbix | 5.0.3 |
Git | 2.28.0 |
Docker | 19.03.13 |
docker-compose | 1.27.3, build 4092ae5d |
docker-py | 4.3.1 |
CPython | 3.7.7 |
OpenSSL | 1.1.0l 10 Sep 2019 |
手順
インストール手順です。
Zabbixをclone
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
今回はAlpine + PostgreSQL の構成でいきます。
Dockerを利用する際にはAlpineで十分のため、あまりサイズが大きいイメージは不必要と考えています。
MySQLではなくPostgreSQLを選ぶ理由は今後、設定が肥大化した際にMySQLではチューニングだけでは大量クエリを捌くのに向かないと判断したためです。後からMySQL→PostgreSQLに変えることも良いとは思いますが、コストを考え最初からPostgreSQLでいくことにしました。
選定には
を参考にしました。
YAMLをコピー
$ cp docker-compose_v3_alpine_pgsql_latest.yaml docker-compose.yml
DBのUser、Passwordの修正
#下記ファイルを必要に応じて修正
.POSTGRES_USER
.POSTGRES_PASSWORD
起動
$ sudo docker-compose up -d
$ sudo docker-compose ps
WARNING: The following deploy sub-keys are not supported and have been ignored: resources.reservations.cpus
WARNING: The following deploy sub-keys are not supported and have been ignored: resources.reservations.cpus
WARNING: The following deploy sub-keys are not supported and have been ignored: resources.reservations.cpus
WARNING: The following deploy sub-keys are not supported and have been ignored: resources.reservations.cpus
WARNING: The following deploy sub-keys are not supported and have been ignored: resources.reservations.cpus
WARNING: The following deploy sub-keys are not supported and have been ignored: resources.reservations.cpus
WARNING: The following deploy sub-keys are not supported and have been ignored: resources.reservations.cpus
WARNING: The following deploy sub-keys are not supported and have been ignored: resources.reservations.cpus
Name Command State Ports
----------------------------------------------------------------------------------------------------------------------------------------
zabbix-docker_db_data_mysql_1 sh Exit 0
zabbix-docker_db_data_pgsql_1 sh Exit 0
zabbix-docker_mysql-server_1 docker-entrypoint.sh mysql ... Up
zabbix-docker_postgres-server_1 docker-entrypoint.sh postgres Up
zabbix-docker_zabbix-agent_1 /sbin/tini -- /usr/bin/doc ... Up
zabbix-docker_zabbix-java-gateway_1 docker-entrypoint.sh /usr/ ... Up
zabbix-docker_zabbix-proxy-mysql_1 /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10071->10051/tcp
zabbix-docker_zabbix-proxy-sqlite3_1 /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10061->10051/tcp
zabbix-docker_zabbix-server_1 /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10051->10051/tcp
zabbix-docker_zabbix-snmptraps_1 /usr/bin/supervisord -c /e ... Up 0.0.0.0:162->1162/udp
zabbix-docker_zabbix-web-apache-pgsql_1 docker-entrypoint.sh /usr/ ... Up (healthy) 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp
zabbix-docker_zabbix-web-nginx-pgsql_1 docker-entrypoint.sh Up (healthy) 0.0.0.0:8081->8080/tcp, 0.0.0.0:8443->8443/tcp
Warningが出たので念の為調べます。
WARNING: The following deploy sub-keys are not supported and have been ignored: resources.reservations.cpus (次のdeployサブキーはサポートされていないため無視されました)
deploy:
resources:
reservations:
cpus: '0.5'
これらのオプションは、スウォームモードサービスのスケジュールオプションです
(つまり、実際にはリソースを予約せず、ノードでコンテナをスケジュールするときにswarmにそれらを考慮させるだけです)。Docker Composeはスウォームモード(ローカルコンテナーをデプロイする)では機能しないため、
これらの制限を考慮に入れるオーケストレーターはありません。
reservationを使わなければwarningは消えそうです。
無視されているため、このエラーごと無視して問題なさそうなのですが
確認するたびに毎度Warningが出るのは心理的にも良くないため、該当行をコメントアウトしました。
#reservations:
#cpus: '0.5'
#memory: 512M
それでは再度実行します。
$ sudo docker-compose up -d --build
$ sudo docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------------
zabbix-docker_db_data_mysql_1 sh Exit 0
zabbix-docker_db_data_pgsql_1 sh Exit 0
zabbix-docker_mysql-server_1 docker-entrypoint.sh mysql ... Up
zabbix-docker_postgres-server_1 docker-entrypoint.sh postgres Up
zabbix-docker_zabbix-agent_1 /sbin/tini -- /usr/bin/doc ... Up
zabbix-docker_zabbix-java-gateway_1 docker-entrypoint.sh /usr/ ... Up
zabbix-docker_zabbix-proxy-mysql_1 /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10071->10051/tcp
zabbix-docker_zabbix-proxy-sqlite3_1 /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10061->10051/tcp
zabbix-docker_zabbix-server_1 /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10051->10051/tcp
zabbix-docker_zabbix-snmptraps_1 /usr/bin/supervisord -c /e ... Up 0.0.0.0:162->1162/udp
zabbix-docker_zabbix-web-apache-pgsql_1 docker-entrypoint.sh /usr/ ... Up (health: starting) 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp
zabbix-docker_zabbix-web-nginx-pgsql_1 docker-entrypoint.sh Up (health: starting) 0.0.0.0:8081->8080/tcp, 0.0.0.0:8443->8443/tcp
無事、WARNINGも消えたため、次に本題に戻りたいと思います。
ホスト名について
コンテナがある本サーバーからはhttp://localhost/
で確認ができます。
同一ネットワーク帯からはhttp://192.168.x.x/
で接続が確認できました。
プロキシの設定
logsを確認するとエラーを確認。
zabbix-server_1 | 211:20200923:130201.825 cannot parse proxy data from active proxy at "172.16.238.4": proxy "zabbix-proxy-sqlite3" not found
zabbix-server_1 | 211:20200923:130202.452 cannot parse proxy data from active proxy at "172.16.238.6": proxy "zabbix-proxy-mysql" not found
下記のとおり対処。
Zabbix4.2 を docker で立ち上げてみた
cannot send list of active checks to "xxx": host [yyy] not found
エラーが出続ける。下記の通り対処。
【zabbix】ログに「-cannot-send-list-of-active-checks-to-127-0-0-1」が出続ける
ログイン
初期ID、PWは以下の通りです。(大文字注意)
ID | PW |
---|---|
Admin | zabbix |
こちらはログイン後の初期画面です。
日本語化
左サイドバーの「User setting」→「Language」→「Japanese(ja_JP)」に変更します。
初期パスワードでは脆弱のため、パスワードも同時に変えてしまいましょう。
「Zabbix Server利用不可」を解消する
下記を参考に、修正しました。
Zabbix Server の 利用不可 を解消する
ホスト・テンプレート・メール設定まわり
ここらへんはぐぐったら色々載ってるかと思います。
私は下記を参考にしました。
※サーバー構築よりこっちのほうが理解が難しかった・・・。
タイムゾーン
Alpine版Zabbixは日本時間ではなかったため修正が必要。
どこを変更すればいいのか詰まってましたが「.env_web」を修正しました。
グラフの文字化けの修正
ここを参考。
ARM系CPUのマシンにDockerでZabbixサーバを構築する - 日本語フォントのダウンロード
sudo apt-get install -y fonts-ipafont
こんな感じで該当フォントを直接マウントしました。
zabbix-web-nginx-pgsql:
image: zabbix/zabbix-web-nginx-pgsql:alpine-5.0-latest
ports:
- "80:8080"
- "443:8443"
links:
- postgres-server:postgres-server
- zabbix-server:zabbix-server
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro
- ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro
- /usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf:ro
これで再度dockerを立ち上げると日本語になっていることが確認できます。
これで日本語フォント周りは完了。
Slack通知の設定
下記を参考
Zabbix 5.0でslack通知を設定する
結果
とりあえず、やりたかった監視体制を構築することが出来た。
感想
- 監視サービス、初見では人に聞かないと使い方無理(エージェントis何みたいな)
- Zabbix4の経験者に色々聞いて使い方を理解できた
- 公式のドキュメント、普通に読みづらい
- 構築まではスムーズに行っていたが、実際の運用方法までを考えたやり方に苦戦した。
- zabbix-agent、ホスト、テンプレート、アイテム、WEB、トリガー、グラフなど、最低限の機能を知らないと使えなさそう。
- 現場の運用者にはある程度使い方を指南、またはドキュメントを作らないと触れなさそう。
- そもそもagentが使えないレン鯖運用が多いところだと管理が面倒
- Zabbix検証用に動いているサーバーと障害が出ているサーバーを用意しておくと楽
- 参考の多さからわかるように、結構調べないと進まないので初心者は注意
参考
DockerでのZabbix 5.0の環境構築メモ
Zabbix 5.0でslack通知を設定する
Ubuntu で git のバージョンを最新版にする
Zabbixのデータベース ベンチマークレポート PostgreSQL vs MySQL
大規模監視サーバでのPostgreSQL
超軽量なAlpine Linuxについて調べた
Zabbix 5.0 を Docker Compose で起動する手順
ubuntuに最新版のdockerをインストールする
Ubuntu20.04に最新のdocker composeをインストールする
Docker Compose Limitsを実行する際の生産性のヒントとベストプラクティス - Docker Composeのための実践的なエクササイズ その4
【備忘録】zabbixでDockerのリソース監視方法
Zabbix 5.0 : 監視ホストの設定
Zabbixを初めて学んだときにハマったこと(小ネタ・随時更新予定)
Zabbix 5.0 LTS Docker版 起動からログインまで
ARM系CPUのマシンにDockerでZabbixサーバを構築する
ZabbixでWeb監視を行う(前編)
Zabbix5.0をdocker-composeで速攻起動する