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

1、当被监控端到达一个量级的时候,Web操作很卡,容易出现502

2、图层断裂

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


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

1、添加Proxy节点或者Node模式做分布式监控

2、调整Agentd为主动模式

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



一、被监控端 zabbix_Agentd.conf 的配置调整:

LogFile=/tmp/zabbix_agentd.log
StartAgents=0          #客户端agent模式,仅为主动模式,值为0的时候,被监控端的zabbix_agentd 不监听本地端口,所以无法在 netstat -tunpl 中查看到zabbix_agentd进程
ServerActive=**.**.**.**    #zabbix_server的ip
Hostname=test_host    #重要:主机名
RefreshActiveChecks=1800    #被监控端到服务器获取监控项的周期
BufferSize=200        #被监控端存储监控信息的空间大小
Timeout=10            #超时时间

比较重要的参数是ServerActive和Hostname,ServerActive是指定Agentd收集的数据往哪里发送,Hostname是必须要和Server端添加主机时的主机名一样,这样Server端接收到数据才能找到对应关系。


二、Server端的zabbix_server.conf 配置调整:

StartPollers=100 

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

StartTrappers=200

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


三、调整模板

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

wKiom1W8oYKAq6gFAAONLJzL4AU178.jpg

然后修改克隆的模板名称

wKioL1W8o8PDh8i2AAFY_WGL-cg888.jpg


然后修改每一个 item 的监控模式

wKiom1W8oguC6WnaAAHXMJGjFmo886.jpg

全部勾选

wKioL1W8pFfgoM2HAAPuVXKS8_I874.jpg

然后选择 Mass update 批量修改


修改这里

wKiom1W8oqLBesG-AAGvL17Lkug178.jpg修改为 active 模式,保存


然后选择 自动发现策略 

wKioL1W8pNPhdtndAAMmiFozGA0714.jpg同样将里面的监控项修改为 active 模式并保存。


点击items 

wKioL1W8pX6wBMaHAAJfchGLacY152.jpg同样将里面的监控项修改为 active 模式并保存。


这个模板就做好了



四,添加一台主动模式的主机

创建一台新的主机

wKioL1W8pfqhWaAfAAQglmDX52E071.jpg这里的hostname必须填入被监控端zabbix_agentd.conf中配置的主机名 ,agent类型,IP地址填入0.0.0.0 ,端口填入0   保存


第二页关联监控模板

wKiom1W8pEiC80aYAAJjE1JrhZc358.jpg保存



最后,启动被监控端的zabbix_agentd服务。

然后就查看 zabbix_server.log 看是主动监控主机是否能够正常监控

如果不能正常监控,那么使用tcpdump抓下被监控端的数据包,如果不能抓取数据包,请检查防火墙配置。

还可以查看 latest data 来查看是否能够正常获取被监控端发来的监控值。

wKiom1W8pV-Ac8ATAAYGoLOqilw239.jpg


在host主机列表中,好像无法显示被监控端的监控类型。但是并不影响监控。

wKioL1W8p6-jO4ZRAALzvpXbbk0008.jpg


好了,测试完毕了。