2. vSphere监控数据源与指标模型

要做好 vSphere 的监控告警与容量运营,第一步不是打开某个仪表盘,而是先弄清楚“数据从哪里来、以什么形式存在、彼此如何关联”。vSphere 的监控数据并不是单一来源,而是由 vCenter、ESXi 主机、虚拟机、集群、数据存储、网络等多个对象层共同产生,并分别以性能计数器、事件、任务和告警定义四种形态存在。理解这四类数据源与对象模型的对应关系,才能判断某个指标该去哪里取、某个异常该由谁上报、某个容量趋势该按什么粒度聚合。

四类监控数据源的定位

性能计数器(Performance Counters)是数值型的时间序列数据,回答“现在有多快、多满、多忙”。它由 ESXi 主机上的性能采集子系统周期性采样,vCenter 通过统计接口按对象、指标、实例、采样间隔四个维度读取。典型计数器如 cpu.usage.average、mem.consumed.average、disk.deviceReadLatency.average、net.received.average、datastore.space.used。计数器是容量趋势分析和阈值告警的主要依据。

事件(Events)是离散的、带时间戳的状态变化记录,回答“发生了什么”。例如虚拟机开机、迁移完成、主机进入维护模式、数据存储空间不足、HA 重启触发。事件由各对象产生并汇总到 vCenter,是排障时间线和审计追溯的核心素材。

任务(Tasks)是用户或系统发起的、有明确开始与结束状态的操作记录,回答“谁在做什么、做到哪一步”。克隆、迁移、快照创建、模板部署都会生成任务,任务带有进度、状态(运行中/成功/失败)和发起者,是判断操作是否卡住的关键。

告警定义(Alarm Definitions)是规则本身,回答“什么条件下应该通知谁”。一条告警定义由监控对象类型、触发条件(基于计数器、事件或状态)、触发/恢复阈值、严重级别和动作(发邮件、执行脚本、进入维护模式等)组成。告警不是数据,而是对前三类数据的判断逻辑。

vSphere 监控数据源与对象模型对应关系 监控对象层(谁产生数据) vCenter 清单/事件/任务 ESXi 主机 CPU/内存/存储 虚拟机 Guest/虚拟硬件 集群 DRS/HA 聚合 数据存储 容量/延迟 网络 vSwitch/上行链路 数据形态层(以什么形式存在) 性能计数器 数值 · 时间序列 对象/指标/实例/间隔 用于趋势与阈值 事件 离散 · 带时间戳 状态变化记录 用于排障与审计 任务 有始有终 · 带进度 发起者/状态/结果 用于判断操作卡点 告警定义 规则 · 条件+动作 阈值/级别/恢复 用于通知与自动化 消费层(用来做什么) 容量趋势分析 按对象聚合、预测 故障排障时间线 事件+任务关联 阈值告警触发 计数器驱动规则 自动化响应 脚本/维护模式

对象模型决定指标的聚合方式

vSphere 的监控对象是分层的:vCenter 管理多个数据中心,数据中心下是集群与主机,主机上运行虚拟机,虚拟机连接端口组与数据存储。同一类指标在不同对象上的含义并不相同。以 CPU 为例,主机上的 cpu.usage.average 反映物理 CPU 的总体占用,虚拟机上的同名指标反映该虚拟机消耗的 CPU 时间,而集群层面则通过 DRS 的聚合视图呈现整体负载均衡情况。容量运营中如果只看虚拟机指标,会漏掉主机层面的资源争用;只看主机指标,又无法定位到具体是哪台虚拟机在消耗资源。

因此,指标模型必须同时记录“对象类型 + 指标名称 + 实例 + 采样间隔”。实例(Instance)用于区分同一对象下的多个设备,例如主机上的多块网卡、多个数据存储设备、虚拟机上的多块虚拟磁盘。忽略实例维度,就会把不同物理设备的数据混在一起,导致阈值判断失真。

采样间隔与保留策略

vCenter 的性能数据按四个默认采样间隔存储:实时(20 秒,保留约 1 小时)、过去一天(5 分钟,保留 1 天)、过去一周(30 分钟,保留 1 周)、过去一月(2 小时,保留 1 个月)。间隔越长,数据点越少,但保留时间越久。做容量趋势分析时,通常使用“过去一周”或“过去一月”的聚合数据;做实时告警时,则依赖 20 秒或 5 分钟的采样。理解这一点,可以避免“为什么昨天下午的瞬时峰值在周视图里看不到了”这类困惑——长间隔数据是聚合后的结果,瞬时尖峰会被平滑。

容量规划建议使用 30 分钟或 2 小时粒度的历史数据做趋势拟合,而不是用 20 秒实时数据,否则噪声会掩盖真实增长斜率。

事件、任务与告警的联动

事件和任务常常成对出现。例如一次虚拟机迁移会生成一个任务(记录进度与结果),同时产生若干事件(迁移开始、迁移完成、DRS 建议)。排障时,正确的做法是先按时间窗口筛选事件,找到异常发生点,再关联同一时间段的任务,确认是否有失败或卡住的操作。告警定义则把这种关联固化为规则:可以基于事件触发告警(如“主机失去连接”),也可以基于计数器触发告警(如“数据存储使用率超过 85% 持续 5 分钟”)。

一个常见的告警定义示例:监控对象为数据存储,触发条件为 datastore.space.used 占容量比例大于 85%,持续 5 分钟,严重级别为警告,动作为发送邮件。恢复条件为比例低于 75%。这里 85% 与 75% 之间的差值就是迟滞区间,用于避免在阈值附近反复触发和恢复。

实际取数时的关键判断

在 vCenter 中查看性能数据时,需要明确三件事:第一,当前查看的是哪个对象层级;第二,选择的采样间隔是什么;第三,指标的单位和方向。例如 disk.deviceReadLatency.average 单位是毫秒,数值越低越好;net.received.average 单位是 KBps,数值高低取决于业务预期。方向搞反,告警规则就会写错。

另外,ESXi 主机本地也保留短期性能数据,当 vCenter 不可用时,可以通过主机客户端或 esxcli 查看本地计数器,用于快速判断主机自身状态。但长期趋势和跨对象聚合仍以 vCenter 数据库为准。理解“本地短期、vCenter 长期”的分工,有助于在 vCenter 故障时选择合适的排查路径。

不要用虚拟机的 Guest 内指标替代 vSphere 层指标。Guest 内看到的是操作系统视角,vSphere 层看到的是虚拟硬件与物理资源视角,两者在 CPU 就绪时间、内存回收、存储延迟上可能差异很大。

指标模型速查

数据形态典型来源关键维度主要用途
性能计数器ESXi 采集,vCenter 汇总对象、指标、实例、间隔趋势分析、阈值告警
事件各对象产生,vCenter 汇总时间、对象、类型、严重级别排障时间线、审计
任务用户或系统发起发起者、进度、状态、结果判断操作是否卡住
告警定义vCenter 规则配置条件、阈值、级别、动作通知与自动化响应

掌握这四类数据源与对象模型的对应关系后,后续的监控设计、告警调优和容量分析才有统一的坐标系。无论是配置一条新告警,还是排查一次性能抖动,都可以先问:我要看的是计数器、事件、任务还是告警定义?它属于哪个对象层级?采样间隔和实例维度是否选对了?这三个问题回答清楚,监控数据才不会用错地方。