利用zabbix监控Vmware运行

利用zabbix监控Vmware运行_第1张图片
效果图

其实想监控Vmware已经不是一天两天了,但一直因为没有什么时间研究(其实是拖延症)所以拖了快一年了也没搞定。恰逢这次公司的VRO套件试用期到了,因为价格太贵的关系没准备买正式版所以不得不找个方案来代替它。于是就花了一星期时间断断续续的搞了出来。
首先聊下我监控Vmware的几个大类。

CPU 存储 内存 设备信息 常规信息 网络 VMS
总频率 总容量 总容量 型号 OS版本 流量 OS版本
使用量 使用量 使用量 BIOS UUID Uptime 广播 电源
使用% 使用% 使用% CPU参数 虚机数量 组播 vm state
IOPS 回收量 生产厂商 up/down MAC地址
I/O延时 Hostname 网络错误
存储可用性

还有些与系统运行关系不是太大的信息也有监控,但篇幅有限就不列举了。
针对表格内会影响到系统运行的也都设置了触发器阈值,方便发送邮件告警。
下面来聊下监控原理。
Vmware官方给出了一套python库,允许开发者去读写Vmware系统。我们这里会用到的就是利用这个库编写的一个py脚本,一个shell脚本,以及一个xml监控模板。
这三个文件都不是我自己写的,我也是抄的老外的-抄袭传送门。不过这个脚本不太适用于我们不用proxy的用户,下面下使用方式。
1.搭建zabbix
这是常规操作,就不赘述了,需要教程的我这里给一个我写的搭建教程链接-传送门
2.导入xml模板
3.zabbix服务端安装依赖

 # yum -y install sblim-wbemcli.x86_64 pywbem.noarch python2-pyvmomi.noarch python-setuptools jq python-setuptools zabbix-sender.x86_64
 # easy_install -U pysphere
 # easy_install -U docopt

4.zabbix服务端安装JQ,如果不安装的话shell脚本内一条变量类型转换语句会无法执行。

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum repolist
yum install jq  #因为我的yum源里没有JQ,所以还需要手动添加

如果不安装JQ在执行自动发现时会收到如下报错:

Item preprocessing step #1 failed: cannot apply multiplier "1048576" to value "/usr/lib/zabbix/externalscripts/agent_vsphere_wrapper:行281: jq: 未找到命令
cat: 写入错误: 断开的管道" of type "string": cannot convert value to numeric type
Item preprocessing step #1 failed: cannot apply multiplier "1048576" to value "/usr/lib/zabbix/externalscripts/agent_vsphere_wrapper:行281: jq: 未找到命令" of type "string": cannot convert value to numeric type

5.修改shell脚本
用文本编辑器打开agent_vsphere_wapper,将41和42行的grep "^Server=" /etc/zabbix/zabbix_proxy.conf改为grep "^Server=" /etc/zabbix/zabbix_server.conf。否则对于不用proxy的朋友会收到如下报错。

value should be a JSON object  #原因为python脚本中使用了netstat -p参数,权限问题,zabbix_agentd是zabbix用户启动的,默认不能执行netstat -p等命令,导致从服务器取到的自动发现脚本为空。

6.将脚本放到服务器
将两个脚本上传到/usr/lib/zabbix/externalscripts/,并为两个脚本授权后重启zabbix server

chmod a+x agent_vsphere_wrapper agent_vsphere
service zabbix-server restart

7.在vmware上进行一些配置

  • 首先创建一个user权限的账号,只读权限即可。
  • 打开vmware ssh,因为后面开启snmp和mob via都需要在命令行模式下进行。
  • 使用ssh终端连接vmware,执行如下命令:
vi /etc/vmware/snmp.xml  #用vi编辑器打开snmp配置文件并用以下内容替换原内容,保险起见请在修改器备份该文件。


    
        true
        161
        
        
        indications
        public
        info
        
        
    
  
#保存退出后即可在esxi控制页打开snmp,下面开启mob via,命令如下
vi-cmd proxysvc/add_np_service "/mob" httpsWithRedirect /var/run/vmware/proxy-mob
#等你查到UUID后即可运行以下命令关闭
vi-cmd proxysvc/remove_service "/mob" "httpsWithRedirect"

8.用浏览器打开https://你的esxi服务器ip/mob/?moid=ha-host&doPath=hardware.systemInfo 输入root账号密码即可查到系统UUID,记下此UUID以备后用。
9.下面就是常规操作了,添加主机,监控模板,此处需注意的是需要添加五条宏,具体如下:

{$USERNAME} zabbix  #这里是你创建的只读用户名
{$PASSWORD} YOUR_PASSWORD  #这里是你创建的只读用户名的密码
{$URL}      https://你的esxi服务器ip/sdk
{$UUID}     你刚才查到的UUID
{$SNMP_COMMUNITY}     public

10.至此vmware的监控就完成了,在实施过程中就被上面提到的三个报错坑了四天,原来没想到是没装JQ,还想着自己去修改脚本把get到的字符串转换成数值呢。
最后再聊聊我前面放的效果图,这是利用Grafana读zabbix数据做的Dashboard,是不是挺有逼格的,现在Grafana我玩得还不溜,等玩溜了再写一篇分享给大家。
最后感谢大家的阅读,下面我准备开始研究SQL的监控,软件的同事对SQL性能还是挺关心的。

你可能感兴趣的:(利用zabbix监控Vmware运行)