关于 vmware-monitor
vmware-monitor 是面向 VMware vCenter 和 ESXi 运维人员的只读监控技能,可查看资源清单、告警、性能与容量,并汇总跨对象的诊断信息。它同时提供 MCP 工具、命令行查询和定时告警功能;对 vSphere 不执行状态变更。
主要功能
- 01只读查询 vCenter 与 ESXi
- 02汇总集群健康和重点问题
- 03关联查看虚拟机、主机与数据存储
- 04查询告警、事件和实时性能
- 05检查容量、证书、许可与快照
- 06定时扫描并发送 Slack/Discord 告警
适用场景
- 01快速定位集群异常和待处理问题
- 02调查特定虚拟机或主机的状态
- 03检查数据存储容量与性能压力
- 04设置定期监控及消息告警
MCP 相关
向 MCP 客户端提供 33 个只读 VMware 监控工具,包括清单、健康、性能、容量和对象调查查询。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ vmware-skills/ vmware-monitor --skill vmware-monitor安装后在 Claude Code 中输入/vmware-monitor确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/agent-guardrails.mdcapabilities.mdcli-reference.mdhealth-summary-template.mdinvestigation-protocol.mdsetup-guide.md详细介绍
VMware Monitor(只读)
免责声明:这是一个由社区维护的开源项目,与 VMware, Inc. 或 Broadcom Inc. 没有任何关联,也未获得其认可或赞助。“VMware”和“vSphere”是 Broadcom 的商标。源代码可在 github.com/vmware-skills/VMware-Monitor 公开审查,并采用 MIT 许可证。
只读监控 VMware vCenter/ESXi——提供 33 个 MCP 工具,不含任何破坏性代码。
对 vSphere 只读:没有任何代码路径会更改 vCenter/ESXi 状态——不存在电源操作、创建、删除、快照或重新配置调用。在 vCenter 上,它只会开启登录会话和短期查询句柄,并在使用后释放。防护检查:
tests/eval/regression/test_read_only_enforcement.py(源代码仓库,不在此软件包中)要求所有调用的 vSphere 方法都在经审核的允许列表中,并根据 pyVmomi 的类型元数据进行检查。它检查的是源代码,而非运行时,且不会由 CI 执行。独立于此代码,请使用具有 vCenter 只读角色的专用账户。 本地写入(仅此机器):init会写入~/.vmware-monitor/config.yaml和.env(权限为 0600;明文密码在加载时会改写为b64:);审计日志写入~/.vmware/audit.db(MCP 和 CLI)和~/.vmware-monitor/audit.log(CLI);--html快照写入~/vmware-health/;仅在执行daemon start后,才会写入scan.log、daemon.pid并发送选择启用的 Webhook 请求。 配套技能:vmware-aiops(VM 生命周期)、vmware-storage(iSCSI/vSAN)、vmware-vks(Tanzu Kubernetes)、vmware-nsx(NSX 网络)、vmware-nsx-security(DFW/防火墙)、vmware-aria(指标/警报/容量)、vmware-avi(AVI/ALB/AKO)、vmware-harden(合规基线)。 | vmware-pilot(工作流编排) | vmware-policy(审计/策略)
此技能的功能
| 类别 | 功能 |
|---|---|
| 集群排查 | 一目了然的 get_cluster_health_summary——跨集群汇总问题/容量/健康状况,并提供带有明确判断倾向的状态;视图可自定义 |
| 对象调查 | “此 VM / 主机 / 数据存储周边发生了什么?”——为每个对象提供一组关联的深入调查结果,另有 get_cross_vcenter_attention,可汇总所有已配置 vCenter 中按优先级排序的“当前需要关注的事项”列表 |
| 清单 | 列出 VM、ESXi 主机、数据存储、集群和网络 |
| 健康状况 | 活动警报、近期事件(按严重性/时间筛选)、硬件传感器、主机服务 |
| 性能 | 实时查看主机和 VM 的 CPU/内存/磁盘/网络利用率(PerfManager) |
| 容量 | 数据存储精简配置超额情况、资源池预留/使用情况 |
| 基础设施健康状况 | ESXi 证书到期时间、许可证使用情况/到期时间、NTP 配置健康状况 |
| 快照 | 全库存快照老化与泛滥情况(标记旧快照) |
| 活动 | 正在执行的任务、活动登录会话 |
| VM 详情 | CPU、内存、磁盘、NIC、快照、来宾操作系统、IP |
| 扫描 | 定时扫描警报/日志,并通过 Slack/Discord Webhook 发送通知 |
| vSphere 9.1 | 主机内存分层(DRAM/NVMe 提升)、vLCM 集群补丁合规性及最近一次应用结果、vCenter 部署规模 |
快速安装
uv tool install vmware-monitor==2.4.2
vmware-monitor doctor
何时使用此技能
- 列出或搜索 VM、主机、数据存储和集群
- 检查活动警报或近期事件
- 获取特定 VM 的详细信息
- 设置定时监控和 Webhook 警报
- 任何将安全性放在首位的 VMware 只读查询
警报/事件输出:suggested_actions 字段
get_alarms 和 get_events 的结果包含 suggested_actions:可直接使用的配套技能工具调用(例如 "vmware-aiops: acknowledge_vcenter_alarm(...)"),Agent 可直接执行。示例:references/capabilities.md。
请在以下场景使用配套技能:
- 开机/关机、部署、克隆、迁移 -->
vmware-aiops - iSCSI、vSAN、数据存储管理 -->
vmware-storage - Tanzu Kubernetes 集群 -->
vmware-vks - 负载均衡、AVI/ALB、AKO、Ingress -->
vmware-avi
相关技能 — 技能路由
| 用户意图 | 推荐技能 |
|---|---|
| 只读 vSphere 监控 | vmware-monitor ← 此技能 |
| 存储:iSCSI、vSAN、数据存储 | vmware-storage |
| VM 生命周期、部署、来宾操作 | vmware-aiops |
| Tanzu Kubernetes(vSphere 8.x+) | vmware-vks |
| NSX 网络:网段、网关、NAT | vmware-nsx |
| NSX 安全:DFW 规则、安全组 | vmware-nsx-security |
| Aria Ops:指标、警报、容量规划 | vmware-aria |
| 需审批的多步骤工作流 | vmware-pilot |
| 合规基线(CIS / 等保 / PCI-DSS)、偏差检测、LLM 修复顾问 | vmware-harden(uv tool install vmware-harden) |
| 负载均衡器、AVI、ALB、AKO、Ingress | vmware-avi(uv tool install vmware-avi) |
| 审计日志查询 | vmware-policy(vmware-audit CLI) |
常见工作流
诊断调查:在运行任何“X 为什么失败/宕机/异常”工作流之前,请遵循
references/investigation-protocol.md。该协议要求满足四项根因完整性标准(可证伪性/充分性/必要性/机制),并遵循最多三轮的深入调查流程。由于 vmware-monitor 仅提供只读功能,它可作为数据源;执行操作应交由 vmware-aiops 等配套技能完成。
集群健康检查(“有什么严重问题吗?”/“现在有什么问题?”)
判断:这是 5 秒快速分诊概览,并非 Aria 的替代品。一次调用即可汇总每个集群的主机、VM 电源状态、实时 CPU/内存和警报,将各项异常整理为按优先级排序的前 N 项关注列表(top_issues),并为每个集群给出明确的 status。对于大型资源池,应先查看关注列表——逐行扫描各集群太慢。
- 快速查看 -->
vmware-monitor summary(MCP:get_cluster_health_summary)。先查看top_issues(按严重程度从高到低排列,每项都包含深入排查的next step);各集群表格用于提供上下文。issues_total显示触及前 N 项上限之前的异常数量 - 缩小或扩大关注范围 --> 使用
--top 5查看最紧急的 5 项,使用--top 20查看更多,使用--top 0隐藏列表、仅查看表格 - 深入查看列表所指向的问题 --> 例如,
host_down行 →inventory hosts;alarm行 →get_alarms;capacity行 →perf hosts/capacity datastores;使用--cluster prod-a限定范围 - 根据请求调整视图 --> 输出末尾会显示友好提示;操作人员可以说“添加数据存储可用空间”“只显示需要关注的集群”或“将其保存为 HTML 页面”。默认布局、列和阈值位于
references/health-summary-template.md,可根据需要编辑 - 保存离线快照 -->
vmware-monitor summary --html会将独立的 HTML 文件(无外部资源,不会上传任何内容)写入~/vmware-health/cluster-health-<vc>-<timestamp>.html;使用--html-path <file>指定路径。这是快照,并非实时页面——重新运行即可刷新 - 对于超大型资源池 --> 如果只需主机/警报/容量信号,可添加
--no-vms跳过 VM 汇总 totals.clusters为 0 --> 并非没有数据:未加入集群的主机(独立 ESXi,或没有集群的 vCenter)会显示为(standalone hosts)行,仍计入totals和top_issues
每日健康检查
判断:警报会告诉你 vCenter 判定出了什么问题,事件会告诉你发生了什么。两者可能不一致——事件激增但没有警报,往往意味着指标阈值校准不当,而不是“一切正常”。两者都要查看。
- 检查警报 -->
vmware-monitor health alarms --target prod-vcenter— 重点关注严重级别为 Red 的警报,以及持续时间超过 1 小时的警报 - 查看近期事件 -->
vmware-monitor health events --hours 24 --severity warning— 查找来自同一实体的重复事件(单个事件可能只是噪声;1 小时内出现 50 个事件则说明存在规律) - 列出主机 -->
vmware-monitor inventory hosts— 标记已断开连接、意外处于维护模式,或内存使用率 > 90% 的主机 - 如果连接失败 --> 运行
vmware-monitor doctor,诊断配置/网络问题 - 如果工具提示 NoPermission 或返回的信息过少 -->
vmware-monitor access-info --tool <tool>(MCP:get_access_info)会显示该账户可以执行哪些操作
以对象为中心的调查(“这台 VM/主机/数据存储周围发生了什么?”)
判断:这是分诊发现问题后,操作人员想要的深入调查——一次调用即可将对象与其周边基础设施及近期历史关联起来,因此你可以用运维语言解释汇总结果,而不必自行拼接五个工具的结果。工具负责聚合;不要将原始清单直接输出到对话中。
逐步提供不同层级——不要询问环境已经确定的细节:
- 从顶层开始 --> 使用
get_cross_vcenter_attention(CLI:vmware-monitor attention)查看所有 vCenter 中“当前有哪些事项需要关注?”。如果只配置了一个 vCenter,则直接调用它的get_cluster_health_summary——无需询问目标是哪一个 - 提供深入调查某个对象的选项,该对象由顶层问题列表指出。只有确实存在歧义时,才询问要调查哪个层级:
- VM -->
investigate_vm(CLI:vmware-monitor investigate vm <name>)→ VM 状态、近期事件、快照、警报与近期变更、其运行所在的主机、集群上下文、为其提供支持的数据存储、性能信号,以及关联的事件时间线 - 主机 -->
investigate_host(CLI:investigate host <name>)→ 主机状态、集群上下文、其上运行的 VM、已挂载的数据存储、警报、性能、关联的时间线 - 数据存储 -->
investigate_datastore(CLI:investigate datastore <name>)→ 容量/可用空间、挂载该数据存储的主机、由其提供支持的 VM、警报、关联的时间线
- VM -->
- 按需扩大或缩小范围 --> 使用
--hours 72延长事件时间范围;结果汇总末尾会提示可调整的选项 - 生成直观结果 --> 为任意
investigate/attention命令添加--html,生成可独立查看的离线快照(深入调查各部分可直接折叠/展开,无需 JS,不会上传任何内容),并写入~/vmware-health/ - 如果不知道对象名称 --> 工具会返回一条引导性错误,明确说明如何列出对象(
list_virtual_machines/list_esxi_hosts/list_all_datastores);获取准确名称后重试 - 如果某个 vCenter 无法访问(仅限 attention)--> 它会连同原因列在
unreachable下,其余结果仍会正常汇总——指出这一缺失情况,不要因此放弃整个视图
性能排查(“集群感觉很慢”)
判断:清单显示的是已配置容量(核心数、GB),无法告诉你实际负载情况。使用实时性能工具,然后进一步排查。
- 按主机排名 -->
vmware-monitor perf hosts— 最繁忙的主机会排在最前面(按 CPU% 排序) - 对可疑主机上的 VM 排名 -->
vmware-monitor perf vms --limit 25— 找出吵闹的邻居 - 检查是否存在隐藏的存储压力 -->
vmware-monitor capacity datastores— 超额分配 % > 100 表示精简配置的数据存储可能在运行过程中被占满,即使显示有“可用”空间 - 排除快照拖慢性能的可能 -->
vmware-monitor snapshots aging --only-old— 旧快照会悄无声息地降低 I/O 性能 - 如果性能工具返回空结果 --> 主机/VM 可能已断开连接或已关机(没有实时数据提供方);使用
inventory hosts/inventory vms确认
计划停机前检查(证书、许可证、时间)
- 证书到期时间 -->
vmware-monitor infra certs --warn-days 60— ESXi 证书过期会导致主机管理功能失效 - 许可证余量 -->
vmware-monitor infra licenses— 在功能被禁用前发现超额分配 - 时间同步 -->
vmware-monitor infra ntp—healthy: no会导致 SSO/Kerberos/日志关联出现问题(注意:SOAP API 不提供实时偏差值,只能检查配置状态)
设置持续监控
- 在
~/.vmware-monitor/config.yaml中配置 webhook - 启动守护进程 -->
vmware-monitor daemon start - 守护进程每 15 min 扫描一次,并向 Slack/Discord 发送警报
使用模式
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 本地/小型模型(Ollama、Qwen) | CLI | 约 2K 个 tokens,MCP 则约为 8K |
| 云端模型(Claude、GPT-4o) | 两者皆可 | MCP 可提供结构化 JSON I/O |
| 自动化流水线 | MCP | 类型安全的参数、结构化输出 |
MCP 工具(33 个 — 全部只读)
| 工具 | 描述 |
|---|---|
list_virtual_machines | 列出 VM,支持筛选(电源状态、排序、上限、folder_filter);每个 VM 都包含 folder_path |
list_esxi_hosts | 列出 ESXi 主机及其 CPU、内存、版本和运行时间 |
list_all_datastores | 列出数据存储及其容量、可用空间和类型 |
list_all_clusters | 列出集群及其主机数量、DRS/HA 状态 |
get_cluster_health_summary | 一眼查看所有集群的分诊概况:按优先级排列的 top_issues 重点列表,以及各集群汇总和经过判断的 status。参数:cluster_filter、include_vms、top_n。按 references/health-summary-template.md 呈现 |
investigate_vm | “这台 VM 周围发生了什么?”——关联式深入调查,包含合并后的最新优先事件时间线(内容列于上方工作流中)。参数:vm_name、hours。由工具汇总;应作出解释,不要直接倾倒原始数据 |
investigate_host | 对 ESXi 主机进行同类关联式深入调查。参数:host_name、hours |
investigate_datastore | 对数据存储进行同类关联式深入调查。参数:datastore_name、hours |
get_cross_vcenter_attention | “现在有哪些事项需要关注?”——覆盖所有已配置的 vCenter,提供一个全局排序的 top_issues 列表(每项均标注其 vcenter)及各目标汇总;无法访问的目标会优雅降级。参数:cluster_filter、top_n |
list_all_networks | 列出网络及其连接的 VM 数量和可访问性 |
get_alarms | 当前活动警报:suggested_actions、确认者、condition_now(cleared = 已过期) |
get_events | 按严重性和时间范围(start/end)列出事件 |
get_host_sensors | 查看各主机的硬件传感器状态(温度/电压/风扇)及绿色/黄色/红色健康状态 |
get_host_services | 查看主机服务状态(运行状态和启动策略),可按主机筛选 |
get_vm_info | VM 详细信息(CPU、内存、磁盘、NIC、快照) |
list_vm_snapshots | 列出单个 VM 的快照及嵌套层级(只读) |
get_host_performance | 主机 CPU/内存/磁盘/网络实时利用率(PerfManager);按繁忙程度从高到低排列 |
get_vm_performance | VM CPU/内存/气球内存/交换空间/磁盘/网络实时利用率(默认前 25 个);仅限已开机的 VM |
find_aging_snapshots | 扫描全清单中的快照,检查其年龄和蔓延情况;标记超过 N 天的快照 |
get_vm_backup_snapshot_history | 根据快照任务历史查看单个 VM 的备份时间窗口;这是下限,不是作业持续时间 |
get_certificate_status | 查看各主机 ESXi 管理证书的到期情况(距到期天数、即将到期标记) |
get_license_status | 查看许可证和各资产的 assignments |
get_ntp_status | 查看各主机的 NTP 配置健康状况(服务器和 ntpd 状态);SOAP API 不提供实时偏移量 |
get_datastore_capacity | 查看数据存储超额承诺情况(已置备容量与总容量对比);薄置备风险 |
get_resource_pool_usage | 查看资源池的 CPU/内存预留、限制和当前使用量 |
list_active_tasks | 列出正在进行(以及最近已完成)的 vCenter 任务及其进度/错误 |
list_active_sessions | 查看登录用户及其使用的客户端 |
get_access_info | 查看正在使用的账户,以及该账户是否在根文件夹上拥有某工具所需的权限(undetermined 不代表已授权) |
scan_host_logs | 按模式分组显示 ESXi 主机日志中的异常行(CLI:scan logs) |
get_host_memory_tiering | vSphere 9.1 — 各主机的内存分层(DRAM/NVMe 层级)及 NVMe 提升比率(pyVmomi hardware.memoryTierInfo,需要 ESXi 8.0U3+)。参数:host_name、limit。返回列表封装 |
get_cluster_patch_compliance | vSphere 9.1 — 通过 vSphere Automation REST 查看单个集群的 vLCM 软件(补丁)合规情况。参数:cluster(MoID,例如 domain-c123)。available:false 表示 vCenter 返回了 503(可能正在进行补丁操作),并非错误;当主机状态字段未知时,non_compliant_hosts 为 null,绝不会错误地显示为 0 |
get_cluster_last_apply_result | vSphere 9.1 — 查看单个集群上次 vLCM 修复(应用)的结果(REST)。参数:cluster(MoID)。仅报告结果;绝不会运行修复 |
get_vcenter_deployment_size | vSphere 9.1 — 查看 vCenter 设备部署规模类别(REST,9.1 新增)。503 时 available:false |
vSphere 9.1 字段解析说明:3 个 REST 工具的端点已通过规范验证,但尚未针对实时 9.1 vCenter 重放验证其 JSON 字段名——每个字段都会以防御方式读取,并通过其
note自行标注结果(端点已验证;字段解析为尽力而为,等待实时 9.1 vCenter 验证)。get_host_memory_tiering要求 vCenter/ESXi 8.0U3+;较旧的目标会引发说明性错误,指出缺失的属性。
没有任何工具会修改、创建或删除 vCenter/ESXi 资源。 性能/容量读数是某个时间点的采样——此技能不会保留历史记录, 因此绝不会报告捏造的“趋势”或预计可用期限。
列表结果结构
上面的 21 个行列表工具(包括 get_host_memory_tiering)会返回系列列表封装
{items, returned, limit, total, truncated, hint},而不是裸数组。汇总前先查看
truncated:true 表示还有更多行——切勿将 items 视为完整情况;false 表示结果完整,因此空的 items 意味着
“已检查,未发现”——对于 scan_host_logs,还要求无法读取的日志列表
logs_unavailable 也为空。null 的 total
(get_events、scan_host_logs)是有意为之。聚合工具会返回
专用对象——请参阅 references/capabilities.md。
只读设计
全部 33 个工具都只读取 vSphere(本地写入:见顶部)。
使用本地模型或小型模型?请参阅
references/agent-guardrails.md。
CLI 快速参考
vmware-monitor summary [--top 10] [--cluster <substr>] [--html] [--target <t>]
vmware-monitor inventory vms|hosts|datastores|clusters|networks [--target <t>]
vmware-monitor health alarms|events|sensors|services [--target <t>]
vmware-monitor perf hosts|vms [--target <t>]
vmware-monitor capacity datastores|pools [--target <t>]
vmware-monitor infra certs|licenses|ntp [--target <t>]
vmware-monitor snapshots aging [--only-old] [--target <t>]
vmware-monitor vm info <vm-name> [--target <t>]
vmware-monitor memory tiering [--host <esxi>] [--target <t>] # vSphere 9.1
vmware-monitor patch compliance|last-apply <cluster-moid> [--target <t>] # vSphere 9.1 (vLCM)
vmware-monitor deployment-size [--target <t>] # vSphere 9.1
vmware-monitor scan now | scan logs [--host <name>] | daemon start|stop|status | doctor [--skip-auth]
完整 CLI 参考(所有标志 + 活动/任务/会话):请参阅
references/cli-reference.md
故障排查
告警结果为空,但 vCenter 显示有告警
get_alarms 工具会在根文件夹级别查询已触发的告警。有些告警与特定实体相关——请改为检查事件:get_events --hours 1 --severity info。
“Connection refused”错误
- 运行
vmware-monitor doctor进行诊断 - 在 config.yaml 中确认目标主机名/IP 和端口(443)
- 仅限实验环境的自签名证书:
verify_ssl: false
事件结果过多
使用严重性筛选器:--severity warning(默认值)会筛除信息级事件。使用 --hours 4 缩小时间范围。
VM 信息显示“guest_os: unknown”
虚拟机中未安装或未运行 VMware Tools。安装/启动 VMware Tools,才能检测客户机操作系统、IP 地址和客户机系列信息。
Doctor 检查通过,但命令因超时失败
vCenter 可能负载过高。请尝试直接将目标设为特定 ESXi 主机,而不是 vCenter,或在 config.yaml 中增大连接超时时间。
所有命令都因“session is not authenticated”失败
该账户没有 vSphere 角色。请在 vCenter 根文件夹上分配一个角色(只读或更高);vmware-monitor doctor 会明确报告此情况。
只读技能需要设置 environment: 吗?
可选:在 ~/.vmware-monitor/config.yaml 中为每个目标添加 environment: production(或 staging、lab,也可以使用自定义标签)。
读取操作不会受其限制。
它对同一 vCenter 上的写入技能(vmware-aiops、vmware-storage、
vmware-nsx)有影响:~/.vmware/rules.yaml 中按环境限定的 deny 规则
可以匹配该标签,从而阻止这些技能写入(例如冻结 production)。
配置示例:references/setup-guide.md。
设置
uv tool install vmware-monitor==2.4.2
vmware-monitor init # guided: prompts for host/user/password, writes config + .env (chmod 600), then verifies
init 会以 grep 安全的方式存储密码(混淆后的 b64:,绝不使用明文),并将
.env 锁定为 0600。建议使用它,而不是手动编辑;手动步骤请参阅:
references/setup-guide.md。
完整设置指南、安全详情和 AI 平台兼容性:请参阅
references/setup-guide.md
审计与安全
MCP 调用(@vmware_tool)和远程 CLI 命令(@audited)通过 vmware-policy 进行审计;CLI 查询也会追加到 ~/.vmware-monitor/audit.log:
- 每次 MCP 调用和远程 CLI 命令都会记录到
~/.vmware/audit.db(SQLite) - 通过
~/.vmware/rules.yaml强制执行策略规则(拒绝规则、维护时段、风险级别) - 风险分类:每个工具都标记为低/中/高/严重
- 查看近期操作:
vmware-audit log --last 20 - 查看已拒绝的操作:
vmware-audit log --status denied