使用Docker部署Zabbix Proxy
2016-03-25 by dongnan
开始之前
zabbix proxy 用于代替 zabbix server
检索客户端的数据,然后把数据汇报给 zabbix server
,
并且在一定程度上分担了 zabbix server
的压力,zabbix proxy
非常简便地实现了集中式、分布式监控。
使用场景:
- 监控远程区域设备。
- 监控本地网络不稳定区域。
- 当
zabbix
监控成千上万的设备时,使用它来减轻server
端的压力。 agent
无法对外提供公网端口,zabbix proxy
选择主动模式向zabbix server
推送数据。
目标
- 使用
docker
部署zabbix proxy
。 - 配置
zabbix proxy
与zabbix server
通信。 - 配置
zabbix server
通过zabbix proxy
监控zabbix agent
。
部署
数据库
同 zabbix server
一样,zabbix proxy
依赖 mysql
数据库,所以需要先部署一个 mysql
容器:
# 执行命令
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix_proxy" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="ywwd.net" \
-e MYSQL_ROOT_PASSWORD="ywwd.net" \
-v /data/container/mysql:/var/lib/mysql \
-v /etc/localtime:/etc/localtime:ro \
--restart=always \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_general_ci --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
zabbix-proxy
接下来创建 zabbix-proxy
容器。
# 执行命令
docker run --name zabbix-proxy-mysql \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix_proxy" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="ywwd.net" \
-e ZBX_HOSTNAME="office-proxy.xyc.it" \
-e ZBX_SERVER_HOST=YourZabbixServerIP \
-e ZBX_TIMEOUT="30" \
-e ZBX_CONFIGFREQUENCY="300" \
-e ZBX_DATASENDERFREQUENCY=3 \
--link mysql-server:mysql \
-p 10051:10051 --restart=always \
-v /etc/localtime:/etc/localtime:ro \
-d zabbix/zabbix-proxy-mysql:latest
注意,ZBX_HOSTNAME
变量,配置时需要使用它。
配置
首先在 zabbix server
页面添加代理, Administration -> Proies -> Create proxy
。
注意 Proxy name 一定要与创建的 zabbix-proxy
容器中定义的 ZBX_HOSTNAME="YourZabbixPorxyName"
环境变量相同,
否则 zabbix server
拒绝与其通信。
另外 Proxy mode
选择 Active
主动模式,也就是前面提到某些环境下即使没有公网端口也可以主动提交数据到 zabbix server
。
最后添加 zabbix-agent
, 添加 zabbix-agent 时选择 创建的 proxy 即可,例如: