可以用的ip代理技巧!运维监控之Zabbix监控VMwareESXI虚拟主机

导语

从 Zabbix 2.4.4 开始,可以用的ip代理收集的数据分为两种类型:VMware 配置数据和 VMware 性能数据。这两种类型都由 vmware collectors 进程独立收集。因此,建议启用比受监控的 VMware 服务更多的收集器;

需求

生产环境常使用 vSphere 虚拟化,其底层通过 VMware ESXi 控制访问。为了解 ESXI 虚拟主机的运行状况,需要通过 Zabbix 进行监控并图形化展示虚拟主机当前的运行状态。

https://www.zabbix.com/documentation/3.4/zh/manual/vm_monitoring

Zabbix 虚拟机监控

通过 Zabbix 官方关于“虚拟机监控”的介绍,我们了解到:

Zabbix 从 2.2.0 版本开始支持对 VMware 的监控;Zabbix 可以使用 low-level discovery 自动发现 VMware hypervisors 和 虚拟机,并根据事先定义的主机原型,为这些虚拟机建立 Host,添加监控;Zabbix 中默认提供了几个模板,可以直接用来监控 VMware vCenter 或 ESX hypervisor;Zabbix 支持 VMware vCenter 或 vSphere 可以用的ip代理版本最低为 4.1;

细节

虚拟机监控分两个步骤完成:

Zabbix 是通过 vmware collector 进程来监控虚拟机。这些进程通过 SOAP 协议从 VMware Web 服务获取必要的信息,对其进行预处理并存储到 Zabbix server 共享内存中;Zabbix pollers 通过 zabbix 简单检查 VMware keys 来检索这些数据;

从 Zabbix 2.4.4 开始,收集的数据分为两种类型:VMware 配置数据和 VMware 性能数据。这两种类型都由 vmware collectors 进程独立收集。因此,建议启用比受监控的 VMware 服务更多的收集器;

否则,检索 VMware 性能统计信息可能会由于检索 VMware 配置数据而延迟(比较大型的环境,需要一段时间)。

目前基于 VMware 性能统计信息只有数据存储,网络接口和磁盘可以用的ip代理设备统计信息和自定义性能计数器项。

注意:由于监控进程使用 soap 协议获取虚拟机信息,直接通过 ,返回 404 是正常现象。

准备工作

要使虚拟机监控正常工作,编译 Zabbix 时应加上 --with-libxml2 和 --with-libcurl 编译选项。

1.调整虚拟机监控:

#修改配置文件 vim zabbix_server.confStartVMwareCollectors=6VMwareCacheSize=50MVMwareFrequency=10VMwarePerfFrequency=60VMwareTimeout=300

其中:

StartVMwareCollectorsvmware 收集器实例的数量;此值取决于要监控的 VMware 服务的数量。在大多数情况下,这应该是:servicenum < StartVMwareCollectors < (servicenum * 2)其中 servicenum 是 VMware 服务的数量。例如:如果您有 1 个 VMware 服务要将 StartVMwareCollectors 设置为 2,那么如果您有 3 个 VMware 服务,请将其设置为 5。请注意,在大多数情况下,此值不应小于 2,不应大于 VMware 数量的 2 倍服务。VMwareCacheSizeVMwareFrequency=10,用于存储 VMware 数据的共享内存大小;VMwareFrequency从单个 VMware 服可以用的ip代理务收集数据之间的延迟(秒);VMwarePerfFrequency从单个 VMware 服务检索性能计数器统计信息之间的延迟(秒);VMwareTimeout响应超时时间;

2.重启

1.重启 systemctl restart zabbix_server# 2.查看启动日志 19995::.023 Starting Zabbix Server. Zabbix 3.4.7 (revision 77720). 19995::.023 ****** Enabled features ****** 19995::.023 SNMP monitoring: YES 19995::.023 IPMI monitoring: NO 19995::.023 Web monitoring: YES 19995::.023 VMware monitoring: YES 19995::.023 SMTP authentication: YES 19995::.023 Jabber notifications: NO 19995::.023 Ez Texting notifications: YES 19995::.023 ODBC: NO 19995::.023 SSH2 support: NO 19995::.023 IPv6 support: NO 19995::.023 TLS support: NO 19995::.023 ******************************

其中 VMware monitoring 状态为 YES,说明 zabbix server 启动 vmware 监控。

具体实现

Zabbix 中默认提供了几个模板,可以直接用来监控 VMware vCenter 或 ESX hypervisor。由于我们的 ESXI 主机使用 vCenter 集中管理,因此使用 Zabbix 监控 vCenter。

1.添加主机

我们需要将 vCenter 作为主机进行添加,因为虚拟化集群、主机、虚拟机资源都来源于 vCenter。

其中:

“主机”页面只需填写“主机名称”、“可见的名称”即可;“agent 代理程序的接口”使用默认即可,没有任何作用;

2.添加模板

在添加的 vCenter 主机中绑定相应的模板,其中:

“模板”页可以用的ip代理面只需添加“Template VM VMware”即可;“Template VM VMware”模板应用于 VMware vCenter 和 ESX hypervisor 监控;“Template VM VMware Guest”和“Template VM VMware Hypervisor”模板由自动发现使用,通常设置为自动链接到虚拟机主机;

3.设置宏

由于 Zabbix 监控进程使用特定的 soap 协议获取虚拟机信息,因此我们需要通过宏来进行设置。

其中:

{$URL}:VMware 服务 (vCenter or ESX hypervisor) SDK URL (;{$USERNAME}:VMware 服务用户名;{$PASSWORD}:VMware 服务{$ USERNAME}用户密码;

注意:安全起见,在 vCenter 上只需为 zabbix 添加一个只读用户即可。

4.监测最新数据

(1)查看 vCenter 的最新数据

等待默认的检查间隔后,我们即可在最新数据中观察到以下虚拟化信息:

集群健康状态,“green”表示健康;“red”表示不健康;Full name;Version 等信息;

(2)查看自动发现的主机及虚拟机

再等待自动发现的检查间隔后,可以用的ip代理我们会发现在“配置”-“主机群组”页面多了几个自动发现的群组,就是我们整个 vmware 集群中所有虚拟主机及虚拟机,其中:

unicom-ha 和 unicom-idc 是虚拟主机;unicom-ha(vm)和 unicom-idc(vm)是所有的虚拟机;

5.添加图形

由于除了监测最新数据,发现相关图形监控较少,因此我们针对虚拟主机 CPU、内存等参数添加图形。

通过查看自动发现的虚拟主机,可发现:

虚拟主机使用的是“Template VM VMware Hypervisor”模板;虚拟机的使用的是“Template VM VMware Guest”模板;

在此以添加虚拟主机图形为例。

(1)cpu unitlization

其中:

cpu cores 24:cpu 核数;cpu frequency 2.2GHz: cpu 主频;cpu thread 48:cpu 线程,从此可看出为超线程;cpu usage 25GHZ: cpu 使用情况;

通过以上数值可计算:25/(24*2.2)=47.3%,则 cpu 使用率为 47.3%。

注意:计算时以 cpu 核数为准,不要以可以用的ip代理超线程的数量为准。

(2)Number of bytes received/transmitted/vms

其中:

Number of bytes received:收到的字节数;Number of bytes transmitted:发出的字节数;Number of bytes vms:虚拟主机中包含的虚拟机数量;

我们可根据实际情况手动添加相应的监控图形。

6.添加触发器

当自动发现所有的虚拟主机和虚拟机后,我们发现涉及的 3 个模板只有监控项,而且没有触发器。

我们可在“Template VM VMware Hypervisor”模板中手动按需添加触发器。

(1)监控虚拟主机状态

对虚拟主机健康状态添加触发器。

(2)监控虚拟主机 cpu

对虚拟主机的 cpu 使用情况,添加相应的触发器。

总结

通过以上设置,整个 vSphere 虚拟化集群的健康状态及运行状态就可以被 Zabbix 监控纳管,以便我们及时发现问题。

另外,除了上面介绍的修改服务端实现对整个 vcenter 或单台 esxi 主机进行监控,还可以使用通过 SNMP 和 ESXI 主机来进行监控,需要修改 esxi 主机本身的配置。

不过不是很建议使用此方法,容易对本级本身造成不安全的因素。第一种方法是 zabbix3.x 以后的最新版本常用的,比较方便快捷,建议使用此种方式。