Azureはじめました

Windows Azureで業務システムを組んでみる日記

Docker on Centos でzabbix serverを作ってみる

1年半振りの更新とか('A`)しかもazure関係ねぇし…。

CentOSにDockerをインストー

sudo yum install docker -y

お手軽お気軽。

ここでインストールしたdockerは一般ユーザーで

docker ps

とかすると

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

と、怒られる。
こいつはdocker.sockのパーミッションが無いから。

ls -la /var/run/docker.sock
srw-rw----. 1 root root 0  63 15:29 /var/run/docker.sock

使うユーザーを

sudo usermod -g root hogehoge

すればいいんだけどセキュリティ的にアレなのでsudo で使おう。

zabbixをdockerで動かす。

公式のzabbix/zabbix**が妙に不親切にできてるのが大変に遺憾。

zabbix - Docker Hub
https://hub.docker.com/u/zabbix/

なので割りと親切なmonitoringartist版を使う。

monitoringartist/zabbix-3.0-xxl - Docker Hub
https://hub.docker.com/r/monitoringartist/zabbix-3.0-xxl/



インストールはdocker-hubに書いてあるのと変わらない。

docker run -d -v /var/lib/mysql --name zabbix-db-storage busybox:latest

docker run \
    -d \
    --name zabbix-db \
    -v /backups:/backups \
    -v /etc/localtime:/etc/localtime:ro \
    --volumes-from zabbix-db-storage \
    --env="MARIADB_USER=zabbix" \
    --env="MARIADB_PASS=mypassword" \
    monitoringartist/zabbix-db-mariadb

docker run \
    -d \
    --name zabbix \
    -p 8000:80 \
    -p 10051:10051 \
    -v /etc/localtime:/etc/localtime:ro \
    --link zabbix-db:zabbix.db \
    --env="ZS_DBHost=zabbix.db" \
    --env="ZS_DBUser=zabbix" \
    --env="ZS_DBPassword=mypassword" \
    monitoringartist/zabbix-xxl:latest

しばらく待てば完了。

sudo docker ps

CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS              PORTS                                                                NAMES
df69f42508ec        monitoringartist/zabbix-xxl:latest   "/config/bootstrap.sh"   23 minutes ago      Up 22 minutes       162/udp, 0.0.0.0:10051->10051/tcp, 10052/tcp, 0.0.0.0:8000->80/tcp   zabbix
59e8d1e16445        monitoringartist/zabbix-db-mariadb   "/run.sh"                28 minutes ago      Up 27 minutes       3306/tcp                                                             zabbix-db

らくちんらくちん。

zabbix用にファイアーウォールに穴あけ。

外部からこのサーバーのzabbixにアクセスするために tcp:8000 *1tcp:10051 に穴を開ける。

firewalldにserviceを追加

ファイルを新しく2個作る。
/usr/lib/firewalld/services/zabbix.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Zabbix-Server</short>
  <description>Zabbix-server income</description>
  <port protocol="tcp" port="10051"/>
</service>

/usr/lib/firewalld/services/zabbix-web.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Zabbix-Web-Frontend</short>
  <description>Zabbix-server web frontend</description>
  <port protocol="tcp" port="8000"/>
</service>


んでfirewall-cmdでインストール。

#サービスを追加したのでリロード
$ sudo firewall-cmd --reload
success

#アクティブなゾーン
$ sudo firewall-cmd --get-default-zone
public

#firewallに2つのサービスを追加
$ sudo firewall-cmd --add-service=zabbix --zone=public --permanent
success
$ sudo firewall-cmd --add-service=zabbix-web --zone=public --permanent
success

#確認
$ sudo firewall-cmd --reload
success

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh zabbix zabbix-web
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

で、OK。

あとはブラウザから http://[CentosのIP]:8000/ でアクセスして
user : admin
password : zabbix
でログインするだけ。

いやー、簡単になったもんだ。

*1:別のポートを使いたいときはdocker-runの "-p 8000:80" を任意のポートに変更する。