6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DockerでZabbix 5.0インストール→障害時にSlack通知を設定するまで

Last updated at Posted at 2020-09-25

Ubuntu-20.04.01 Zabbix-5.0.3 Git-2.28.0 Docker-19.03.13 CPython-3.7.7 OpenSSL-1.1.0

サーバー監視、ドメイン監視を行いたい。
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はスウォームモード(ローカルコンテナーをデプロイする)では機能しないため、
これらの制限を考慮に入れるオーケストレーターはありません。

参考:Compatibility mode #5684

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」が出続ける

ログイン

zabbix5.0ログイン画面

初期ID、PWは以下の通りです。(大文字注意)

ID PW
Admin zabbix
zabbix5.0ログイン後、初期画面

こちらはログイン後の初期画面です。

日本語化

左サイドバーの「User setting」→「Language」→「Japanese(ja_JP)」に変更します。
初期パスワードでは脆弱のため、パスワードも同時に変えてしまいましょう。

「Zabbix Server利用不可」を解消する

下記を参考に、修正しました。
Zabbix Server の 利用不可 を解消する

Zabbix Server の 利用不可 を解消する ※「設定」→「ホスト」→「インターフェース」より。

ホスト・テンプレート・メール設定まわり

ここらへんはぐぐったら色々載ってるかと思います。
私は下記を参考にしました。

※サーバー構築よりこっちのほうが理解が難しかった・・・。

タイムゾーン

Alpine版Zabbixは日本時間ではなかったため修正が必要。

どこを変更すればいいのか詰まってましたが「.env_web」を修正しました。

グラフの文字化けの修正

ここを参考。

ARM系CPUのマシンにDockerでZabbixサーバを構築する - 日本語フォントのダウンロード

sudo apt-get install -y fonts-ipafont

こんな感じで該当フォントを直接マウントしました。

docker-compose.yml
 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を立ち上げると日本語になっていることが確認できます。

日本語表示を確認したZabbix5.0のグラフの一部

これで日本語フォント周りは完了。

Slack通知の設定

下記を参考
Zabbix 5.0でslack通知を設定する

結果

とりあえず、やりたかった監視体制を構築することが出来た。

zabbixから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で速攻起動する

6
6
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
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?