头图

image

本系列文章介绍了zabbix 基本概念及其特点,阐述 zabbix 系统环境搭建与基础安装,如何实现对各类操作系统、硬件设备、应用软件监控告警。本文为系列第三篇。前文点此:系统学习 Zabbix 系统监控(一)系统学习 Zabbix 系统监控(二)

8 Vmware 虚拟平台监控

阅读 zabbix 官方文档,官方提供了 Vmware 虚拟机监控模板,并对模板进行了解释说明,但未对相应名词做解释,如果不了解 Vmware 组件,可能对出现的名词不容易理解。

官方监控虚拟机相关文档 URL :

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

https://www.zabbix.com/documentation/3.4/zh/manual/config/items/itemtypes/simple_checks/vmware_keys

重要信息说明:

VMware vCenter :VMware 平台用于管理的服务端,管理群集、主机、虚拟机、存储等。

VMware hypervisors :主机,安装了 ESXI 软件的服务器。

Template VM VMware“ 模板应用于 VMware vCenter 和 VMware hypervisors 监控。

Template VM VMware Hypervisor 和 Template VM VMware Guest 模板由自动发现使用,通常设置为自动链接到主机。

low-level discovery 规则自动发现 VMware hypervisors 和虚拟机, LDD 就是自动发现。

采用官方提供的监控模板流程是这样实现的,首先建立监控主机,可以监控的对象是 VMware vCenter 虚拟化平台或者是 ESXI 主机,链接 Template VM VMware 模板,等待 zabbix server 服务自动发现,而后对群集、主机、虚拟机等进行监控。

有一节单讲组配置,制定 VMware 下群集、主机、虚拟机、存储等命名规范。

8.1 自发现模板配置

主要通过创建主机 VMware vCenter 和 ESXI ,连接 Template VM VMware 模板,进行自发现获取群集、主机、虚拟机、存储等信息。

8.1.1 创建主机

此处创建主机为 Vmware Vcenter 平台,配置如下:

主机名称:IP 地址

端口 默认使用:80

主机组 命名为:Vmware 平台 Center 数据中心组

宏配置:

{$PASSWORD} 密码

{$URL} https://IP 地址 /sdk

{$USERNAME} 账号

模板:Template VM VMware ( zabbix 自带模板)

8.1.2 数据验证

在配置 -- 主机中查看是否已有虚拟机自生成,在最新数据 -- 查看是否有最新数据,这样就实现了 Vmware 平台上的数据监控,但平台分组不易读,还要制定分组命名规范。

8.2 制定分组命名规范

为了使 zabbix 平台 Vmware 分组分类整洁明了,方便管理审阅,规范 zabbix 下虚拟化平台分组名称。

  1. 首先宏观分 3 大类, Vmware 平台、 ESXI 主机和 WM 虚拟机

Zabbix 创建主机组的命名规范:用于添加 Vmware Vcenter 的组

image
注:

如果确实存在 Vmware ESXI 未加入到 Vmware Vcenter 中,视 ESXI 为一个平台。如果 Vmware ESXI 已经加入到 Vmware Vcenter 中,就不要单独监控了,只监控 Vmware Vcenter 即可。

Zabbix 创建主机组的命名规范:用于自动发现 ESXI 主机时,添加所有 ESXI 主机
image

Zabbix 创建主机组的命名规范:用于自动发现 WM 虚拟机时,添加所有 WM 虚拟机
image

2.细分在某一 Vmware Vcenter 下进行分组, WM 虚拟机组有:数据中心( Vmware Vcenter )、群集与主机。
image

  1. 细分在某一 Vmware Vcenter 下进行分组, ESXI 主机组有:数据中心( Vmware Vcenter )与群集。image

为了使 Vmware Vcenter 数据中心,虚拟机方便管理审阅,规范 Vmware 下虚拟化平台分组名称。

命名规范:
image

8.3 规范模板中组的命名

Template VM VMware 模板修改,需要修改 Vmware 自动发现主机与自动发现虚拟机的主机模板。

8.3.1 Vmware 自动发现主机

根据 8.2 节, zabbix 命名规范,修改组模板的两项:

1 、 Wmare 主机组 群集 Cluster :{#CLUSTER.NAME}

2 、 Wmare 主机组 数据中心 DateCenter :{#DATACENTER.NAME}

说明:1 是群集组分组, 2 是数据中心分组,此组下均为 ESXI 主机信息

要先创建 zabbix 主机组:Vmware 平台 Center 数据中心组,才能在此处的 “ 群组 ” 中添加。

说明:包括所有 ESXI 主机,跨数据中心。

8.3.2 Vmware 自动发现虚拟机

根据 8.2 节, zabbix 命名规范,修改组模板的三项:

1 、 Vmware 虚拟机组 群集 Cluster :{#CLUSTER.NAME}

2 、 Vmware 虚拟机组 数据中心 Datecenter :{#DATACENTER.NAME}

3 、 Vmware 虚拟机组 主机 ESXI :{#HV.NAME}

要先创建 zabbix 主机组:Vmware 平台 VM 虚拟机组,才能在此处的 “ 群组 ” 中添加。

说明:包括所有虚拟机,跨数据中心。

8.3.3 对模板进行汉化

Template VM VMware 、 Template VM VMware Hypervisor 、 Template VM VMware Guest

8.4 创建触发器

Zabbix 自带 Vmware 监控模板无触发器配置,需要自研配置触发器,且能配置触发器项较少,尽量依靠部署 agent 进行全面监控告警。简而言之,此触发器告警是宏观上的,为虚拟平台整体状态告警,不能详尽描述虚拟机某一指标。

但有几个关键性指标,在 OS 下体现不出来,需要在 VMware 平台上做监控:如 CPU ready time 、内存 ballon 、 swap 等,依次要判断 VM 运行情况。

8.4.1 ESXI 主机触发器

1 、VMware ESXI 主机运行状况

配置如下图:

2 、VMware 虚拟传感器运行状况

配置如下图:

3 、主机不通,获取不到数据

在主机是关机或网络不通状态下,那肯定获取不到某一监控项。可使用 5 分钟内获取不到数据判断为主机不通。

在主机是在开机状态下,已经死机, CPU 、内存某些监控项,数据是否恒为定值不确定,是停留某个值还是归为 0 ,要以此为参考依据建立触发器,目前死机状态值未获取到,此项触发器无法建立。只能提供思路。

名称:主机不通,获取不到数据:{HOST.NAME}

表达式:{Template VM VMware Hypervisor:vmware.hv.cpu.usage[{$URL},{HOST.HOST}].nodata(5m)}=1

4 、主机产生 balloon 内存

Balloon 产生会在某种程度上说明:内存资源不足。此情况发生在,需要 vm kernel 调度其他 VM 虚拟机上空闲的内存资源,给内存不足的 VM 虚拟机。

此具体问题需要分析,目前此量值无法在实践中确定,首先进行提升信息,再根据 VM 或是 ESXI 主机内存资源情况进行合理判断。

8.4.2 VM 虚拟机触发器

可配置触发器较少,对于虚拟机监控告警,只是辅助告警,尽量依靠部署 agent ,因此,重点关注 2 虚拟机电源关闭 触发器。

创建 磁盘使用率 触发器, C 、 D 、 E 等磁盘剩余空间不足 10% 告警。

说明:此处监控针对 windows 系统,创建该触发器必然与 agent 监控告警重复,建议关闭此处触发器。(也可以创建使用空间超过 90% ,依赖关系 99% 提升告警级别)

创建触发器:

名称:磁盘剩余空间不足 10% :on {#FSNAME}

表达式:{Template VM VMware Guest:vmware.vm.vfs.fs.size[{$URL},{HOST.HOST},{#FSNAME},pfree].last()}<10

允许手动关闭

效果截图:

创建 虚拟机电源状态翻转的触发器,当关闭虚拟机时,提示信息 “ 虚拟机电源关闭 ” ,当虚拟机重新打开电源时,恢复表达式。因虚拟机电源开关可控,有可能存在误关机操作。虚拟机开启不做告警。

创建触发器:

名称:虚拟机电源关闭:{HOST.NAME}

问题表现形式:{Template VM VMware Guest:vmware.vm.powerstate[{$URL},{HOST.HOST}].abschange()}=1

恢复表达式:{Template VM VMware Guest:vmware.vm.powerstate[{$URL},{HOST.HOST}].last()}<>0

注意:表达式多种多样,但有的并不一定能实现。

  1. 经研究,虚拟机触发器可告警项较少,构建出发器也是可行,但总会与 agent 监控重复,效果并不理想,以上只做参考。比如 C 、 D 盘使用率监控, CPU ,内存使用率,而且有时候虚拟机不安装 VMware tools 工具下监控不到 C 盘(如果是 linux 系统则是目录),因此,针对虚拟机电源有必要监控告警,其他项不再深入研究。
  2. CPU ready time CPU 就绪时间

关键重要指标,如果此值大于 2000ms 或是 2s ,说明 CPU 性能不足,需要关注。可以通过 ssh 到 ESXI 主机上使用 esxtop 命令查看。此处实践配置成 10 个周期内的均值 3000ms 告警。

虚拟机设置 CPU 核心数,如果 ESXI 主机 CPU 核心数较少, VM 设置的过多,会造成 VM 虚拟机直接抢占 CPU 资源造成, CPU ready time 值偏高,所以说虚拟机 CPU 核心数设置的并不是越多越好,只要满足计算量即可。

  1. 内存触发器

重要关键指标:共享内存大小、气球内存大小、交换内存大小、压缩内存大小。

内存资源严重性逐步提高。共享、气球内存是 VM 合理利用内存的方式,避免:交换内存、压缩内存的产生。

共享内存大小:

气球内存大小:

交换内存大小:

压缩内存大小:

8.4.3 Cluster 群集触发器

监控群集整体状态

表达式:{Template VM VMware:vmware.cluster.status[{$URL},{#CLUSTER.NAME}].last()}>1

名称:群集状态异常:{HOST.NAME

9 邮件告警

主要介绍通过邮件实现告警,当然告警的方式还有短信(需要短信猫)、企业微信、钉钉等。

E-mail 邮件告警配置有两种方式:

1 、 zabbix-server 服务器开启 sendmail 或者 postfix 服务, linux 系统默认安装好了邮件发送工具 mail ,利用该服务直接将告警信息通过 E-mail 发送到运维工程师的电子邮箱。

2 、 zabbix-server 使用外部邮箱账户发送告警信息到运维工程师的电子邮箱,类似 outlook 、 foxmail 邮箱代理。

总结:经过对上述两种方式实践,第一种方式邮件容易被识别为垃圾邮件遭过滤,公司目前有企业邮箱,可以开通名为 zabbix@XXXX.com 账号做为外部邮箱发送告警信息,考虑到移动平台应用支撑,运维人员使用有移动终端的邮箱,综上建议部署第二种外部邮箱的方式。

详细配置参考链接:

https://www.osyunwei.com/archives/8113.html

http://www.ttlsa.com/zabbix/zabbix-media-email/

https://www.cnblogs.com/nice1163/articles/11123423.html

9.1 第一种方式

9.1.1 zabbix linux 下配置

1 、开启服务 sendmail 与 postfix 只开一个、 DNS 服务,并加入开机启动。

2 、修改主机名

3 、mail 发邮件测试

报错,根据提示解决报错问题,

未报错,邮箱不能收到邮件可能被邮箱服务器屏蔽掉了, 139 邮箱收不到信息,

未报错,邮箱能收到邮件说明发送正常。

9.1.2 zabbix 界面配置

1 、设定发送 mail 途径

管理》报警媒介类型》 Email ,配置截图如下:

说明:SMTP 服务器就是 zabbix-server 服务器,地址是 192.168.1.2 , DY-zabbix 是 zabbix-server 服务器的主机名, linux 下执行 hostname 命令查看, 1.2.1 节已配置好了。为啥要这样配置,因为 zabbix 要利用 linux 下的 sendmail 工具发送邮件。

2 、设定收件人

界面右上角,点进去,报警媒介,添加收件人地址。

3 、设定告警动作

配置》动作》创建动作》动作、操作、恢复操作、确认操作,根据情况来设定。

详细配置,见 9.3 节。

9.1.3 验证测试

9.2 第二种方式

9.2.1 zabbix linux 下配置

本例中使用发送告警邮件的账号为 1833XXXX@139.com ,移动 139 邮箱,邮箱开启短信功能,手机就可以收到告警短信,

1 、关闭 sendmail 和 postfix 服务,重启域名服务。

2 、配置 vim /etc/mail.rc 最后一行添加

配置说明:使用 139 外部邮箱服务器

set from 邮件从该邮件发出

set smtp 配置邮件服务的 smtp 域名地址

set smtp-auth 使用这个邮箱账户发送告警信息,需要填写用户名密码。

3 、mail 发邮件测试

将 139 邮箱开启短信服务,可以将邮件以短信的发送发送至手机。

4 、配置脚本,该脚本新增了格式化输出的功能,提高了邮件的可读性。

9.2.2 zabbix 界面配置

1 、设定发送 mail 途径

管理》报警媒介类型》创建媒介类型,配置截图如下:

2 、设定收件人

界面右上角,点进去,报警媒介,添加收件人地址。

3 、设定告警动作

配置》动作》创建动作》动作、操作、恢复操作、确认操作,根据情况来设定。

详细配置,见 9.3 节。

9.2.3 验证测试

9.3 告警动作详细配置

动作功能:将告警信息以什么样的方式,什么样的内容形式发送给运维人员知晓。

界面配置示意图:动作名称是:外部邮件方式。需要创建

9.3.1 操作

默认接收人:

【故障】服务器 :{HOSTNAME1} 发生 : {TRIGGER.NAME} 故障

默认信息如:

告警主机 :{HOSTNAME1}

告警时间 :{EVENT.DATE} {EVENT.TIME}

告警等级 :{TRIGGER.SEVERITY}

告警信息 : {TRIGGER.NAME}

告警项目 :{TRIGGER.KEY1}

问题详情 :{ITEM.NAME}

事件 ID:{EVENT.ID}

操作细节

1-1 触发一次告警

步骤持续时间默认 0 为 1 小时

仅送到 选择创建的脚本名称 send_mail_script

9.3.2 恢复操作

【恢复】 服务器 :{HOSTNAME1}: {TRIGGER.NAME} 已恢复!

告警主机 :{HOSTNAME1}

告警时间 :{EVENT.DATE} {EVENT.TIME}

告警等级 :{TRIGGER.SEVERITY}

告警信息 : {TRIGGER.NAME}

告警项目 :{TRIGGER.KEY1}

问题详情 :{ITEM.NAME}

事件 ID:{EVENT.ID}

9.3.3 告警级别

严重性规则设定,可将 “ 灾难 ” 、 “ 严重 ” 信息设置为邮件发送

设置位置:

界面右上角,点进去,报警媒介,编辑。

10 微信告警

微信告警是指企业微信告警,首先要注册一个企业微信,之后完成微信告警配置(可搜索参考网上文章)。

10.1 脚本

这里提供一个优化测试好的脚本模板,以供交流

10.2 消息配置

【故障】数据中心监控平台

告警主机:{HOST.NAME}

告警信息:{TRIGGER.NAME}

告警等级:{TRIGGER.SEVERITY}

告警日期:{EVENT.DATE}

告警时间:{EVENT.TIME}

事件 ID :{EVENT.ID}


同创永益
15 声望3 粉丝

同创永益,面向未来的组织韧性服务提供商