LoginSignup
0
3

More than 3 years have passed since last update.

docker-compose習作① Zabbix-Serverの外部チェックアイテムで取得

Last updated at Posted at 2019-08-18

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でイメージを作成

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で取得するようにしています。

kukulu_viewers.ps1
#!/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でイメージを作成します。

Dockerfileでイメージ作成
# 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つのコンテナをデプロイしていきます。

docker-compose.yml
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でデプロイします。

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

image.png

Username:Admin
Password:zabbix

TOP画面が表示されます。

[Configuration]-[Hosts]でHost画面を表示して、[Zabbix server]列の[Items]を選択します。
image.png

[Items]画面右上の[Create Item]ボタンを選択します。
image.png

Name:お好みの名前でどうぞ
Type:External check
Key:kukulu_viewers.ps1 ※Dockerfileでコンテナへコピーしたスクリプト名

image.png

ここまで編集したら、画面最下部の[Add]を選択します。
[Item Added]と表示されたら準備OK。
image.png

監視できているか確認

[Monitoring]-[Latest data]を選択し、
[Hosts]に[Zabbix server]を選択した状態で[Apply]を押下します。

image.png

先ほど作成したアイテム名のレコードがあると思うので、
右側の[Graph]を選択します。
image.png

取得できているのがわかれば完了です。

image.png

0
3
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
0
3