
vCenter 7.0部署完虚拟机一台台开起来之后最容易被忽略但又最要命的一件事就是监控。我见过太多环境业务不卡到用户打爆电话根本没人想起来打开vCenter看资源水位。这套Zabbix 6.0监控vCenter 7.0的方案不绕弯子就是把vCenter里那几百个监控指标用标准模板接出来落到告警和仪表盘上让CPU、内存、存储这些数据在出问题之前先开口说话。如果你手里已经有Zabbix 6.0或者正准备上一套监控系统想把VMware虚拟化环境一起纳管这篇文章就是给你写的。整套操作不需要懂VMware API底层也不用自己写采集脚本官方模板加几个宏变量就能跑起来。新手可以照着一步步点老手可以重点看后面对采集机制和坑的说明。内容基于我实际部署过的环境整理不保证每个版本界面名称一模一样但思路和坑基本都是通的。1. 项目拆解为什么要用Zabbix 6.0盯住vCenter 7.01.1 vCenter 7.0在虚拟化架构里的位置很多人第一反应是监控虚拟机直接在ESXi上看不就行了单机看确实可以但一旦环境里有三五台以上ESXi有集群、有DRS、有vSAN、有分布式交换机ESXi自带的界面就不够看了。vCenter 7.0相当于整个vSphere环境的控制面所有主机、虚拟机、存储、网络都汇总在这一层。你监控vCenter等于一次拿到整个虚拟化环境的全局视角有多少台宿主机在过载、哪个数据存储快满了、哪台虚拟机的CPU就绪时间异常高、集群里有没有主机掉线。vCenter 7.0自身的健康状态也很重要。VCSAvCenter Server Appliance本质是个运行在Photon OS上的虚机一旦它的服务异常你连管理界面都进不去更别谈处理其他故障。所以监控对象要分成两层一层是vCenter里面的宿主机和虚拟机资源另一层是vCenter自身这个组件还活不活着、API还能不能正常响应。Zabbix这套方案两层都能覆盖。1.2 为什么选Zabbix 6.0而不是自带的vROps或者Prometheus等vCenter 7.0本身有性能图表VMware官方也有vRealize OperationsvROps这种高级监控产品为什么不直接用它原因很现实vROps单独授权不便宜而且大多数企业已经有一套Zabbix在监控物理服务器和网络设备再上一套新平台就要多养一套系统数据也容易形成孤岛。Zabbix 6.0对VMware的支持比早期版本成熟很多。它通过vCenter API拿到数据不需要在每台虚机里装Agent也能采集到虚拟机层面的指标比如CPU、内存、磁盘I/O、网络流量。如果你同时在虚机里装了Zabbix Agent那还能拿到系统内部指标两层数据叠加排障时能快速区分是宿主机的瓶颈还是虚机内部的瓶颈。这一点是SNMP方案很难做到的。Prometheus虽然也能监控vCenter但你要自己写exporter维护成本高得多。相比之下Zabbix自带模板、自带触发器和可视化开箱即用的程度最高。2. 环境盘点与前置准备把地基打牢2.1 vCenter 7.0部署与许可选择下载、安装、license那些事在做监控对接之前先确认vCenter 7.0本身是正常跑起来的状态。网上关于安装vCenter7.0下载的渠道最好别乱找第三方链接直接到VMware官方站点拿VCSA ISO安装包。VCSA的安装流程和Windows版本的vCenter不大一样它是把一套预配置好的虚拟设备部署到ESXi或Workstation类的虚拟化平台上。部署步骤大致是挂载ISO运行安装向导设置安装目标和虚拟机名称配置ESXi主机账号选择部署大小和存储位置再设置VCSA的root密码、SSO域名和NTP。整个向导走完VCSA会有一段时间在那自动执行部署等进度条跑完再重启不能中途断电。这里特别说一下vCenter 7.0 license的问题。vCenter授权和ESXi授权是分开的网上经常有人搞混。vCenter的license主要决定了你能管理多少台主机、能开哪些高级功能而ESXi license决定了每台宿主机的CPU能开多少核。部署的时候可以先输评估授权但评估窗口很短环境稍微复杂点根本不够你充分测试。我建议在正式投入生产前就把正式license落到位否则到期后vCenter虽然还能进但很多操作会开始报错比如无法再添加主机、无法执行部分管理操作。尤其线上环境别赌这个。部署完vCenter一定要先确认SSO域名和管理账号好用。默认的administratorvsphere.local用户一定别删后续Zabbix要用的监控账号最好也建在这个默认SSO域下面兼容性最稳。2.2 Zabbix 6.0服务端安装要点Zabbix 6.0服务端的具体安装方式网上有无数教程这里不重复贴满整个安装命令只讲几个关键点。第一操作系统尽量选和公司现有运维体系一致的系统比如Rocky Linux、AlmaLinux、Ubuntu Server LTS都行。Zabbix官方源会根据系统版本自动区分别装错源。装完之后如果只做内网监控不接公网告警可以不用额外开放过多端口。第二数据库选型不要过于随意。中小型环境用MySQL/MariaDB或PostgreSQL都可以但我个人在VMware监控这种场景下更推荐PostgreSQL因为Zabbix对JSON类型字段的处理、并发读写的表现在PostgreSQL上更顺一些。数据库字符集务必按官方文档设置为utf8mb4或UTF-8否则后面导入模板或中文标识容易出乱码。第三Zabbix server端的VMware采集进程要提前确认。VMware监控不是靠Zabbix Agent而是Zabbix server上跑专门的collector进程去调用vCenter API。安装完默认配置可能已经开启但如果你改了配置或者用过精简模板要检查zabbix_server.conf里的参数# 调整VMware监控相关参数 StartVMwareCollectors2 VMwareFrequency60 VMwareCacheSize64MStartVMwareCollectors在虚拟化环境建议至少开2个如果被监控对象很多可以再调大。VMwareFrequency默认60秒理论上够用但如果发现vCenter侧负载偏高或者采集数据太多导致超时可以适当拉大到120秒甚至300秒。第四Zabbix前端的时区和中文包设置好后面看图表时间线才不别扭。这些都搞定之后再用前端页面确认Zabbix server连接正常。2.3 在vCenter里创建专用监控账号这一步很多人图省事直接拿管理员账号填进Zabbix模板结果后面一排查发现是大问题。只管监控就按最小权限做这是运维的基本素养。登录vCenter的HTML5客户端在“管理”里找到“用户和组”新建一个用户比如叫zabbix-monitor密码建议用强的并且尽量避免特殊字符尤其是{、}、、#这种在URL和Zabbix宏解析里容易出事的符号。如果密码里确实带了特殊字符后面填宏时要做URL编码或者改用宏函数处理非常麻烦。建完用户找到根级vCenter对象在权限里给这个用户分配只读角色并且勾选“传播到子项”。这样它就能通过API读取数据中心、集群、宿主机、虚拟机、存储等所有信息但不能做任何修改操作。这里踩过的坑是只给了一部分虚拟机或一部分主机的权限结果Zabbix自动发现出来的只有一半资产告警全乱套。记住权限必须是根对象上传播。账号建好之后在浏览器里先验证一下是否能用REST API或登录客户端成功能登录再看下一步。这里提前把账号这关过了比后面数据一片空白时四处找原因强得多。3. 监控接入实操从模板到数据上屏3.1 模板选择与导入Zabbix 6.0的官方模板库里已经自带了VMware相关模板不需要从第三方下载。模板大类一般在“VMware”分类下主要用这几个Template VM VMware Guest用于监控虚拟机的Guest状态Template VM VMware用于监控宿主机和vCenter级别性能Template VM VMware Hypervisor监控单台ESXi主机。多数场景下把这三个都导入或者直接使用一个组合模板具体看你的前端版本。前端界面路径一般是“数据收集 → 模板 → 导入”选择官方模板文件通常是yaml格式。导入前会有一个预览界面可以勾选是否导入模板关联的触发器、仪表盘和值映射。我建议首次使用全部勾上后面再自己删减不需要的触发器。导入完成后不用急着配Host先在模板列表里搜索“VMware”把模板的链接关系看清楚。有些模板可能依赖其他模板比如链接了Template Module VMware之类的模块化模板不一起导入会导致后面主机状态异常。点击模板进去看“链接的模板”一栏缺什么补什么。3.2 主机配置与宏变量填写模板是蓝图真正干活的是Host。在Zabbix前端里“数据收集 → 主机 → 创建主机”主机名称建议和vCenter里的实际名称保持一致这样后面自动发现的宿主机和虚拟机带出来的父级名称才不乱。主机创建时不需要关联Agent接口因为VMware数据是Zabbix server通过SOAP/HTTPS协议主动拉取的。在“宏”选项卡里给这个Host定义三个核心宏宏名称示例值说明{$VMWARE.URL}https://vcsa.example.local/sdkvCenter 7.0的SDK地址注意是/sdk结尾{$VMWARE.USERNAME}zabbix-monitorvsphere.local刚才建的只读账号带SSO域名{$VMWARE.PASSWORD}你的密码账号密码特殊字符多时建议先URL编码{$VMWARE.URL}这块最容易填错。网上老教程会写IP加/sdk实际vCenter 7.0建议直接用FQDN并且最好不要跳过HTTPS。如果你vCenter的证书是自签的Zabbix server侧可能出现证书校验失败的问题后面排查部分我再详细说。宏填完在“模板”选项卡搜索并链接模板保存。此时Zabbix并不会马上弹数据第一次采集有自己的间隔周期。VMware collector首次连接会做一次全量发现时间取决于你环境里的对象数量几十台虚机大概两三分钟就能出数据几百台可能需要等更久。不要一保存就狂点“最新数据”耐心等五分钟再刷新。3.3 关联模板与数据采集验证主机保存完成后最关心的就是数据到底进来没有。先看一眼“主机”列表如果主机状态是“已启用”并且最新数据里能看到VMware的监控项那基本就通了。推荐去“监测 → 最新数据”页面筛选刚建的主机重点看几个出现得最早的指标VMware服务状态、虚拟机数量、数据中心发现等。如果这些值有数据说明Zabbix和vCenter之间的API链路是通的。再往细里验证找一台已知的虚拟机在“最新数据”里过滤出它的CPU使用率、内存使用率、磁盘读速率等指标和vCenter自带的性能图表对比一下数值不应该差太多。如果Zabbix里能看到数据但始终没有发现宿主机和虚拟机多半是自动发现规则没跑起来。到“数据收集 → 自动发现”里找到VMware相关发现规则查看最近执行的日志。发现规则默认周期比较长你可能需要手动执行一次或耐心等一个周期。数据正常后不要急着立刻给这个主机挂一堆东西先让它采个十来分钟观察采集间隔和vCenter本机负载。4. 数据建模与告警配置让监控真正干活4.1 常用监控项与关键指标解读官方模板自带的监控项非常多动辄几百个但真正常看一眼的就那几个。先说宿主机层面CPU使用率、内存使用率、CPU就绪时间、网络流量、存储I/O。其中CPU就绪时间CPU Ready是比较容易被忽视的指标它反映的是虚拟机在等待物理CPU调度的比例。这个值一旦长时间超过10%说明当前主机的CPU资源已经紧张到开始影响业务虚拟机了光看CPU使用率百分比反而不一定看得出来。虚拟机层面Guest内存的已使用和已配置量、CPU使用率、磁盘延迟、网络丢包。模板里一般都有vm.memory.size.usage这类监控项但要注意取的是vCenter视角的数值跟虚机里面的可用内存可能略有差异尤其是启用了内存过量分配的场景。想要精确的Guest内部指标还得靠Zabbix Agent。数据存储层面总容量、剩余容量、空间使用率。太多事故都是“数据存储满了导致所有虚拟机IO卡死”这类指标一定要做成醒目的触发器。可以用一张表把关键指标、含义和常见阈值整理出来放到团队文档里这里举几个我认为最优先级的监控对象关键监控项建议阈值/处理动作宿主机CPU使用率持续15分钟高于90%告警宿主机内存使用率持续15分钟高于90%告警虚拟机CPU Ready高于10%告警数据存储剩余空间低于20%告警低于10%最高级告警vCenterAPI服务状态不可用时立刻告警集群无效宿主机数大于0告警4.2 触发器和告警媒介配置模板自带触发器可以先用但阈值千万别盲目照搬。官方模板的设计目标是通用有的环境负载高常年CPU 80%也没事有的环境资源余量小70%就得提前预警。我的做法是先采集两周基线数据再根据实际业务设定阈值。创建自定义触发器时注意表达式里要写清楚触发周期。比如宿主机CPU使用率持续15分钟超过90%表达式里会有类似min(/主机名/vmware.hv.cpu.usage[$CPU],15m)90的写法。一定要加时间范围否则瞬时抖动就轰炸告警群没人受得了。告警媒介建议至少配两路邮件告警走常规工单钉钉/企业微信/飞书群的机器人告警走值班群。Zabbix 6.0有现成的webhook脚本拿官方模板改一改就能用。前端页面里“告警 → 媒介”先配置类型、接收人信息再到“用户 → 告警媒介”里给用户绑定最后在“操作”里新建动作。动作条件可以按触发器严重性分开比如灾难级通知全组并电话警告级只发值班群。我见过很多团队卡在媒介配置上收不到告警第一反应是Zabbix坏了其实90%是媒介没有绑定到用户或者动作没有启用。建议配完后直接在触发器上点测试主动触发一次确认通道通。4.3 可视化仪表盘和地图Zabbix 6.0的仪表盘比5.0好用不少支持拖拽、网格布局、图表聚合。监控vCenter我一般会建一个独立的“VMware总览”仪表盘放四类组件第一类是资源总览比如总的CPU核数、内存总量、已用比例、数据存储总容量和剩余容量用单个数字或仪表盘组件展示。第二类是宿主机健康矩阵用每个宿主机的CPU、内存、温度等指标做成图表列表。第三类是虚拟机Top榜按CPU使用率或内存使用率排序找热点非常快。第四类是告警状态列表把当前活跃告警全部列出来。地图组件可以按机房或数据中心把宿主机画成节点节点颜色和CPU负载关联。不用画太复杂把位置关系体现出来就行。生产环境出现“某台宿主机宕机导致业务受影响”时地图上一眼就能定位位置。仪表盘做出来之后记得定期看一眼不要搭完就扔在角落里吃灰。监控系统最怕的是上线时热乎了一阵后面没人看告警发出来也被当成狼来了。5. 常见问题与排查心得5.1 数据采集失败的典型原因这套方案里最常碰到的数据采集失败基本就几个原因。第一个是宏变量填错尤其是{$VMWARE.URL}没写/sdk或者用了http://导致vCenter拒绝。第二个是账号权限不对SSO用户没建在正确域名下或者没有根对象权限并传播。第三个是vCenter的证书导致SSL握手失败Zabbix server日志里会出现证书相关的报错。排查第一步永远是看日志Zabbix server的日志路径默认是/var/log/zabbix/zabbix_server.log里面会明确报是认证失败、连接失败还是超时。我建议把日志级别临时调到Debug等采集周期跑一轮再调回来。别看日志文件大关键是信息量足。用命令行验证一下API是否通也不难。在Zabbix server上执行类似请求先确认vCenter地址和账号密码本身没问题curl -k -u zabbix-monitorvsphere.local https://vcsa.example.local/sdk -H Content-Type: application/xml -d - EOF s:Envelope xmlns:shttp://schemas.xmlsoap.org/soap/envelope/ s:Body/s:Body /s:Envelope EOF如果curl能正常走通说明网络和认证链路没问题问题多半出在Zabbix侧的配置上。5.2 性能与超时问题优化虚拟化环境一大Zabbix往vCenter拉数据时会出现两个现象一是数据出现断层图表时间线上有空白段二是vCenter性能图表自身变卡。根本原因是Zabbix默认采集频率偏高对象数量多了以后API请求排队积压。解法分三步走。第一步调大StartVMwareCollectors。每个collector进程负责一部分API请求增加并发能明显改善超时。第二步调大VMwareFrequency从60秒改成120秒像磁盘IO、网络流量这类变化没那么瞬时的指标120秒完全够用。第三步把VMwareCacheSize增大让Zabbix能缓存更多VMware数据结构减少重复请求。如果环境规模真的很大上百台宿主机、上千台虚拟机就要考虑用Zabbix Proxy来做VMware采集让Proxy和vCenter在同一网络区域减轻中央server的压力。这套方案的前提是Zabbix server到vCenter的网络要稳定如果中间有防火墙建议把vCenter所需的HTTPS端口和回调流量提前确认好。5.3 环境升级与运维细节很多团队把监控搭好之后就再也不动它结果vCenter小版本升级完监控数据突然停了。vCenter 7.0升级一般不会影响API接口但证书可能变更SSO策略可能有调整所以升级后建议主动去vCenter里确认监控账号还能不能正常登录再看Zabbix侧最新数据有没有刷新。如果你们后续要在Zabbix里增加新的虚拟机自动发现规则注意默认发现规则可能会把模板定义的监控项拉得很宽。我的做法是把自动发现规则里用不到的监控项原型停用只保留关心的CPU、内存、磁盘、网络和状态信息这样既能减少监控数据量又不会让告警列表被无关触发器的噪音淹没。还有一点小经验Zabbix的监控项历史数据保留时长不要设得太长MySQL或者PostgreSQL磁盘有限的话保留7到14天已经完全够排障。趋势数据保留时间长一点比如90天用来做容量规划。别为了面子把历史数据设成365天最后数据库膨胀到备份都做不下去。我这套环境从Zabbix 5.0升级到6.0时最大的感触就是官方对VMware监控的模板完善程度提升明显。如果你手里的版本还是4.0、5.0建议尽早升级不是追新而是老版本里VMware自动发现规则确实有不少边角问题7.0的vCenter配合老模板偶尔会出现对象丢失的情况。最后再分享一个很多教程不提的小技巧vCenter 7.0里很多性能计数器默认是分钟级聚合Zabbix拉到的数据频率再高也不会比vCenter自身的采样精度更高。所以你在Zabbix里把采集间隔压到30秒其实意义不大反而增加双方负载。老老实实用60秒到300秒的间隔配合合理的告警阈值才是生产环境里最稳的做法。监控这活不在于数据有多密而在于该告警的时候能不能及时说人话。