Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

转:https://blog.csdn.net/reblue520/article/details/82720183#

简介
为了解ESXI虚拟主机的运行状况,通过zabbix进行监控,图形展示ESXI虚拟主机当前的状态,避免因为esxi服务器因为资源利用率过高导致

概述
从 Zabbix 2.2.0 开始支持对 VMware 的监控。

Zabbix 可以使用 low-level discovery 自动发现 VMware hypervisors 和 虚拟机,并根据事先定义的主机原型,为这些虚拟机建立 Host,添加监控。

Zabbix 中默认提供了几个模板,可以直接用来监控 VMware vCenter 或 ESX hypervisor,支持 VMware vCenter 或 vSphere 版本最低为 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 性能统计信息只有数据存储,网络接口和磁盘设备统计信息和自定义性能计数器项。

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

整体步骤:

1.修改服务端的zabbix_server.conf文件打开对vmware监控的支持
2.在vcenter的机器上添加zabbixmonitor只读用户作为监控专用账户
3.服务端添加vcenter的监控模板和宏

说明:vcenter服务端不需要安装zabbix_agent客户端

准备

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

1.调整虚拟机监控:

# zabbix服务端操作

 

#修改配置文件 egrep -v '^$|^#' etc/zabbix_server.conf

StartPollers=15

StartTrappers=15

StartVMwareCollectors=10

VMwareFrequency=30

VMwarePerfFrequency=60

VMwareCacheSize=160M

VMwareTimeout=300

 

其中: 

StartVMwareCollectors:vmware 收集器实例的数量。 

此值取决于要监控的 VMware 服务的数量。在大多数情况下,这应该是: 

servicenum < StartVMwareCollectors < (servicenum * 2)

其中 servicenum 是 VMware 服务的数量。例如:如果您有 1 个 VMware 服务要将 StartVMwareCollectors 设置为 2,那么如果您有 3 个 VMware 服务,请将其设置为 5。请注意,在大多数情况下,此值不应小于 2,不应大于 VMware 数量的 2 倍服务。 

VMwareCacheSize:VMwareFrequency=10。 

用于存储VMware数据的共享内存大小。 

VMwareFrequency:从单个VMware服务收集数据之间的延迟(秒)。 

VMwarePerfFrequency:从单个VMware服务检索性能计数器统计信息之间的延迟(秒)。 

VMwareTimeout:响应超时时间

# 重启zabbix的服务端

# /etc/init.d/zabbix_server restart

查看启动日志

 

# 重启服务端,观察日志,发现VMware monitoring:         YES说明开启成功

 12584:20180902:232254.601 ****** Enabled features ******

 12584:20180902:232254.601 SNMP monitoring:           YES

 12584:20180902:232254.601 IPMI monitoring:            NO

 12584:20180902:232254.601 Web monitoring:            YES

 12584:20180902:232254.601 VMware monitoring:         YES

 12584:20180902:232254.601 SMTP authentication:       YES

 12584:20180902:232254.601 Jabber notifications:       NO

 12584:20180902:232254.601 Ez Texting notifications:  YES

 12584:20180902:232254.601 ODBC:                       NO

 12584:20180902:232254.601 SSH2 support:               NO

 12584:20180902:232254.601 IPv6 support:               NO

 12584:20180902:232254.601 TLS support:                NO

 

 

配置

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

 

1.添加主机

“主机”页面只需填写“主机名称”、“可见的名称”即可,“agent代理程序的接口”需要写 443

很多文档都说填写port为80,这个是错误的,需要填写443

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

2.添加模板

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

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

3.设置宏

{$PASSWORD} => zabbixmonitor

{$URL} => https://192.168.254.69/sdk

{$USERNAME} => zabbixmonitor

 

{$URL} - VMware 服务 (vCenter or ESX hypervisor) SDK URL (https://servername/sdk).

{$USERNAME} - VMware 服务用户名

{$PASSWORD} - VMware 服务{$ USERNAME}用户密码

 

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

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

ssh登录vcenter服务器,添加一个普通用户,并将这个用户添加到vcenter的只读组中

# 添加只读用户

[[email protected]:/usr/local/zabbix-3.2.0]# ssh -p22 192.168.254.69

VMware vCenter Server Appliance 6.5.0.10000

Type: vCenter Server with an embedded Platform Services Controller

[email protected]'s password:

Last login: Mon Sep  3 14:32:44 2018 from 192.168.254.148

Connected to service

            * List APIs: "help api list"

            * List Plugins: "help pi list"

            * Launch BASH: "shell"

 

Command> shell

Shell access is granted to root

[email protected] [ ~ ]#

 

# 添加zabbixmonitor用户

[email protected] [ ~ ]# useradd zabbixmonitor

[email protected] [ ~ ]# echo 'zabbixmonitor' | passwd --stdin zabbixmonitor

[email protected] [ ~ ]# passwd zabbixmonitor

 

[email protected] [ ~ ]# tail -n 1 /etc/passwd

zabbixmonitor:x:1020:100::/home/zabbixmonitor:/bin/appliancesh

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)可以Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

访问需要调用的接口https://192.168.254.69/mob

输入刚才的只读用户账号秘密zabbixmonitor

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

自动发现vmware终端机器需要关闭,因为我们已经像监控物理机一样添加了vmware终端机器

已经自动添加的需要删除

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

自动发现一段时间,如果觉得慢可以改一下自动发现的时间(不建议,会浪费大量服务器性能)

自动发现的集群

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

启动发现的exsi

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

添加图形展示cpu的使用情况
网络使用情况
Cpu的使用率
Configuration-->Templates-->Template Virt VMware Hypervisor-->items-->create item
name:
hypervisor_cpu_used_percent
type:
Calculated #计算类型
key:
vmware.hv.cpu[usedpercent]
Formula:
100*last("vmware.hv.cpu.usage[{$URL},{HOST.HOST}]")/(last("vmware.hv.hw.cpu.freq[{$URL},{HOST.HOST}]")*last("vmware.hv.hw.cpu.num[{$URL},{HOST.HOST}]"))
Applications:
CPU

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

 

添加触发器,当cpu使用率大于60%时触发报警

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)


内存使用率的监控
内存使用率

1.创建item

Configuration-->Templates-->Template Virt VMware Hypervisor-->items-->create item

name:

hypervisor_cpu_used_percent

type:

Calculated #计算类型

key:

vmware.hv.memory[usedpercent]

Formula:

100*last("vmware.hv.memory.used[{$URL},{HOST.HOST}]")/last("vmware.hv.hw.memory[{$URL},{HOST.HOST}]")

Applications:

memory

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)

内存使用率超过85%报警

Zabbix4.2 监控 VMare Vcenter (zabbix4.2已测试成功)