第十一章 VMware 监控
随着虚拟化技术应用的越来越广泛,Zabbix作为基础架构的监控系统,也可以很好的支持基于VMware的虚拟化平台及虚拟机进行监控。通过在Zabbix中预先定义的host prototypes(主机原型)利用low-level discovery rules会自动发现VMware hypervisors和虚拟机,并创建主机对它们进行监控。
在Zabbix中对虚拟机的监控分两步完成,首先,通过vmwarecollector实例收集虚拟机数据,这些实例使用SOAP协议从VMware web services收集需要的信息并进行处理后保存到Zabbixserver的共享内存中,然后pollers使用Zabbix simple check接收这些数据。
支持的VMware vCenter 或 vSphere 的最低版本是v4.1。
11.1 配置准备
在监控VMware之前,要确保Zabbix server支持libxml2(用来解析调用SOAP接口返回的XML)和libcurl(用来调用vCenter的SOAP接口)。如果不支持,Zabbix server启动时会报错:cannotstart vmware collector because Zabbix server is built without VMware support。因此,你如果使用源码安装Zabbix时需要加上 –with-libxml2 和–with-libcurl 这两个参数。
另外,我们需要修改Zabbix server的配置文件 /etc/zabbix/zabbix_server.conf中有关VMware监控的参数,主要有以下几个:
- StartVMwareCollectors:VMware collector 实例的数量,默认为0,取值范围:0-250。此值取决于你需要监控的VMware 服务的数量。一般情况下servicenum < StartVMwareCollectors < (servicenum * 2),其中servicenum时VMware服务的数量。
- VMwareFrequency:连接到VMware服务收集一个新数据的频率,默认为60秒,取值范围:10-86400。
- VMwarePerfFrequency:连接到VMware服务收集性能数据的频率,默认为60秒,取值范围10-86400。
- VMwareCacheSize:用于存储VMware 数据的缓存容量,默认为8M,取值范围:256K-2G。
- VMwareTimeout:VMware collector 等待VMware 服务响应的时间,默认为10秒,取值范围:1-300。
完成相关参数的配置后,记住一定要重启Zabbix server。
你可能注意到VMwareFrequency和VMwarePerfFrequency这两个参数虽然都是定义收集数据的频率,但两者是有一些区别的。Zabbix从2.4.4版本开始,从VMware收集的数据分为两类:VMwareconfiguration data(配置数据)和VMwareperformance counter data(性能计数器统计数据),它们都是通过VMware collector收集,因此建议VMwarecollector的数量大于VMware 服务的数量,否则会因为VMware configuration data不能及时更新而导致VMware performance counter data的延迟收集。
11.2 预设模板
在Zabbix中已经提供了几个可以直接使用的监控VMwarevCenter 或 ESX hypervisor的模板,这些模板包含预先定义好的low-level discovery rules。
Template Virt VMware模板会在监控VMwarevCenter和ESX hypervisor时使用,Template Virt VMware Hypervisor 和 Template Virt VMware Guest主要在discovery中使用,在host上不用手工链接这两个模板。如下图11-1所示。
图 11-1
如果你从Zabbix 2.2或更早的版本升级到3.0版本时,需要从官网下载模板并手工导入。因这些模板都依赖VMware VirtualMachinePowerState 和 VMware status的value maps(值映射),所以你需要先手工建立或从XML导入,也可以使用SQL脚本(http://www.zabbix.org/wiki/Zabbix_Templates/SQLs_for_Official_Templates)建立这些值映射,然后在导入这些模板。
11.3 创建VMware Host
创建host之前,登录vCenter,确认服务正常运行。然后在Zabbix前端页面点击Configuration--> Hosts,在Hosts页面右上角点击Create host按钮,在主机配置页面完成以下配置:
1、 点击Host标签,在配置页面中输入Host name和Visible name,选择相应的group。如下图11-2所示。
图 11-2
2、 Agent Interface中IP ADDRESS中输入vCenter服务器的地址,收集数据时不使用这个地址,在这里设置的目的只是方便管理。
3、 点击Templates标签,在配置页面中添加TemplateVirt VMware模板。如下图11-3所示。
图 11-3
4、 点击Macros标签,在配置页面中添加主机宏变量。如下图所示,主要有3个,分别是:
- {$USERNAME}:VMware 用户名。
- {$PASSWORD}:VMware 用户密码。
- {$URL}:VMware 服务(vCenter或ESX hypervisor)SDK URL,例如https://servername/sdk。如下图11-4所示。
图 11-4
5、 点击Add按钮保存配置。
VMware host创建完成后,Zabbix通过SDK接口访问VMware vCenter并收集所有信息,通过Template Virt VMware模板中配置的发现规则DiscoverVMware hypervisors和Discover VMwareVMs发现相应的hypervisor和VM(虚拟机)。
在Discover VMware hypervisors发现规则中,定义了一个Host prototypes(主机原型),并在该主机原型中链接了Template Virt VMware Hypervisor模板。在Discover VMware VMs发现规则中,定义了一个Hostprototypes(主机原型),并在该主机原型中链接了TemplateVirt VMware Guest模板。当发现hypervisor或虚拟机时,这些主机原型会变成真正的host。定义的主机原型如下图11-5所示。
图 11-5
在Discovery rules中默认配置的Updateinterval 为3600秒,因此在创建VMware host 一个小时之后运行这些发现规则,发现并创建hypervisor和VM 主机。在Monitoring --> Latest data页面中通过hypervisor或cluster过滤浏览相应的信息。
如果遇到问题,我们可以通过VMware collector的Extended debug模式(debug level 5)获得详细的收集数据。需要修改Zabbixserver的配置文件设置debug level,或者使用参数-R log_level_increase="vmware collector,N",N 是进程的编号。一起来看看下面的例子。
假设已经设置debug level为4,设置所有VMware collector进程的debug level为5:
# zabbix_server -R log_level_increase="vmware collector"
设置第二个VMware collector进程的debug level为5:
# zabbix_server -R log_level_increase="vmware collector,2"
不需要对VMware collector的数据做Extendeddebug时,可以使用参数 -Rlog_level_decrease选项。