在运维工作中经常有这样的场景,领导问工程师:
“咱们的监控系统抓取数据的手段有几种呢?“”
如果对监控认识比较含糊,可能会东一句、西一句,说的不够全面。Zabbix的界面配置也会导致我们对这个问题有所误解。其实 这个问题的意思是,Zabbix的监控数据都是怎么来的 ? 一句户就可以解释清楚:主动抓取和被动接收。
但是这样和领导解释,领导肯定不爽,所以还需要从技术手段上介绍一下。我们可以从item type的截图来分析这件事儿:
1、 Server主动抓取:
Agent部署方式: 通过在监控对象上部署agent,agent在目的主机上获取数据。server主动去获取这些数据。(多使用在OS上)
SNMP方式:zabbix server调用类似snmpget的命令,获取目标对象的数据。(多使用在网络设备等硬件上,服务器也可以做,但是比较少)
Simple Check:zabbix server调用自己所以os的fping命令,获取目标对象的相关指标数据。(适用于有IP的对象)
IPMI :zabbix server本地调用ipmitool 命令,获取目的对象数据。(适用于监控使用ipmi协议进行监控,一遍监控一些硬件和传感器信息。)
External Check:运行Server或者Proxy直接运行安装在自己os的脚本,来获取远端监控对象的数据。远端无需安装agent。不建议过多使用,过多的话会影响zabbix server性能。
Database Monitor: Server端主动获取DB的一些数据,zabbix自带的监控DB的方法。适用于MySQL等数据库。但是现在好多人不用这个方法,自己写脚本挂到agent上,也是可以实现同样目的的。
Calculated:这个其实不是一种数据获取方式,这个是基于原有的监控指标,进行计算,生产一个新指标。在带宽、流量的计算上经常会用到这个。
Telnet Agent: server运行telnet命令到目的IP,并执行你在item中配置好的cmd,返回执行结果。(Run a command on a remote device using telnet connection)
SSH Agent :同上类似
JMXAgent: 在监控java类型程序、比如tomcat、weblogic等的时候,使用这个类型,可以获取jmx内的性能数据
2、Server被动接收:
SNMP Trap: 被动接收设备发来的告警数据。(适用于网络、存储等硬件设备的监控)
Agent主动方式: agent主动提交数据给server。毕竟agent是侵入式的一种方式,所以能做的事情当然多一些。
zabbix trapper:在被监控对象上面调用zabbix trapper命令,返回数据。(适用于指标获取数据消耗时间长的场景)
被动接收还有一种使用场景,那就是网络环境只允许单向通信的情况。