博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zabbix使用自动发现监控esxi的磁盘存储storage
阅读量:5923 次
发布时间:2019-06-19

本文共 4433 字,大约阅读时间需要 14 分钟。

zabbix使用自动发现监控esxi的磁盘存储storage

在任意一台可以访问vcenter的zabbix-agent服务器上添加exsi的磁盘监控模板即可

 

创建模板过程:

custom.esxi.discovery

画图:

注意要选择浮点型,否则可能不支持

添加触发器:当磁盘使用率超过85%时触发报警

自动发现的脚本:[root@wondershareID_web03:~]# cat /usr/local/zabbix_agents_3.2.0/scripts/zabbix_esxi_storage.py#!/usr/bin/python3#coding:utf-8#Author: ziming"""只用于模拟开发功能测试"""from pyVmomi import vimfrom pyVim.connect import SmartConnect, Disconnect, SmartConnectNoSSLimport sysimport atexitimport argparsefrom optparse import OptionParserimport jsonclass Exsi(object):    # 获取vcenter的相关参数    def __init__(self, host = '192.168.254.69', port=443, user = 'zabbixmonitor', password='zabbixmonitor'):        self._host = host        self._port = port        self._user = user        self._password = password    def get_obj(self,content, vimtype, name=None):        '''        列表返回,name 可以指定匹配的对象        '''        container = content.viewManager.CreateContainerView(content.rootFolder, vimtype, True)        obj = [ view for view in container.view]        return obj    def get_conn(self):        # 连接vcenter        si = SmartConnectNoSSL(                host=self._host,                user=self._user,                pwd=self._password,                port=self._port)        # disconnect this thing        atexit.register(Disconnect, si)        content = si.RetrieveContent()        return content    # 获取exsi的信息ip,磁盘使用情况等    def get_esxi_host(self):        esxi_host = {}        content = self.get_conn()        esxi_obj = self.get_obj(content, [vim.HostSystem])        for esxi in esxi_obj:            esxi_host[esxi.name] = {
'datastore':{}} # for ds in esxi.datastore: # esxi_host[esxi.name]['datastore'][ds.name] = {} # esxi_host[esxi.name]['datastore'][ds.name]['总容量(G)'] = int((ds.summary.capacity)/1024/1024/1024) # esxi_host[esxi.name]['datastore'][ds.name]['空闲容量(G)'] = int((ds.summary.freeSpace)/1024/1024/1024) # esxi_host[esxi.name]['datastore'][ds.name]['类型'] = (ds.summary.type) total_capacity = 0 free_capacity = 0 for ds in esxi.datastore: # esxi_host[esxi.name]['datastore'][ds.name] = {} esxi_host[esxi.name] = {} total_capacity += int((ds.summary.capacity)/1024/1024/1024) free_capacity += int((ds.summary.freeSpace)/1024/1024/1024) esxi_host[esxi.name]['sotrage_used_percent'] = 100*(total_capacity - free_capacity)/total_capacity # print(esxi_host) return esxi_host # 获取exsi的host即ip列表 def get_esxi_iplist(self): esxi_host = self.get_esxi_host() data = list() for exsi_ip in esxi_host: data.append({
"{#EXSI_IP}": exsi_ip}) return json.dumps({
'data': data}, sort_keys=True, indent=7, separators=(",",":")) # 获取指定esxi的磁盘信息 def get_esxi_storageinfo(self, exsi_ip): esxi_host = self.get_esxi_host() return esxi_host[exsi_ip]['sotrage_used_percent']def main(): try: usage = "usage: %prog [options]\ngGet exsi Stat" parser = OptionParser(usage) # 接收参数 parser.add_option("-l", "--list", action="store_true", dest="is_list", default=False, help="if list all exsi ip") parser.add_option("--ip", "--ipaddr", action="store", dest="ipaddr", type="string", default="192.168.254.56", help="execute 'exsi info' to see more infomation") (options, args) = parser.parse_args() if 1 >= len(sys.argv): parser.print_help() return #exsi_ins = Exsi(options.ipaddr) exsi_ins = Exsi() if options.is_list == True: print(exsi_ins.get_esxi_iplist()) return # print(redis.ins.get_esxi_storageinfo(optins.ip, exsi_ip = ip)) print(exsi_ins.get_esxi_storageinfo(options.ipaddr)) except Exception as expt: import traceback tb = traceback.format_exc() print(tb)if __name__ == '__main__': main()

 配置文件

# vim /usr/local/zabbix_agents_3.2.0/conf/zabbix_agentd.conf

UserParameter=custom.esxi.discovery, /usr/bin/python3 /usr/local/zabbix_agents_3.2.0/scripts/zabbix_esxi_storage.py --list

UserParameter=custom.esxi.item[*],/usr/bin/python3 /usr/local/zabbix_agents_3.2.0/scripts/zabbix_esxi_storage.py --ip $1

转载于:https://www.cnblogs.com/reblue520/p/9643689.html

你可能感兴趣的文章
解决嵌入WinForm的WPF控件无法显示图片问题
查看>>
Java多线程详解(三)
查看>>
RGB 颜色对照表
查看>>
RGB色彩模式
查看>>
匈牙利算法
查看>>
OGRE之跳出漫长的编译等待
查看>>
通用分页存储过程真的有注入漏洞吗?
查看>>
atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform
查看>>
php操作memcache的使用测试总结
查看>>
8天玩转并行开发——第一天 Parallel的使用
查看>>
Sublime Text 3 史上最性感的编辑器
查看>>
BZOJ3832 : [Poi2014]Rally
查看>>
让Java和JavaScript进行交互
查看>>
android 上传文件
查看>>
python 书籍推荐 二
查看>>
NIO框架之MINA源码解析(转)
查看>>
java环境变量配置
查看>>
C#中值类型和引用类型
查看>>
Android Notification 的使用
查看>>
自动编号维护SNRO
查看>>