mcpField
V
vmware-monitor

vmware-monitor

github.com/vmware-skills云与 DevOps1672 次安装6 天前更新
代码仓库

关于 vmware-monitor

vmware-monitor 是面向 VMware vCenter 和 ESXi 运维人员的只读监控技能,可查看资源清单、告警、性能与容量,并汇总跨对象的诊断信息。它同时提供 MCP 工具、命令行查询和定时告警功能;对 vSphere 不执行状态变更。

主要功能

  1. 01只读查询 vCenter 与 ESXi
  2. 02汇总集群健康和重点问题
  3. 03关联查看虚拟机、主机与数据存储
  4. 04查询告警、事件和实时性能
  5. 05检查容量、证书、许可与快照
  6. 06定时扫描并发送 Slack/Discord 告警

适用场景

  1. 01快速定位集群异常和待处理问题
  2. 02调查特定虚拟机或主机的状态
  3. 03检查数据存储容量与性能压力
  4. 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.json
references/
agent-guardrails.md
capabilities.md
cli-reference.md
health-summary-template.md
investigation-protocol.md
setup-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 网络:网段、网关、NATvmware-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、Ingressvmware-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。对于大型资源池,应先查看关注列表——逐行扫描各集群太慢。

  1. 快速查看 --> vmware-monitor summary(MCP:get_cluster_health_summary)。先查看 top_issues(按严重程度从高到低排列,每项都包含深入排查的 next step);各集群表格用于提供上下文。issues_total 显示触及前 N 项上限之前的异常数量
  2. 缩小或扩大关注范围 --> 使用 --top 5 查看最紧急的 5 项,使用 --top 20 查看更多,使用 --top 0 隐藏列表、仅查看表格
  3. 深入查看列表所指向的问题 --> 例如,host_down 行 → inventory hosts;alarm 行 → get_alarms;capacity 行 → perf hosts / capacity datastores;使用 --cluster prod-a 限定范围
  4. 根据请求调整视图 --> 输出末尾会显示友好提示;操作人员可以说“添加数据存储可用空间”“只显示需要关注的集群”或“将其保存为 HTML 页面”。默认布局、列和阈值位于 references/health-summary-template.md,可根据需要编辑
  5. 保存离线快照 --> vmware-monitor summary --html 会将独立的 HTML 文件(无外部资源,不会上传任何内容)写入 ~/vmware-health/cluster-health-<vc>-<timestamp>.html;使用 --html-path <file> 指定路径。这是快照,并非实时页面——重新运行即可刷新
  6. 对于超大型资源池 --> 如果只需主机/警报/容量信号,可添加 --no-vms 跳过 VM 汇总
  7. totals.clusters 为 0 --> 并非没有数据:未加入集群的主机(独立 ESXi,或没有集群的 vCenter)会显示为 (standalone hosts) 行,仍计入 totals 和 top_issues
每日健康检查

判断:警报会告诉你 vCenter 判定出了什么问题,事件会告诉你发生了什么。两者可能不一致——事件激增但没有警报,往往意味着指标阈值校准不当,而不是“一切正常”。两者都要查看。

  1. 检查警报 --> vmware-monitor health alarms --target prod-vcenter — 重点关注严重级别为 Red 的警报,以及持续时间超过 1 小时的警报
  2. 查看近期事件 --> vmware-monitor health events --hours 24 --severity warning — 查找来自同一实体的重复事件(单个事件可能只是噪声;1 小时内出现 50 个事件则说明存在规律)
  3. 列出主机 --> vmware-monitor inventory hosts — 标记已断开连接、意外处于维护模式,或内存使用率 > 90% 的主机
  4. 如果连接失败 --> 运行 vmware-monitor doctor,诊断配置/网络问题
  5. 如果工具提示 NoPermission 或返回的信息过少 --> vmware-monitor access-info --tool <tool>(MCP:get_access_info)会显示该账户可以执行哪些操作
以对象为中心的调查(“这台 VM/主机/数据存储周围发生了什么?”)

判断:这是分诊发现问题后,操作人员想要的深入调查——一次调用即可将对象与其周边基础设施及近期历史关联起来,因此你可以用运维语言解释汇总结果,而不必自行拼接五个工具的结果。工具负责聚合;不要将原始清单直接输出到对话中。

逐步提供不同层级——不要询问环境已经确定的细节:

  1. 从顶层开始 --> 使用 get_cross_vcenter_attention(CLI:vmware-monitor attention)查看所有 vCenter 中“当前有哪些事项需要关注?”。如果只配置了一个 vCenter,则直接调用它的 get_cluster_health_summary——无需询问目标是哪一个
  2. 提供深入调查某个对象的选项,该对象由顶层问题列表指出。只有确实存在歧义时,才询问要调查哪个层级:
    • VM --> investigate_vm(CLI:vmware-monitor investigate vm <name>)→ VM 状态、近期事件、快照、警报与近期变更、其运行所在的主机、集群上下文、为其提供支持的数据存储、性能信号,以及关联的事件时间线
    • 主机 --> investigate_host(CLI:investigate host <name>)→ 主机状态、集群上下文、其上运行的 VM、已挂载的数据存储、警报、性能、关联的时间线
    • 数据存储 --> investigate_datastore(CLI:investigate datastore <name>)→ 容量/可用空间、挂载该数据存储的主机、由其提供支持的 VM、警报、关联的时间线
  3. 按需扩大或缩小范围 --> 使用 --hours 72 延长事件时间范围;结果汇总末尾会提示可调整的选项
  4. 生成直观结果 --> 为任意 investigate/attention 命令添加 --html,生成可独立查看的离线快照(深入调查各部分可直接折叠/展开,无需 JS,不会上传任何内容),并写入 ~/vmware-health/
  5. 如果不知道对象名称 --> 工具会返回一条引导性错误,明确说明如何列出对象(list_virtual_machines/list_esxi_hosts/list_all_datastores);获取准确名称后重试
  6. 如果某个 vCenter 无法访问(仅限 attention)--> 它会连同原因列在 unreachable 下,其余结果仍会正常汇总——指出这一缺失情况,不要因此放弃整个视图
性能排查(“集群感觉很慢”)

判断:清单显示的是已配置容量(核心数、GB),无法告诉你实际负载情况。使用实时性能工具,然后进一步排查。

  1. 按主机排名 --> vmware-monitor perf hosts — 最繁忙的主机会排在最前面(按 CPU% 排序)
  2. 对可疑主机上的 VM 排名 --> vmware-monitor perf vms --limit 25 — 找出吵闹的邻居
  3. 检查是否存在隐藏的存储压力 --> vmware-monitor capacity datastores — 超额分配 % > 100 表示精简配置的数据存储可能在运行过程中被占满,即使显示有“可用”空间
  4. 排除快照拖慢性能的可能 --> vmware-monitor snapshots aging --only-old — 旧快照会悄无声息地降低 I/O 性能
  5. 如果性能工具返回空结果 --> 主机/VM 可能已断开连接或已关机(没有实时数据提供方);使用 inventory hosts / inventory vms 确认
计划停机前检查(证书、许可证、时间)
  1. 证书到期时间 --> vmware-monitor infra certs --warn-days 60 — ESXi 证书过期会导致主机管理功能失效
  2. 许可证余量 --> vmware-monitor infra licenses — 在功能被禁用前发现超额分配
  3. 时间同步 --> vmware-monitor infra ntp — healthy: no 会导致 SSO/Kerberos/日志关联出现问题(注意:SOAP API 不提供实时偏差值,只能检查配置状态)
设置持续监控
  1. 在 ~/.vmware-monitor/config.yaml 中配置 webhook
  2. 启动守护进程 --> vmware-monitor daemon start
  3. 守护进程每 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_infoVM 详细信息(CPU、内存、磁盘、NIC、快照)
list_vm_snapshots列出单个 VM 的快照及嵌套层级(只读)
get_host_performance主机 CPU/内存/磁盘/网络实时利用率(PerfManager);按繁忙程度从高到低排列
get_vm_performanceVM 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_tieringvSphere 9.1 — 各主机的内存分层(DRAM/NVMe 层级)及 NVMe 提升比率(pyVmomi hardware.memoryTierInfo,需要 ESXi 8.0U3+)。参数:host_name、limit。返回列表封装
get_cluster_patch_compliancevSphere 9.1 — 通过 vSphere Automation REST 查看单个集群的 vLCM 软件(补丁)合规情况。参数:cluster(MoID,例如 domain-c123)。available:false 表示 vCenter 返回了 503(可能正在进行补丁操作),并非错误;当主机状态字段未知时,non_compliant_hosts 为 null,绝不会错误地显示为 0
get_cluster_last_apply_resultvSphere 9.1 — 查看单个集群上次 vLCM 修复(应用)的结果(REST)。参数:cluster(MoID)。仅报告结果;绝不会运行修复
get_vcenter_deployment_sizevSphere 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”错误
  1. 运行 vmware-monitor doctor 进行诊断
  2. 在 config.yaml 中确认目标主机名/IP 和端口(443)
  3. 仅限实验环境的自签名证书: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

许可证

MIT — github.com/vmware-skills/VMware-Monitor

评论

支持 Markdown