背景
阿里云的网络有俩种网络架构,经典网络和专有网络(vpc)
我们的监控机zabbix是在VPC内网的,如果对经典网络(公网)进行监控呢?
可能方法有很多,但是我使用了zabbix的proxy主动模式,这种场景正符合分布式监控:)
拓扑图
关于proxy的使用场景
- 监控远程区域设备
- 监控本地网络不稳定区域
- 当 zabbix 监控上千设备时,使用它来减轻 server 的压力
- 简化分布式监控的维护
zabbix proxy 仅仅需要一条 tcp 连接到 zabbix server
zabbix proxy 是一个数据收集器,它不计算触发器、不处理事件、不发送报警
部署
proxy安装
yum install http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpm
yum install zabbix-proxy-mysql
proxy需要一个独立的数据库,请勿和server同库。
create database zabbix_proxy DEFAULT CHARACTER SET latin1;
use zabbix_proxy;
source /usr/share/doc/zabbix-proxy-mysql-3.2.6/schema.sql;
grant all privileges on zabbix_proxy.* to zabbix@'127.0.0.1' identified by 'zabbix';
proxy配置
主要修改以下配置
ProxyMode=0
Server=zabbix_server的外网IP //注意要限制访问,可能有人发现,你监控服务器是放内网啊,怎么有公网的IP,额,你可以用弹性IP或者负载均衡的虚拟服务器组来转发哈
ServerPort=10051
Hostname=zabbix_proxy的主机名
DBHost=127.0.0.1
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
DBSocket=/data/mysql/mysql.sock
agent安装配置
yum install zabbix-agent
配置文件用以下内容即可
LogFile=/var/log/zabbix/zabbix_agentd.log
PidFile=/var/run/zabbix/zabbix_agentd.pid
EnableRemoteCommands=1
Server=proxy内网IP
ServerActive=proxy的内网IP:10051
Hostname=agent的主机名
RefreshActiveChecks=120
BufferSize=2048
Timeout=15
UnsafeUserParameters=1
Include=/etc/zabbix/zabbix_agentd.d
启动
新建代理
在我们的zabbix界面上点击管理--agent代理程序--创建代理
agent代理程序名称 为 zabbix_proxy的主机名 (建议一致 )
添加主机
只需要填写以下
- 主机名称 为 agent的hostname
- 在...群组里
- IP地址 为 agent的内网IP
- 由agent代理程序监测 下拉 选择我们刚创建的代理名称 (敲黑板)
- 模板 添加你需要的模板
完成~