zabbix4.0-运行原理
zabbix架构图
基本原理:Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)
agent主动模式:主动模式是由zabbix agent开启随机端口主动向zabbix server的10051端口发起tcp连接请求,因此主动模式下必须 在zabbix agent配置文件中指定zabbix server的IP或者主机名(必须可以被解析为IP地址),在连接到 zabbix server之前zabbix agent是不知道自己要采集那些数据以及间隔多久采集一次数据的,然后在连接到zabbix server以后获取到自己的监控项和数据采集间隔周期时间,然后再根据监控项采集数据并返 回给zabbix server,在主动模式下不再需要zabbix serve向zabbix agent发起连接请求,因此主动模式 在一定程度上可减轻zabbix server打开的本地随机端口和进程数,在-定程度就减轻看 zabbix server 的压力。
agent被动模式:zabbix agent被动的接受zabbix server周期性发送过来的数据收集指令,在被动模式之下,zabbix server会根据主机关联的模板中的监控项和数据采集间隔时间,周期性的打开随机端口并向zabbix agent服务器的10050发起tcp连接,然后发送获取监控项数据的指令,即zabbix server发送什么指令那么zabbix agent就收集什么数据,zabbix server什么时候发送zabbix agent就什么时候采集,zabbix server不发 送zabbix agent就一直不响应,所以zabbix agent也不用关心其监控项和数据采集周期间隔时间。但是被动模式的 最大问题就是会加大zabbix server的工作量,在数百甚至数干台服务器的环境下会导致zabbix server 需要轮训向每个zabbix agent发送数据采集指令,如果zabbix server负载很高还会导致不能及时获取到最新数据。
相关组件及主要功能:
zabbix_web:zabbix的web界面,管理人员可以通过zabbix的web界面管理zabbix配置以及查看zabbix的监控信息,web界面配置好信息后,会自动(大约1min)存储到zabbix Database数据库中,然后供zabbix_server使用。
zabbix Database:①存储zabbix的所有配置信息。②存储监控的数据。③存储的数据和监控项供zabbix_web端和zabbix_server端使用。
zabbix_server:负责接收agent/proxy发送的信息,组织、统计配置信息和操作数据等,从zabbix Database存入监控数据或取出监控项。
zabbix_proxy:zabbix_server的代理服务器,分主动和被动模式,负责从agent端收取监控数据,先缓存到本地数据库(可设置保留时间),然后本地数据库再将收集到的监控数据发送至zabbix_server端,zabbix_server端再将监控数据存到zabbix_database中。(通常大于500台主机需要使用)
zabbix_agent:负责部署在被监控主机上,把被监控主机的数据传送给zabbix_server或zabbix_proxy。
其他组件:
ssh/Telnet:通过远程控制协议进行通讯。
SNMP:通过SNMP协议与被监控对象进行通讯,路由器和交换机支持。
SNMP,其实也是一种agent。
IPMI:通过IPMI接口进行监控,通过IPMI硬件接口监控,电压,温度,风扇,和电源状态。
JMX:通过(java management extensions Java管理扩展)监控JVM虚拟机。
zabbix各种模式下的工作原理:
zabbix---------agent
zabbix_server ----> zabbix_agent(被动模式)
#由server端主动拉取信息,工具是zabbix_get。
#zabbix_agent端配置好后,启动agent服务。然后zabbix_web端配置好监控项和动作等设置后,将监控项存入zabbix_database中,然后zabbix_server到zabbix_database中获取对应得监控项及IP地址等信息,然后发送信息到对应的zabbix_agent端,zabbix_agent端收到监控信息后,到本机查询相应的值,然后返回到zabbix_server----->zabbix_database----->zabbix_web页面展示数据。
zabbix_server <---- zabbix_agent(主动模式)
#由agent端主动收集信息发送给server端,工具是zabbix_sender。
#zabbix_agent端配置好后,启动agent服务。然后zabbix_web端配置好监控项和动作等设置后,将监控项存入zabbix_database中。zabbix_agent端主动发送信息到zabbix_server端请求需要监控的项目,然后zabbix_server到zabbix_database中获取对应得监控项及IP地址等信息,然后发送信息到对应的zabbix_agent端,zabbix_agent端收到监控信息后,到本机查询相应的值,然后返回到zabbix_server----->zabbix_database----->zabbix_web页面展示数据。
zabbix--------proxy-------agent
#proxy、agent都有主动模式、被动模式。proxy主被动相对于server端,agent主被动相对于proxy端。
#当在proxy下添加或修改agent时,proxy服务也需要一同重启、重新加载配置文件。
#当配置、启动agent、proxy后,再配置web端即可。然后等待监控项同步后,就会收集到数据。
# proxy只有一个proxy的守护进程,proxy也有自己的数据库,但它的数据库只会保存一定时间的数据,它与server通信是将一批信息打包后发给server,server将这些数据融入(merge)server数据库。
其他涉及到zabbix通信的参数:
zabbix_agent.conf
#(主动模式)RefreshActiveChecks:zabbix客户端启动后,在等待RefreshActiveChecks秒后,开始从二级代理或服务端请求并下载监控项信息,保存在本地专门的buffersend中,再过RefreshActiveChecks秒后,重新获取监控项信息。这就是为什么当配置监控项,要过一会才能生效的原因。这个数值,就是等待时间。建议,不要将此数值设置过小,以免加大AGENT端和服务端及数据库的压力,建议为120秒。
#(主动模式)BufferSend:多少秒后,将Buffer中的数据提交到proxy代理或服务端。范围(1-36600)此数值的大小决定了采集后,提交数据的及时性,数值越小,则提交得越频繁,对服务器压力越大,同时对AGENT端系统资源消耗越大,则表现出来的现象是报警非常及时,建议根据实际情况自行考虑,也可保持默认,若发现ZABBIX消耗资源较多,建议加大此数值。
zabbix_proxy.conf
#ProxyLocalBuffer:已经提交到zabbix server的数据保留时间,单位是小时。
#ProxyOfflineBuffer:因连接不上server,而未提交到zabbix server的数据保留时间,单位是小时。
#HeartbeatFrequency:心跳间隔检测时间,被动模式将会被忽略;主动模式下,proxy将检测server是否存活;单位是秒,默认120。
#ConfigFrequency:主动模式下,proxy间隔多长时间向server获取监控项;单位秒,默认180。
#DataSenderFrequency:主动模式下,proxy间隔多长时间向server发送数据,单位秒,默认30。
#StartPollers:proxy开启几个进程收集数据。
#Timeout:指定时间内,agent没把监控项的数据返回则超时。
后续有新增内容,还会补充.......