为了账号安全,请及时绑定邮箱和手机立即绑定

利用zabbix监控Vmware运行

标签:
Python

https://img1.sycdn.imooc.com//5d308d0c0001780a07200366.jpg

效果图

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

CPU存储内存设备信息常规信息网络VMS
总频率总容量总容量型号OS版本流量OS版本
使用量使用量使用量BIOS UUIDUptime广播电源
使用%使用%使用%CPU参数虚机数量组播vm state

IOPS回收量生产厂商up/downMAC地址

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 typeItem 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配置文件并用以下内容替换原内容,保险起见请在修改器备份该文件。<?xml version="1.0" encoding="ISO-8859-1"?><config>
    <snmpSettings>
        <enable>true</enable>
        <port>161</port>
        <syscontact></syscontact>
        <syslocation></syslocation>
        <EnvEventSource>indications</EnvEventSource>
        <communities>public</communities>
        <loglevel>info</loglevel>
        <authProtocol></authProtocol>
        <privProtocol></privProtocol>
    </snmpSettings></config>  #保存退出后即可在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性能还是挺关心的。


作者:max的vlog
链接:https://www.jianshu.com/p/2767fc363944


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消