使用Docker部署zabbix监控系统
2017-01-03 by dongnan
注意,由于 saltstack 安全等问题,推荐使用 ansible 完成批量操作任务,对于容器的特性,推荐更适合容器监控的 prometheus 代替 zabbix 。
目标
使用 docker 部署 zabbix3 ,并配合 saltstack 完成批量监控成百上千的 Linux 主机,大概的步骤如下:
- 首先,需要使用 docker运行一个zabbix server容器 。
- 其次,使用 saltstack,为Linux主机批量安装并运行zabbix-agent。
- 最后,使用 zabbix server的discover功能,自动添加Linux主机。
准备工作
- 已经部署完毕的 docker,下载zabbix相关镜像,docker hub在国外如果未提前准备好镜像,可能等待较长时间。
- 已经部署完毕的 saltstack, 并且master对minion完成了授权。
- 已经测试过的 zabbix_agentd.conf配置文件,用于下发到Linux主机。
环境
软件环境
centos 7.2
docker 1.12 on centos 7.2
zabbix-web 3.2 on docker
zabbix-server 3.2 on docker
mysql-server 5.7 on docker
部署 zabbix server
步骤
mysql 容器
- 参考这篇文章 docker 创建 mysql 容器
zabbix-server 容器
docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="ywwd.net" \
      -e MYSQL_ROOT_PASSWORD="ywwd.net" \
      --link mysql-server:mysql \
      -p 10051:10051 --restart=always \
      -v /etc/localtime:/etc/localtime:ro \
      -d zabbix/zabbix-server-mysql:latest
zabbix-web 容器(nginx)
docker run --name zabbix-web-nginx-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="ywwd.net" \
      -e MYSQL_ROOT_PASSWORD="ywwd.net" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -v /etc/localtime:/etc/localtime:ro \
      -p 80:80 \
      --restart=always \
      -d zabbix/zabbix-web-nginx-mysql:latest
验证
部署完成的 Zabbix Server

部署 zabbix agent
由于 zabbix repo 也在国外,建议提前将下载好的 rpm 包,分发到 Linux 主机,最后使用 yum 本地安装 rpm包;
分发 rpm 包
salt -N idc-all cp.get_dir salt://tmp/rpm/zabbix/ /root/ -v
安装 rpm 包
salt -N idc-all cmd.run 'grep "(Core)" /etc/centos-release \
&& yum -y localinstall /root/zabbix/zabbix-agent-3.2.2-1.el7.x86_64.rpm || yum -y localinstall /root/zabbix/zabbix-agent-3.2.2-1.el6.x86_64.rpm' -v
如果网速不是问题,可以使用 saltstack sls 安装
salt -N idc-all state.sls zabbix -v
关于 saltstack sls 请参考这里
zabbix discover
discover 功能

actions
待补充...
operation
待补充...
小结
对于多个容器应用编排,推荐使用 docker-compose 方式完成zabbix 部署工作,请参考这里。
参考
- http://zabbix.org/wiki/InstallOnCentOS_RHEL
- https://hub.docker.com/r/zabbix/zabbix-agent/
- https://www.zabbix.com/documentation/3.2/manual/installation/containers