最近因为一台ESXi的硬盘爆掉(硬盘分配方式全部采用的是瘦分配模式)导致整个节点上的生产机全部暂停,原因就不再多说了。然后这么low的问题居然发生在了偶的身上,太窝心了,于是面包决定重对ESXi进行监控一下吧!背景:因为公司以前都是直接用机器堆的,经过我们无数个P2V才有了现在的环境,所以机器的硬盘配置也不是太有规律。
第一反映肯定是开ESXi的SNMP然后OID取值了,错了,错了,开了SNMP配置了团体名,启动了服务,在zabbix上看的时候发现呵呵.....取不到硬盘数据,然后把整个OID的信息全拉了出来,发现真的SNMP没有提供硬盘数据,好吧,SNMP用不了,Agent不能装。那我们就来问问google吧,然后一搜发现哎zabbix官方提供的有方法哎,然后的然后提供VC的地址,给一个只读的用户就可以监控了,但是发现还是没有节点的硬盘数据,也是醉了!
然后就发现了low level discovery这个功能(这是第二天开始用zabbix),OK,俺也是四肢健全,头脑发达的四有青年,自己想个办法解决一下吧!然后的然后就有了下面的配置过程,首先建一个模板:
OK,模板建好了,我们来建一个“Applications”:
建好了“applications”,接下来我们就开始建discovery rules了,这真是一个好功能呀:
那么建discovery rules的时候有三个地方需要注意一下(key,type,filters):
然后discovery rules建好了之后,我们就开始设置item prototpyes了,其中有两点需要注意一下(type,key):
Graph prototpyes的设置这里就不再多做赘述,截张图,大家自己看设置吧:
然后我们前端说完了,开始说后面关于ESXi的设置,其实我的实现思路就是把ESXi的数据抓取过来,然后封装一个Zabbix_sender的类,把数据给zabbix sender过来,其中附件中有两个脚本,其功能如下:
get_disk_info.py:从VC里面获取Disk的数据并生成相应的格式(因为low level discovery需要的数据是json的)其中要设置的地方比较多,如VC的地址,用户名,密码及Zabbix的信息。
zabbix_send.py:主要是把数据进行封装,然后发送给服务器。
其效果如下:
转载于:https://blog.51cto.com/mianbao/1913278