zabbix agent检测分为主动(agent active)和被动(agent)两种形式,主动与被动的说法均是相对于agent来讨论的。
- 主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
- 被动:server向agent请求获取监控项的数据,agent返回数据。
默认采用被动模式,但当被监控端数量过多时,被动模式会出现严重的性能问题:
- Web操作很卡,容易出现502
- 图层断裂
- 开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题
优化主要有两个方向:
- 添加Proxy节点或者Node模式做分布式监控
- 调整Agentd为主动模式
被动模式
客户端默认端口10050
流程
Server打开一个TCP连接
Server发送一个key为agent.ping
Agent接受这个请求,然后响应< HEADER >< DATALEN >
Server对接受到的数据进行处理
TCP连接关闭
配置
1、agent端重点
StartAgents=3//被动模式,启动客户端数不为0
Server=x.x.x.x//允许获取数据的地址,可配置0.0.0.0/0允许任意ip获取数据
Hostname=zabbix_client//与服务端设置的名字相同
2、zabbix-server端
zabbix监控模板默认使用的就是被动模式,直接添加就好
主动模式
流程
1.获取列表
Agent向Server建立一个TCP连接
Agent请求需要检测的items数据列表
Server响应Agent,发送一个Items列表
Agent处理响应
TCP连接完成本次会话关闭
Agent开始周期性地收集数据
2.主动检测提交数据
Agent建立TCP连接 Agent提交items列表收集的数据 Server处理数据,并返回响应状态 关闭TCP连接
配置
1、agent配置
StartAgents=0//主动模式,不启动客户端
ServerActive=x.x.x.x//配置服务器地址,可配置域名,域名如用nginx需要tcp转发10051端口
Hostname=zabbix_master//与服务端设置的名字相同
2、zabbix-server端 克隆默认的模板,将配置项和自动发现改为主动模式,主机连接主动模式模板