docker-compose習作① Zabbix-Serverの外部チェックアイテムで取得
docker-composeの習作ができたので、
作成の仕方を公開します。
Dockerサーバ環境は以下の通り
OS:CentOS Linux release 7.6.1810 (Core)
Docker:19.03.1
docker-compose:
docker-compose version 1.23.2, build 1110ad01
docker-py version: 3.6.0
CPython version: 3.6.7
目標としては、Zabbixサーバ(Ver.4.2.5)をマルチコンテナでデプロイして、
KukuluLIVEの視聴者数をZabbixで監視できるようにするとこまでとしています。
kukuLIVEはAPI開発をしているので、それを利用させてもらいます。
APIに関する記事はこちら
Dockerfileでイメージを作成
FROM zabbix/zabbix-server-mysql:centos-4.2.5
RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo | tee /etc/yum.repos.d/microsoft.repo \
&& yum install -y powershell
COPY kukulu_viewers.ps1 /usr/lib/zabbix/externalscripts/
zabbix-server-mysqlにPowerShellをインストールし、
kukulu_viewers.ps1
をコンテナ側の/usr/lib/zabbix/externalscripts/
へ
コピーしています。kukulu_viewers.ps1
は以下の通りの構文で、
KukuluLIVEの視聴者数をREST-APIで取得するようにしています。
#!/usr/bin/pwsh
### 現在のKukuluLIVEの総視聴者数を確認するツール
# 総視聴者数取得関数
function kukulu_viewers() {
$KUKULU = Invoke-RestMethod -Uri https://live.erinn.biz/api/?category=live
(($KUKULU).live.viewers | Measure-Object -Sum).Sum
}
kukulu_viewers
資材が揃ったら、docker build
でイメージを作成します。
# mkdir /root/zabbix
# pwd
/root/zabbix
# ls
Dockerfile kukulu_viewers.ps1 docker-compose.yml
# docker build -f Dockerfile -t zabbix-server-mysql:kukulu-cs-4.2.5 .
Sending build context to Docker daemon 6.656kB
Step 1/3 : FROM zabbix/zabbix-server-mysql:centos-4.2.5
centos-4.2.5: Pulling from zabbix/zabbix-server-mysql
8ba884070f61: Pull complete
eb1e527c78ca: Pull complete
(中略)
Successfully built 7dbeee2be493
Successfully tagged zabbix-server-mysql:kukulu-cs-4.2.5
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zabbix-server-mysql kukulu-cs-4.2.5 7dbeee2be493 About a minute ago 630MB
zabbix/zabbix-server-mysql centos-4.2.5 80cd980c51d9 2 weeks ago 334MB
docker-compose.ymlでマルチコンテナをデプロイ
docker-compose.ymlでZabbix-Server、MySQL、Apache、Zabbix-Agentの
4つのコンテナをデプロイしていきます。
version: "3"
services:
zabbix_db:
image: mysql:5.7.24
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=zabbix
zabbix_server:
image: zabbix-server-mysql:kukulu-cs-4.2.5
environment:
- DB_SERVER_HOST=zabbix_db
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=zabbix
ports:
- "10051:10051"
links:
- zabbix_db
zabbix_web:
image: zabbix/zabbix-web-apache-mysql:centos-4.2.5
environment:
- ZBX_SERVER_HOST=zabbix_server
- DB_SERVER_HOST=zabbix_db
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- MYSQL_ROOT_PASSWORD=zabbix
- PHP_TZ=Asia/Tokyo
ports:
- 8080:80
links:
- zabbix_server
- zabbix_db
zabbix_agent:
image: zabbix/zabbix-agent:centos-4.2.5
privileged: true
environment:
- ZBX_SERVER_HOST=zabbix_server
expose:
- "10050"
links:
- zabbix_server
docker-compose
でデプロイします。
# pwd
/root/zabbix
# docker-compose -f docker-compose.yml up -d
Pulling zabbix_db (mysql:5.7.24)...
5.7.24: Pulling from library/mysql
177e7ef0df69: Pull complete
(中略)
Creating zabbix_zabbix_db_1 ... done
Creating zabbix_zabbix_server_1 ... done
Creating zabbix_zabbix_agent_1 ... done
Creating zabbix_zabbix_web_1 ... done
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a6951d17c69e zabbix/zabbix-web-apache-mysql:centos-4.2.5 "docker-entrypoint.sh" 50 seconds ago Up 48 seconds 443/tcp, 0.0.0.0:8080->80/tcp zabbix_zabbix_web_1
e114e5c4c8ca zabbix/zabbix-agent:centos-4.2.5 "/sbin/tini -- /usr/…" 50 seconds ago Up 48 seconds 10050/tcp zabbix_zabbix_agent_1
f26a0a605723 zabbix-server-mysql:kukulu-cs-4.2.5 "/sbin/tini -- /usr/…" 51 seconds ago Up 49 seconds 0.0.0.0:10051->10051/tcp zabbix_zabbix_server_1
e9a18fce90a2 mysql:5.7.24 "docker-entrypoint.s…" 52 seconds ago Up 50 seconds 3306/tcp, 33060/tcp zabbix_zabbix_db_1
# docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------
zabbix_zabbix_agent_1 /sbin/tini -- /usr/bin/doc ... Up 10050/tcp
zabbix_zabbix_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
zabbix_zabbix_server_1 /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10051->10051/tcp
zabbix_zabbix_web_1 docker-entrypoint.sh Up 443/tcp, 0.0.0.0:8080->80/tcp
Zabbixへログインし、外部チェックのアイテムを作成
Zabbixコンテナへログインします。
http://<DockerサーバのIPアドレス>:8080
Username:Admin
Password:zabbix
TOP画面が表示されます。
[Configuration]-[Hosts]でHost画面を表示して、[Zabbix server]列の[Items]を選択します。
[Items]画面右上の[Create Item]ボタンを選択します。
Name:お好みの名前でどうぞ
Type:External check
Key:kukulu_viewers.ps1 ※Dockerfileでコンテナへコピーしたスクリプト名
ここまで編集したら、画面最下部の[Add]を選択します。
[Item Added]と表示されたら準備OK。
監視できているか確認
[Monitoring]-[Latest data]を選択し、
[Hosts]に[Zabbix server]を選択した状態で[Apply]を押下します。
先ほど作成したアイテム名のレコードがあると思うので、
右側の[Graph]を選択します。
取得できているのがわかれば完了です。
Author And Source
この問題について(docker-compose習作① Zabbix-Serverの外部チェックアイテムで取得), 我々は、より多くの情報をここで見つけました https://qiita.com/HOBO0222/items/7e633e316ab2adb2f8fa著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .