因为公司之前是拿硬件堆出来的环境现在想要上虚拟化所以我们现在的环境大多都是通过P2V把原来的机器腾出来之后安装ESXi然后就在本地硬盘上跑虚拟机我也知道很不安全所以我们就需要面临几个问题以前的节点配置的硬盘空间和内存都不大所以我们跑虚拟机的话硬盘和内存就会特别吃力。当然内存跑满了顶多是性能上面有点问题但是硬盘跑满了整个节点上面的虚拟机就会陆续的停掉比较尴尬的问题。那么为了预防这个问题的发生在开始的时候我已经写了一篇怎么监控节点硬盘空间的量的文章面包ESXi 硬盘监控脚本使用方法详解http://mianbao.cn.com/forum.php?mod=viewthread&tid=173&fromuid=1并且对脚本的使用方法做了说明。
但是后来我们发现只有这监控是不够的节点硬盘达到了报警伐值之后我们该怎样采取措施成了我们最大的问题因为不能快速的定位哪个虚拟机占用的硬盘空间比较大那么我们就无法做到敏捷的反映。因为还要牵涉到虚拟机迁移这个是需要和业务沟通的如果你没有强有力的证据说明是某台虚拟机的问题那么沟通工作就会很难做。所以面包就又写了监控每个节点上虚拟机的脚本实现效果如下
#-*- coding:utf-8 -*- ‘‘‘ @Created on 2016 @author: MianBao @author_web: Mianbao.cn.com ‘‘‘ import copy import ssl from pysphere import VIServer,VIProperty from zabbix_send import zabbix_sender def GetNodeInfo(Server): managed_object_types = ‘VirtualMachine‘ properties = [ ‘summary.runtime.host‘, ‘summary.storage.committed‘, ‘name‘, ] props = Server._retrieve_properties_traversal(property_names=properties,obj_type=managed_object_types) vms = dict() for item in props: vm = {} host_id = None for p in item.PropSet: if p.Name == ‘summary.runtime.host‘: if vms.get(p.Val,None): host_id = p.Val vm[p.Name] = p.Val if host_id: vms[host_id].append(vm) else: vms[vm[‘summary.runtime.host‘]] = [vm,] return vms def GetHosts(s): hosts = s.get_hosts() return hosts def main(s,zabbix_info): hosts = GetHosts(s) vms = GetNodeInfo(s) for x,y in vms.items(): for m in y: response = SendData(x,m,hosts,zabbix_info) print response return response def SendData(x,m,hosts,zabbix_info): zabbix_vm = zabbix_sender(**zabbix_info) value = dict() value[‘host‘] = hosts.get(x,None) value[‘key‘] = ‘vmware.vm‘ vm_name = m.get(‘name‘) value[‘value‘] = ‘{"data":[{"{#DATA}":"%s"}]}‘ % str(vm_name) zabbix_vm.adddata(**copy.deepcopy(value)) print hosts.get(x,None),‘--------‘,vm_name for key,val in m.items(): if key not in [‘summary.runtime.host‘,‘name‘,]: value[‘key‘] = ‘%s[%s]‘ % (key, vm_name) value[‘value‘] = val zabbix_vm.adddata(**copy.deepcopy(value)) response=zabbix_vm.send() return response
以上为实现的主要代码还需要向"get_disk_info.py"下面调用一下这个函数。接下来我们来看一下模板中该怎么设置新增一个“discovery rules”然后key设置如下图所示
设置“discovery rules”并设置其item如下
基本设置方法如上所述
本文出自 “面包” 博客,请务必保留此出处http://mianbao.blog.51cto.com/12784768/1913197
原文地址:http://mianbao.blog.51cto.com/12784768/1913197