VMware 监控(只读)
免责声明:这是一个社区维护的开源项目,与 VMware, Inc. 或 Broadcom Inc. 没有关联、授权或赞助关系。“VMware”和“vSphere”是 Broadcom 的商标。源代码在 github.com/zw008/VMware-Monitor 上公开可审计,采用 MIT 许可证。
只读的 VMware vCenter/ESXi 监控——11 个 MCP 工具,零破坏性代码。
代码级安全性:此技能不包含任何电源、创建、删除、快照或修改操作。它们并非被禁用——而是根本不存在于代码库中。 配套技能: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(审计/策略)
此技能的功能
| 类别 | 能力 |
|---|---|
| 库存 | 列出 VM、ESXi 主机、数据存储、集群、网络 |
| 健康 | 活跃告警、最近事件(按严重程度/时间筛选)、硬件传感器、主机服务 |
| VM 详情 | CPU、内存、磁盘、网卡、快照、客户机操作系统、IP |
| 扫描 | 定时告警/日志扫描,支持 Slack/Discord webhook |
快速安装
uv tool install vmware-monitor
vmware-monitor doctor
何时使用此技能
- 列出或搜索 VM、主机、数据存储、集群
- 检查活跃告警或最近事件
- 获取特定 VM 的详细信息
- 设置带有 webhook 告警的定时监控
- 任何需要安全至上的只读 VMware 查询
告警/事件输出:suggested_actions 字段
get_alarms 和 get_events 的结果包含一个 suggested_actions 列表。
每个项目都是一个即用型提示,指向正确的配套技能和工具:
{
"alarm_name": "VM CPU Ready High",
"entity_name": "prod-db-01",
"suggested_actions": [
"vmware-aiops: acknowledge_vcenter_alarm(entity_name='prod-db-01', alarm_name='VM CPU Ready High')",
"vmware-aiops: reset_vcenter_alarm(entity_name='prod-db-01', alarm_name='VM CPU Ready High')"
]
}
AI 代理(尤其是较小的本地模型)可以直接读取这些提示,以确定接下来要调用哪个技能和工具,无需自行推理技能路由。
使用配套技能进行:
- 开机/关机、部署、克隆、迁移 -->
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。
每日健康检查
判断:告警告诉你 vCenter 已确定的问题,事件告诉你发生的情况。它们会存在分歧——没有告警的事件爆发通常表明指标阈值校准错误,而不是“一切正常”。两者都要读取。
- 检查告警 -->
vmware-monitor health alarms --target prod-vcenter— 重点关注红色严重级别且超过 1 小时的告警(瞬态告警会自动清除) - 查看最近事件 -->
vmware-monitor health events --hours 24 --severity warning— 查找来自同一实体的重复事件(单个事件是噪音;一小时内 50 个事件则是一种模式) - 列出主机 -->
vmware-monitor inventory hosts— 标记已断开连接、意外处于维护模式或内存使用率超过 90% 的主机 - 如果连接失败 --> 运行
vmware-monitor doctor以诊断配置/网络问题
调查特定 VM
- 查找 VM -->
vmware-monitor inventory vms --power-state poweredOff - 获取详细信息 -->
vmware-monitor vm info problem-vm - 检查相关事件 -->
vmware-monitor health events --hours 48 - 如果未找到 VM --> 使用
vmware-monitor inventory vms --limit 100验证 VM 名称,或使用--target <other-vcenter>检查目标
设置持续监控
- 在
~/.vmware-monitor/config.yaml中配置 webhook - 启动守护进程 -->
vmware-monitor daemon start - 守护进程每 15 分钟扫描一次,并通过 Slack/Discord 发送告警
使用模式
| 场景 | 推荐 | 原因 |
|---|---|---|
| 本地/小型模型(Ollama、Qwen) | CLI | 约 2K tokens vs MCP 约 8K |
| 云端模型(Claude、GPT-4o) | 任意 | MCP 提供结构化 JSON I/O |
| 自动化管道 | MCP | 类型安全参数、结构化输出 |
MCP 工具(11 个——全部只读)
| 工具 | 描述 |
|---|---|
list_virtual_machines | 列出 VM,支持过滤(电源状态、排序、限制、folder_filter 用于不区分大小写的文件夹树搜索);每个 VM 包含 folder_path |
list_esxi_hosts | ESXi 主机,包含 CPU、内存、版本、运行时间 |
list_all_datastores | 数据存储,包含容量、可用空间、类型 |
list_all_clusters | 集群,包含主机数量、DRS/HA 状态 |
list_all_networks | 网络,包含连接的 VM 数量和可访问性 |
get_alarms | 所有活跃/触发的告警——包含 suggested_actions 修复提示 |
get_events | 最近事件,按严重程度和时间过滤——包含 suggested_actions 提示 |
get_host_sensors | 每个主机的硬件传感器状态(温度/电压/风扇),带绿色/黄色/红色健康指示 |
get_host_services | 主机服务状态(运行状态和启动策略),可选按主机过滤 |
vm_info | 详细的 VM 信息(CPU、内存、磁盘、网卡、快照) |
vm_list_snapshots | 一个 VM 的快照列表,包含嵌套层次结构(只读) |
所有工具都是只读的。没有任何工具可以修改、创建或删除任何资源。
CLI 快速参考
vmware-monitor inventory vms [--target <t>] [--limit 20] [--power-state poweredOn]
vmware-monitor inventory hosts [--target <t>]
vmware-monitor inventory datastores [--target <t>]
vmware-monitor inventory clusters [--target <t>]
vmware-monitor inventory networks [--target <t>]
vmware-monitor health alarms [--target <t>]
vmware-monitor health events [--hours 24] [--severity warning]
vmware-monitor health sensors [--target <t>]
vmware-monitor health services [--host <esxi>] [--target <t>]
vmware-monitor vm info <vm-name> [--target <t>]
vmware-monitor scan now [--target <t>]
vmware-monitor daemon start|stop|status
vmware-monitor 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)
- 对于自签名证书:设置
disableSslCertValidation: true
事件返回结果太多
使用严重程度过滤器:--severity warning(默认)会过滤掉信息级别的事件。使用 --hours 4 缩小时间范围。
VM 信息显示“guest_os: unknown”
VMware Tools 未安装或未在客户机中运行。安装/启动 VMware Tools 以获取客户机操作系统检测、IP 地址和客户机系列信息。
Doctor 通过,但命令因超时而失败
vCenter 可能负载过高。尝试直接针对特定 ESXi 主机而非 vCenter,或者在 config.yaml 中增加连接超时时间。
设置
uv tool install vmware-monitor
mkdir -p ~/.vmware-monitor
cp config.example.yaml ~/.vmware-monitor/config.yaml
cp .env.example ~/.vmware-monitor/.env
chmod 600 ~/.vmware-monitor/.env
# 编辑 ~/.vmware-monitor/config.yaml(目标)和 .env(密码)
所有工具都通过 vmware-policy 自动审计。审计日志:
vmware-audit log --last 20
完整设置指南、安全细节和 AI 平台兼容性:参见
references/setup-guide.md
审计与安全
所有操作都通过 vmware-policy(@vmware_tool 装饰器)自动审计:
- 每个工具调用记录到
~/.vmware/audit.db(SQLite,框架无关) - 策略规则通过
~/.vmware/rules.yaml强制执行(拒绝规则、维护窗口、风险级别) - 风险分类:每个工具标记为低/中/高/严重
- 查看最近操作:
vmware-audit log --last 20 - 查看被拒绝的操作:
vmware-audit log --status denied
vmware-policy 作为依赖项自动安装——无需手动设置。