当主机数量过多的时候,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下:

1、Web操作很卡,容易出现502

2、图层断裂

3、开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题


所以下面主要往两个优化方向考虑:

1、用Proxy或者Node模式做分布式监控

2、调整Agentd为主动模式

由于第一个方案需要增加物理机器,所以先尝试第二方案


一、Agentd的配置调整:

LogFile=/tmp/zabbix_agentd.log
Server=14.18.xxx.xxx
ServerActive=14.18.xxx.xx
Hostname=119.146.xxx.xx
RefreshActiveChecks=60
BufferSize=10000
MaxLinesPerSecond=200
Timeout=30

比较重要的参数是ServerActive和Hostname,ServerActive是指定Agentd收集的数据往哪里发送,Hostname是必须要和Server端添加主机时的主机名对应起来,这样Server端接收到数据才能找到对应关系,我这里为了兼容被动模式,没有把StartAgents设为0,如果一开始就是使用主动模式的话建议把StartAgents设为0,关闭被动模式


二、Server的配置调整:

StartPollers=100 

首先把这个主动收集数据进程减少,原来开到700多,囧

StartTrappers=200

然后把这个负责处理Agentd推送过来的数据的进程开大一些,就可以了


三、调整模板

建议完整克隆一个Template OS Linux 模板来改,需要调整的地方就是:

Zabbix优化二:Agentd主动模式_zabbix把所有的item的类型由原来的“zabbix代理”改成“zabbix端点代理程序(主动式)”


只需要简单的几步,就完成了主动模式的切换,调整之后服务器不卡了,图层不裂了,进程也少了。