使用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