本系列文章介绍了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 下虚拟化平台分组名称。
- 首先宏观分 3 大类, Vmware 平台、 ESXI 主机和 WM 虚拟机
Zabbix 创建主机组的命名规范:用于添加 Vmware Vcenter 的组
如果确实存在 Vmware ESXI 未加入到 Vmware Vcenter 中,视 ESXI 为一个平台。如果 Vmware ESXI 已经加入到 Vmware Vcenter 中,就不要单独监控了,只监控 Vmware Vcenter 即可。
Zabbix 创建主机组的命名规范:用于自动发现 ESXI 主机时,添加所有 ESXI 主机
Zabbix 创建主机组的命名规范:用于自动发现 WM 虚拟机时,添加所有 WM 虚拟机
2.细分在某一 Vmware Vcenter 下进行分组, WM 虚拟机组有:数据中心( Vmware Vcenter )、群集与主机。
为了使 Vmware Vcenter 数据中心,虚拟机方便管理审阅,规范 Vmware 下虚拟化平台分组名称。
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
注意:表达式多种多样,但有的并不一定能实现。
- 经研究,虚拟机触发器可告警项较少,构建出发器也是可行,但总会与 agent 监控重复,效果并不理想,以上只做参考。比如 C 、 D 盘使用率监控, CPU ,内存使用率,而且有时候虚拟机不安装 VMware tools 工具下监控不到 C 盘(如果是 linux 系统则是目录),因此,针对虚拟机电源有必要监控告警,其他项不再深入研究。
- CPU ready time CPU 就绪时间
关键重要指标,如果此值大于 2000ms 或是 2s ,说明 CPU 性能不足,需要关注。可以通过 ssh 到 ESXI 主机上使用 esxtop 命令查看。此处实践配置成 10 个周期内的均值 3000ms 告警。
虚拟机设置 CPU 核心数,如果 ESXI 主机 CPU 核心数较少, VM 设置的过多,会造成 VM 虚拟机直接抢占 CPU 资源造成, CPU ready time 值偏高,所以说虚拟机 CPU 核心数设置的并不是越多越好,只要满足计算量即可。
- 内存触发器
重要关键指标:共享内存大小、气球内存大小、交换内存大小、压缩内存大小。
内存资源严重性逐步提高。共享、气球内存是 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 邮箱代理。
总结:经过对上述两种方式实践,第一种方式邮件容易被识别为垃圾邮件遭过滤,公司目前有企业邮箱,可以开通名为 [email protected] 账号做为外部邮箱发送告警信息,考虑到移动平台应用支撑,运维人员使用有移动终端的邮箱,综上建议部署第二种外部邮箱的方式。
详细配置参考链接:
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 下配置
本例中使用发送告警邮件的账号为 [email protected] ,移动 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}