跳转至

使用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 proxyzabbix 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 即可,例如:

参考

回到页面顶部