关于 VMware Monitor
VMware Monitor 是面向 vCenter 和 ESXi 运维人员的只读监控服务。它将清单与健康数据整合为关联报告,并通过测试将 vSphere 调用限制在经审查的允许列表内。
主要功能
- 01vCenter 和 ESXi 清单查询
- 02告警、事件与硬件健康监控
- 03VM、主机和数据存储调查报告
- 04跨 vCenter 问题汇总
- 05离线 HTML 报告快照
适用场景
- 01排查集群和 vCenter 的待处理问题
- 02追踪 VM 或主机相关事件
- 03检查数据存储容量与关联对象
MCP 相关
通过 MCP 暴露 VMware 查询工具,供客户端读取清单、健康信息和调查报告。代码库不包含改变 vCenter 或 ESXi 状态的操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
VMware Monitor
作者:Wei Zhou,VMware by Broadcom — [email protected] 这是由 VMware 工程师发起的社区项目,并非 VMware 官方产品。 如需 VMware 官方开发者工具,请访问 developer.broadcom.com。
English | 中文
只读 VMware vCenter/ESXi 监控 — 33 个工具。此代码库中不存在任何破坏性操作,并且有测试对此进行强制检查。
为何单独设立仓库? VMware Monitor 完全独立于 VMware-AIops。此代码库中不存在关机、删除、创建、重新配置、创建/还原/删除快照、克隆或迁移功能——这不是提示词限制,而是功能缺失。
如何精确地强制执行。
tests/eval/regression/test_read_only_enforcement.py使用ast解析每个源文件,并要求软件包调用的每个 vSphere 方法都出现在经过审查的允许列表中,同时与 pyVmomi 自身的类型元数据进行交叉核对:任何返回vim.Task的方法,或在 vCenter 上需要非只读权限的方法,都会导致检查失败,除非有人明确记录了原因。目前该允许列表包含 14 个方法。这项检查针对的是已编写的代码——它无法识别运行时拼接的方法名,也不会自动运行,因此只有在有人运行测试套件时才能发挥作用。若要获得完全不依赖此仓库的保障,请让技能使用仅拥有 vCenter 内置只读角色的专用帐户(哪些读取操作需要更高权限)。“只读”不涵盖什么。 这是对 vCenter/ESXi 的说明:没有任何代码路径会更改其状态。在 vCenter 上,该技能只会打开自己的登录会话和短期查询句柄,并在使用后释放。它确实会在本地写入内容:
~/.vmware-monitor/config.yaml和.env(通过init写入;加载时,.env中的明文密码会被改写为b64:格式)、审计日志(MCP 调用写入~/.vmware/audit.db,命令行命令写入~/.vmware-monitor/audit.log)、位于~/vmware-health/的--html快照,以及——仅在执行daemon start后——daemon.pid、scan.log,并向你配置的 webhook 发送请求。完整列表见:设置指南。
配套技能
| 技能 | 范围 | 工具 | 安装 |
|---|---|---|---|
| vmware-aiops ⭐ 入口 | VM 生命周期、部署、来宾操作、集群 | 49 | uv tool install vmware-aiops |
| vmware-storage | 数据存储、iSCSI、vSAN | 11 | uv tool install vmware-storage |
| vmware-vks | Tanzu 命名空间、TKC 集群生命周期 | 20 | uv tool install vmware-vks |
| vmware-nsx | NSX 网络:网段、网关、NAT、IPAM | 33 | uv tool install vmware-nsx-mgmt |
| vmware-nsx-security | DFW 微分段、安全组、Traceflow | 21 | uv tool install vmware-nsx-security |
| vmware-aria | Aria Ops 指标、告警、容量规划 | 28 | uv tool install vmware-aria |
| vmware-avi | AVI(NSX ALB)负载均衡、Kubernetes 上的 AKO | 28 | uv tool install vmware-avi |
| vmware-harden | 合规基线、偏差检测(只读) | 6 | uv tool install vmware-harden |
| vmware-log-insight | 集中式 syslog 搜索、聚合、告警 | 7 | uv tool install vmware-log-insight |
| vmware-debug | 事件时间线关联、根因分析 | 2 | uv tool install vmware-debug |
| vmware-pilot | 多步骤工作流编排、审批关卡 | 13 | uv tool install vmware-pilot |
升级到 2.0
2.0 将其中 23 个 MCP 工具重命名为动词开头(例如 active_sessions → list_active_sessions、active_tasks → list_active_tasks、certificate_status → get_certificate_status)。完整的旧名称 → 新名称对照表见
RELEASE_NOTES.md。其他内容均不变:工具、参数、安全关卡和 CLI 命令都相同。如果 Agent 提示词、脚本或 ~/.vmware/rules.yaml 中指定了工具,请更新名称。不过,使用旧名称编写的拒绝规则仍可正常工作,前提是 vmware-policy ≥ 1.18(vmware-audit policy 会列出重命名后适用范围扩大的规则);vmware-pilot ≥ 1.13 会转换已保存工作流中的旧名称。
如果低于 2.0 的安装共用该 rules.yaml,也请将其升级到 vmware-policy ≥ 1.18.2:它会针对新旧两种名称匹配每条规则,因此同一个文件可供两者使用。
⚡ 快速调查报告
五份主观精选的只读报告,解答运维人员真正关心的问题——每份报告都会在服务端进行聚合和关联分析,并返回高信号结果(绝非原始清单)。每份报告还支持通过 --html 生成独立的离线 HTML 快照(无外部资源,不会有任何内容离开本机;深入详情会折叠在原生 <details> 区段中,不使用 JavaScript)。
| 问题 | 命令 | 关联分析内容 |
|---|---|---|
| “所有集群中有没有哪里着火了?” | vmware-monitor summary | 每个集群的主机、VM 电源状态、实时 CPU/内存和警报 → 按优先级排列的前 N 个问题 + 各集群状态 |
| “所有 vCenter 中现在有哪些事项需要关注?” | vmware-monitor attention | 将所有已配置的 vCenter 合并为一个全局排序的问题列表;无法访问的目标会进行优雅降级 |
| “这台 VM 周边发生了什么?” | vmware-monitor investigate vm <name> | VM 状态 + 所在主机 + 集群 + 所用数据存储 + 快照 + 警报 + 性能 + 合并后的事件时间线 |
| “这台主机周边发生了什么?” | vmware-monitor investigate host <name> | 主机状态 + 集群 + 其上运行的 VM + 已挂载的数据存储 + 警报 + 性能 + 关联时间线 |
| “这个数据存储周边发生了什么?” | vmware-monitor investigate datastore <name> | 容量/可用空间 + 挂载的主机 + 其承载的 VM + 警报 + 关联时间线 |
# Triage the estate, then drill into whatever it flags:
vmware-monitor attention # what needs attention now, all vCenters
vmware-monitor summary --top 5 # is anything on fire, one vCenter
vmware-monitor investigate vm web-01 --hours 72 # everything around a VM, 72h event window
vmware-monitor investigate vm web-01 --html # → offline snapshot in ~/vmware-health/
对象名称未知时会返回引导式错误,准确说明如何列出对象。通过 MCP,这些工具分别为 get_cluster_health_summary、get_cross_vcenter_attention、investigate_vm、investigate_host、investigate_datastore——模型会调用它们,并用运维语言解释聚合结果。完整标志参数请参阅:references/cli-reference.md。
快速安装(推荐)
适用于 Claude Code、Cursor、Codex、Gemini CLI、Trae 和 30 多种 AI Agent:
# Via Skills.sh
npx skills add vmware-skills/VMware-Monitor
# Via ClawHub
clawhub install @zw008/vmware-monitor
PyPI 安装(无需访问 GitHub)
# Install via uv (recommended)
uv tool install vmware-monitor
# Or via pip
pip install vmware-monitor
# China mainland mirror (faster)
pip install vmware-monitor -i https://pypi.tuna.tsinghua.edu.cn/simple
离线/隔离网络安装(从源代码安装)
本项目使用现代 PEP 517 构建系统(hatchling),因此按设计不包含
setup.py——这是预期情况,并非文件缺失。如果你克隆了源代码并遇到
ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build,说明你的 pip 版本早于 21.3,无法使用非 setuptools 后端进行 可编辑(-e)安装。可编辑模式是为开发者提供的便利功能,运行工具并不需要它——可任选以下一种方式:
# From the source tree — a normal (non-editable) install builds a wheel:
pip install . # NOT pip install -e .
# ...or upgrade pip first, and editable works too:
pip install --upgrade pip && pip install -e .
对于真正的隔离网络主机,请在联网机器上构建 wheel 并复制过去——这样目标主机无需联网:
# On a connected machine, collect this package + its dependencies as wheels:
pip wheel . -w dist # → dist/*.whl (or: uv build, for just this package)
# Copy dist/ to the air-gapped host, then install offline:
pip install --no-index --find-links dist vmware-monitor
功能(只读)
架构
User (Natural Language)
↓
AI CLI Tool (Claude Code / Gemini / Codex / Aider / Continue / Trae / Kimi)
↓ Reads SKILL.md / AGENTS.md / rules
↓
vmware-monitor CLI (read-only)
↓ pyVmomi (vSphere SOAP API)
↓
vCenter Server ──→ ESXi Clusters ──→ VMs
or
ESXi Standalone ──→ VMs
版本兼容性
| vSphere / VCF 版本 | 支持情况 | 备注 |
|---|---|---|
| VCF 9.1 / vSphere 9.1 | ✅ 完全支持 | 于 2026-05-12 发布。pyVmomi <10.0 可通过 SOAP 解析并建立连接。 |
| VCF 9.0 / vSphere 9.0 | ✅ 完全支持 | pyVmomi 8.0.3+ 可连接 vSphere 9 SOAP API。 |
| 8.0 / 8.0U1-U3 | ✅ 完全支持 | pyVmomi 8.0.3+ |
| 7.0 / 7.0U1-U3 | ✅ 完全支持 | 支持所有只读 API |
| 6.7 | ✅ 兼容 | 向后兼容,已测试 |
| 6.5 | ✅ 兼容 | 向后兼容,已测试 |
Broadcom 官方参考资料
- SDK:https://developer.broadcom.com/sdks — VCF Python SDK(推荐用于 VCF 9+,包含 pyVmomi + vSAN SDK)、适用于 Python 的 vSphere Automation SDK
- REST API:https://developer.broadcom.com/xapis — vSphere Automation API、VCF API
- CLI 工具:https://developer.broadcom.com/tools — PowerCLI 9.1、ESXCLI、OVF Tool
1. 清单
| 功能 | vCenter | ESXi | 详情 |
|---|---|---|---|
| 列出虚拟机 | ✅ | ✅ | 名称、电源状态、CPU、内存、客户机操作系统、IP、folder_path(vCenter 清单文件夹,例如 /Datacenters/Production/Web Tier);MCP list_virtual_machines 支持使用 folder_filter 搜索文件夹树,且不区分大小写 |
| 列出主机 | ✅ | ⚠️ 仅自身 | CPU 核心数、内存、ESXi 版本、虚拟机数量、运行时间 |
| 列出数据存储 | ✅ | ✅ | 容量、可用/已用空间、类型(VMFS/NFS)、使用率 |
| 列出集群 | ✅ | ❌ | 主机数量、DRS/HA 状态 |
| 列出网络 | ✅ | ✅ | 网络名称、关联的虚拟机数量、可访问性 — CLI inventory networks,MCP list_all_networks |
2. 健康状况与监控
| 功能 | vCenter | ESXi | 详情 |
|---|---|---|---|
| 活动警报 | ✅ | ✅ | 严重性、警报名称、实体、时间戳 |
| 事件/日志查询 | ✅ | ✅ | 按时间范围和严重性筛选;支持 50 多种事件类型 |
| 硬件传感器 | ✅ | ✅ | 每个传感器的 type(温度/电压/风扇等)、读数、单位和健康 status(绿色/黄色/红色)— CLI health sensors,MCP get_host_sensors |
| 主机服务 | ✅ | ✅ | hostd、vpxa 的运行/停止状态 — CLI health services,MCP get_host_services |
| 账户访问权限 | ✅ | ✅ | 服务使用的账户,以及该账户是否拥有各工具在根文件夹上的权限 — CLI access-info,MCP get_access_info |
受监控的事件类型:
| 类别 | 事件 |
|---|---|
| 虚拟机故障 | VmFailedToPowerOnEvent、VmDiskFailedEvent、VmFailoverFailed |
| 主机问题 | HostConnectionLostEvent、HostShutdownEvent、HostIpChangedEvent |
| 存储 | DatastoreCapacityIncreasedEvent、SCSI 高延迟 |
| HA/DRS | DasHostFailedEvent、DrsVmMigratedEvent、DrsSoftRuleViolationEvent |
| 身份验证 | UserLoginSessionEvent、BadUsernameSessionEvent |
3. 虚拟机信息与快照列表(只读)
| 功能 | 详情 |
|---|---|
| 虚拟机信息 | 名称、电源状态、客户机操作系统、CPU、内存、IP、VMware Tools、磁盘、NIC、folder_path |
| 快照列表 | 列出已有快照及其名称和创建时间(不支持创建/还原/删除)— CLI vm snapshot-list,MCP 工具 list_vm_snapshots |
| 备份窗口 | 根据 vCenter 任务历史记录,备份在虚拟机上保持快照打开的时长。CLI snapshots backup-window,MCP 工具 get_vm_backup_snapshot_history。这是备份作业时长的下限,并非其官方时长 |
4. 定时扫描与通知
| 功能 | 详情 |
|---|---|
| 守护进程 | 基于 APScheduler,可配置间隔(默认 15 min) |
| 多目标扫描 | 按顺序扫描所有已配置的 vCenter/ESXi 目标 |
| 扫描内容 | 每个周期:触发的告警、lookback_hours 范围内的 vCenter 事件,以及 ESXi 主机日志 hostd、vmkernel、vpxa 中的新行 |
| 主机日志 | 增量读取:每行在每次守护进程运行时只报告一次(重启后的守护进程会重新读取每个日志最近的 500 行一次)。日志轮转,或两个周期之间新增超过 500 行时,会添加一条 info 行,说明哪些行未扫描。读取主机日志需要 Global.Diagnostics 权限,而 vCenter 的 Read-Only 角色不包含该权限;无法读取的日志会生成一条说明原因的 info 行,绝不会悄无声息地报出“全部正常” |
| 日志分析 | 匹配 error、fail、critical、panic、lost access、cannot、timeout、refused、corrupt 的主机日志行——包含 critical/panic/corrupt 的行标记为 critical,其余标记为 warning |
| 结构化日志 | 输出 JSONL 到 ~/.vmware-monitor/scan.log——包含每个问题,也包括 info 行 |
| Webhook | Slack、Discord 或任意 HTTP 端点。接收每个 critical 问题和每个告警/事件 warning;主机日志 warning 仅写入扫描日志,info 行绝不会发送 |
| 周期摘要 | 守护进程日志输出中每个周期占一行:发现的问题(以及发送到 webhook 的数量)、无法读取的主机日志、存在未扫描行的日志、失败的扫描阶段。如果任何扫描阶段失败或无法连接某个目标,则显示 Scan INCOMPLETE,绝不会显示“全部正常” |
| 守护进程管理 | daemon start/stop/status、PID 文件、平稳关闭 |
5. 安全功能
| 功能 | 详情 |
|---|---|
| 代码级隔离 | 独立代码库——代码中不含任何破坏性函数,并通过针对每次 vSphere 调用的 AST 允许列表门禁进行检查(tests/eval/regression/test_read_only_enforcement.py) |
| 审计跟踪 | MCP 工具调用以及所有访问 vCenter 的 CLI 命令都会记录到 ~/.vmware/audit.db(SQLite,通过 vmware-policy);CLI 查询也会追加到 ~/.vmware-monitor/audit.log(JSONL) |
| 密码保护 | 加载 .env 文件时检查权限(权限不是 600 时发出警告) |
| 支持 SSL 自签名证书 | verify_ssl: false——仅适用于隔离实验环境中使用自签名证书的 ESXi;生产环境应使用 CA 签名的证书 |
| 提示词注入防护 | vSphere 事件消息和主机日志会被截断、清理,并用边界标记括起来 |
| Webhook 数据范围 | 默认禁用。配置后,守护进程只会向你的 URL 发送:每个 critical 问题(告警、事件、匹配 critical/panic/corrupt 的 ESXi 日志行、无法连接的目标)和每个告警/事件 warning——主机日志 warning 保留在扫描日志中,info 行绝不会发送。每个问题都包含实体名称和消息:经过清理的告警、事件或 ESXi 日志文本,或连接错误,其中可能包含主机名、IP 和用户名。不会发送该技能配置或 .env 中的凭据 |
| 生产环境建议 | AI Agent 可能误解上下文并执行意外的破坏性操作——现实中的事故表明,由 AI 驱动的工具曾删除生产数据库和整个环境。VMware-Monitor 从自身代码中消除了这类风险:不存在破坏性代码路径,添加此类代码会导致允许列表门禁构建失败。搭配只读 vCenter 账户使用,提供不依赖此代码库的防护。仅在开发/实验室环境中使用 VMware-AIops |
有意不包含的功能
以下操作不存在于此代码仓库中:
- ❌ 开启/关闭、重置、挂起 VM
- ❌ 创建、删除、重新配置 VM
- ❌ 创建、还原、删除快照
- ❌ 克隆或迁移 VM
- ❌
_double_confirm、_show_state_preview、_validate_vm_params
如需执行这些操作,请使用完整的 VMware-AIops 代码仓库。
使用本地模型或小型模型?请参阅 skills/vmware-monitor/references/agent-guardrails.md。
常见工作流
每日健康检查
- 检查警报:
vmware-monitor health alarms --target prod-vcenter - 查看近期事件:
vmware-monitor health events --hours 24 --severity warning - 列出主机:
vmware-monitor inventory hosts— 检查连接状态和内存使用情况
调查特定对象(逐层深入)
一次调用即可将对象与其周边基础设施及近期历史关联起来 — 请参阅上文的 ⚡ 快速调查报告。
- 从分诊开始:
vmware-monitor attention(所有 vCenter)或vmware-monitor summary(单个 vCenter) - 深入查看标记的问题:
vmware-monitor investigate vm <name>(或host/datastore) - 使用
--hours 72扩大事件时间范围;使用--html分享(离线快照) - 如果名称未知 → 教学错误会指出如何列出对象(
inventory vms/hosts、list_all_datastores)
设置持续监控
- 在
~/.vmware-monitor/config.yaml中配置 webhook - 启动守护进程:
vmware-monitor daemon start - 守护进程每 15 分钟扫描一次,并向 Slack/Discord 发送警报
故障排除
警报返回空结果,但 vCenter 显示有警报
get_alarms 工具会查询根文件夹级别触发的警报。有些警报是针对特定实体的 — 请尝试改为检查事件:vmware-monitor health events --hours 1 --severity info。
“Connection refused” 错误
- 运行
vmware-monitor doctor进行诊断 - 在
config.yaml中确认目标主机名/IP 和端口(443) - 对于自签名证书:信任 CA;仅在隔离的实验室主机上设置
verify_ssl: false
事件返回的结果过多
使用严重性筛选器:--severity warning(默认值)会筛除 info 级别的事件。使用 --hours 4 缩小时间范围。
VM 信息显示 “guest_os: unknown”
来宾操作系统中未安装或未运行 VMware Tools。安装/启动 VMware Tools,以检测来宾操作系统、IP 地址和来宾系列信息。
Doctor 检查通过,但命令因超时而失败
vCenter 可能负载过高。请尝试直接指定某台 ESXi 主机,而不是 vCenter;或者在 config.yaml 中延长连接超时。
doctor 报告 “no vSphere role”,或每条命令都因 “session is not authenticated” 而失败
该账户可以登录,但没有 vSphere 角色,因此 vCenter 不会为其创建会话(AIops#47)。请在 vCenter 根文件夹上为其分配角色(只读或更高权限):Administration > Access Control > Global Permissions。更改密码无济于事。vmware-monitor doctor 会明确报告此情况,而 attention 会将此类目标计为未读取(整体状态至少为 WARN)。
支持的 AI 平台
| 平台 | 状态 | 配置文件 | AI 模型 |
|---|---|---|---|
| Claude Code | ✅ 原生技能 | skills/vmware-monitor/SKILL.md | Anthropic Claude |
| Gemini CLI | ✅ 上下文文件 + MCP | skills/vmware-monitor/SKILL.md | Google Gemini |
| OpenAI Codex CLI | ✅ 技能 + AGENTS.md | skills/vmware-monitor/SKILL.md | OpenAI GPT |
| Aider | ✅ 约定 | skills/vmware-monitor/SKILL.md | 任意(云端 + 本地) |
| Continue CLI | ✅ 规则 | skills/vmware-monitor/SKILL.md | 任意(云端 + 本地) |
| Trae IDE | ✅ 规则 | skills/vmware-monitor/SKILL.md | Claude/DeepSeek/GPT-4o |
| Kimi Code CLI | ✅ 技能 | skills/vmware-monitor/SKILL.md | Moonshot Kimi |
| MCP 服务 | ✅ MCP 协议 | vmware_monitor/mcp_server/ | 任意 MCP 客户端 |
| Python CLI | ✅ 独立运行 | N/A | N/A |
平台对比
| 功能 | Claude Code | Gemini CLI | Codex CLI | Aider | Continue | Trae IDE | Kimi CLI |
|---|---|---|---|---|---|---|---|
| 云端 AI | Anthropic | OpenAI | 任意 | 任意 | 多种 | Moonshot | |
| 本地模型 | — | — | — | Ollama | Ollama | — | — |
| 技能系统 | SKILL.md | 上下文文件 | SKILL.md | — | 规则 | 规则 | SKILL.md |
| MCP 支持 | 原生 | 原生 | 通过技能 | 第三方 | 原生 | — | — |
| 免费额度 | — | 60 次请求/分钟 | — | 自托管 | 自托管 | — | — |
MCP 服务集成
vmware-monitor MCP 服务可与任何兼容 MCP 的 Agent 或工具配合使用。可直接使用的配置模板位于 examples/mcp-configs/。所有 33 个工具均为只读,并通过上文所述的允许列表关卡强制执行。
| Agent / 工具 | 本地模型支持 | 配置模板 | 集成指南 |
|---|---|---|---|
| Xiaoguai (小怪) | ✅ 自托管,支持任意大模型 | MCP 设置 | 指南 |
| Goose | ✅ Ollama、LM Studio | goose.json | 指南 |
| LocalCowork | ✅ 完全离线 | localcowork.json | 指南 |
| mcp-agent | ✅ Ollama、vLLM | mcp-agent.yaml | 指南 |
| VS Code Copilot | — | vscode-copilot.json | 指南 |
| Cursor | — | cursor.json | — |
| Continue | ✅ Ollama | continue.yaml | 指南 |
| Claude Code | — | claude-code.json | — |
Xiaoguai (小怪) — 来自同一维护者、可自托管且以审计为先的 Agent 平台(Rust、单个二进制文件 + 内嵌 SQLite)。它将只读的 vmware-monitor MCP 服务作为其工具箱之一;作为 MCP 客户端和 MCP 服务,其 HMAC 链式审计日志与此技能的只读设计相得益彰——每次查询都会记录,且此处没有任何代码路径会修改数据。请参阅其 MCP 集成指南。
完全本地运行(无需云端 API):
# Aider + Ollama + vmware-monitor (via SKILL.md)
aider --conventions skills/vmware-monitor/SKILL.md --model ollama/qwen2.5-coder:32b
# Any MCP agent + local model + vmware-monitor MCP server
# See examples/mcp-configs/ for your agent's config format
安装
步骤 0:准备工作
# Python 3.10+ required
python3 --version
# Node.js 18+ required for Gemini CLI and Codex CLI
node --version
步骤 1:克隆并安装 Python 后端
git clone https://github.com/vmware-skills/VMware-Monitor.git
cd VMware-Monitor
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
步骤 2:配置
mkdir -p ~/.vmware-monitor
cp config.example.yaml ~/.vmware-monitor/config.yaml
# Edit config.yaml with your vCenter/ESXi targets
通过 .env 文件设置密码(推荐):
cp .env.example ~/.vmware-monitor/.env
chmod 600 ~/.vmware-monitor/.env
# Edit and fill in your passwords
安全提示:建议使用
.env文件,而不是通过命令行export设置密码,以免密码出现在 shell 历史记录中。config.yaml仅存储主机名、端口以及.env文件的引用,不包含密码或令牌。所有密钥仅存储在.env中(chmod 600)。Webhook 通知默认处于禁用状态;启用后,负载只会发送到用户配置的 URL,且不包含配置中的凭据,但会包含 vSphere 自身的告警、事件和日志文本,其中可能包含主机名、IP 和用户名。我们建议使用具有 vCenter 内置只读角色的专用服务账户。
密码环境变量命名约定:
VMWARE_{TARGET_NAME_UPPER}_PASSWORD
# Replace hyphens with underscores, UPPERCASE
# Example: target "home-esxi" → VMWARE_HOME_ESXI_PASSWORD
# Example: target "prod-vcenter" → VMWARE_PROD_VCENTER_PASSWORD
步骤 3:连接 AI 工具
选择以下一项或多项:
选项 A:Claude Code
方法 1:Skills.sh 或 ClawHub(推荐)
任一安装程序都会将技能安装到 Claude Code 的技能目录中:
npx skills add vmware-skills/VMware-Monitor
# or
clawhub install @zw008/vmware-monitor
方法 2:手动安装技能
git clone https://github.com/vmware-skills/VMware-Monitor.git
cd VMware-Monitor
# Copy the skill into Claude Code's personal skills directory
mkdir -p ~/.claude/skills/vmware-monitor
cp -r skills/vmware-monitor/. ~/.claude/skills/vmware-monitor/
如需访问工具(而不只是技能上下文),还需注册 MCP 服务:
claude mcp add vmware-monitor -- vmware-monitor mcp
重启 Claude Code,然后:
> Show me all VMs on esxi-lab.example.com
选项 B:Gemini CLI
# Install Gemini CLI
npm install -g @google/gemini-cli
# Load the skill as project context (Gemini CLI reads GEMINI.md on startup)
cp skills/vmware-monitor/SKILL.md ./GEMINI.md
如需访问工具(而不只是上下文),请在 ~/.gemini/settings.json 中注册 MCP 服务:
{
"mcpServers": {
"vmware-monitor": {
"command": "vmware-monitor",
"args": ["mcp"],
"env": { "VMWARE_MONITOR_CONFIG": "~/.vmware-monitor/config.yaml" }
}
}
}
然后启动 Gemini CLI:
gemini
> Show me all VMs on my ESXi host
选项 C:OpenAI Codex CLI
# Install Codex CLI
npm i -g @openai/codex
# Or on macOS:
# brew install --cask codex
# Copy skill to Codex skills directory
mkdir -p ~/.codex/skills/vmware-monitor
cp skills/vmware-monitor/SKILL.md ~/.codex/skills/vmware-monitor/SKILL.md
# Copy AGENTS.md to project root
cp skills/vmware-monitor/SKILL.md ./AGENTS.md
然后启动 Codex CLI:
codex --enable skills
> List all VMs on my ESXi
选项 D:Aider(支持本地模型)
# Install Aider
pip install aider-chat
# Install Ollama for local models (optional)
# macOS:
brew install ollama
ollama pull qwen2.5-coder:32b
# Run with cloud API
aider --conventions skills/vmware-monitor/SKILL.md
# Or with local model via Ollama
aider --conventions skills/vmware-monitor/SKILL.md \
--model ollama/qwen2.5-coder:32b
选项 E:Continue CLI(支持本地模型)
# Install Continue CLI
npm i -g @continuedev/cli
# Copy rules file
mkdir -p .continue/rules
cp skills/vmware-monitor/SKILL.md .continue/rules/vmware-monitor.md
为本地模型配置 ~/.continue/config.yaml:
models:
- name: local-coder
provider: ollama
model: qwen2.5-coder:32b
然后:
cn
> Check ESXi health and alarms
选项 F:Trae IDE
将规则文件复制到项目的 .trae/rules/ 目录:
mkdir -p .trae/rules
cp skills/vmware-monitor/SKILL.md .trae/rules/project_rules.md
Trae IDE 的 Builder Mode 会在启动时读取 .trae/rules/ 中的 Markdown 文件。
注意:你也可以在 Trae IDE 中安装 Claude Code 扩展,并直接使用
.claude/skills/格式。
选项 G:Kimi Code CLI
# Copy skill file to Kimi skills directory
mkdir -p ~/.kimi/skills/vmware-monitor
cp skills/vmware-monitor/SKILL.md ~/.kimi/skills/vmware-monitor/SKILL.md
选项 H:MCP 服务(Glama / Claude Desktop)
MCP 服务通过 Model Context Protocol 将 VMware 只读监控功能作为工具提供。它适用于任何兼容 MCP 的客户端(Claude Desktop、Cursor 等)。
运行 uv tool install vmware-monitor 后,只需一条命令即可启动 MCP 服务(v1.5.15+):
# Recommended — single command, no network re-resolve
vmware-monitor mcp
# With a custom config path
VMWARE_MONITOR_CONFIG=/path/to/config.yaml vmware-monitor mcp
Claude Desktop 配置(claude_desktop_config.json):
{
"mcpServers": {
"vmware-monitor": {
"command": "vmware-monitor",
"args": ["mcp"],
"env": {
"VMWARE_MONITOR_CONFIG": "/path/to/config.yaml"
}
}
}
}
替代方案:使用 uvx(无需安装)或旧版入口点
# Run without installing (requires PyPI access each launch)
uvx --from vmware-monitor vmware-monitor mcp
# Legacy entry point (still works, kept for backward compatibility)
vmware-monitor-mcp
在企业 TLS 代理后运行? uvx 可能会报错
invalid peer certificate: UnknownIssuer。 请使用上方推荐的vmware-monitor mcp形式(无需联网),或设置UV_NATIVE_TLS=true。
选项 I:独立 CLI(无需 AI)
# Already installed in Step 1
source .venv/bin/activate
vmware-monitor inventory vms --target home-esxi
vmware-monitor health alarms --target home-esxi
vmware-monitor vm info my-vm --target home-esxi
更新 / 升级
已经安装?重新运行对应渠道的安装命令即可获取最新版本:
| 安装渠道 | 更新命令 |
|---|---|
| ClawHub | clawhub install @zw008/vmware-monitor |
| Skills.sh | npx skills add vmware-skills/VMware-Monitor |
| Git 克隆 | cd VMware-Monitor && git pull origin main && uv pip install -e . |
| uv | uv tool install vmware-monitor --force |
检查当前版本:vmware-monitor --version
中国云模型
适用于偏好使用国内云 API,或访问海外服务受限的中国用户。
DeepSeek
export DEEPSEEK_API_KEY="your-key"
aider --conventions skills/vmware-monitor/SKILL.md \
--model deepseek/deepseek-coder
Qwen(阿里云)
export DASHSCOPE_API_KEY="your-key"
aider --conventions skills/vmware-monitor/SKILL.md \
--model qwen/qwen-coder-plus
本地模型(Aider + Ollama)
完全离线运行——无需云 API、无需互联网,充分保护隐私。
brew install ollama
ollama pull qwen2.5-coder:32b
ollama serve
aider --conventions skills/vmware-monitor/SKILL.md \
--model ollama/qwen2.5-coder:32b
CLI 参考
# Diagnostics
vmware-monitor doctor # Check environment, config, connectivity
vmware-monitor doctor --skip-auth # Skip vSphere auth check (faster)
vmware-monitor access-info [--tool <mcp-tool>] [--target <name>] # Account in use + privileges per tool
# MCP Config Generator
vmware-monitor mcp-config generate --agent goose # Generate config for Goose
vmware-monitor mcp-config generate --agent claude-code # Generate config for Claude Code
vmware-monitor mcp-config list # List all supported agents
# Inventory
vmware-monitor inventory vms [--target <name>]
vmware-monitor inventory vms --limit 10 --sort-by memory_mb # Top 10 VMs by memory
vmware-monitor inventory vms --power-state poweredOn # Only powered-on VMs
vmware-monitor inventory vms --sort-by folder_path # Group VMs by inventory folder
# All `inventory vms` results include a `folder_path` field (e.g. `/Datacenters/Production/Web Tier`).
# MCP tool `list_virtual_machines` additionally supports `folder_filter="Production"` for case-insensitive folder-tree search.
vmware-monitor inventory hosts [--target <name>]
vmware-monitor inventory datastores [--target <name>]
vmware-monitor inventory clusters [--target <name>]
# Health
vmware-monitor health alarms [--target <name>]
vmware-monitor health events [--hours 24] [--severity warning]
# VM Info (read-only)
vmware-monitor vm info <vm-name>
vmware-monitor vm snapshot-list <vm-name>
# Scanning & Daemon
vmware-monitor scan now [--target <name>]
vmware-monitor daemon start
vmware-monitor daemon stop
vmware-monitor daemon status
配置
所有选项请参阅 config.example.yaml。
| 部分 | 键 | 默认值 | 描述 |
|---|---|---|---|
| targets | name | — | 友好名称 |
| targets | host | — | vCenter/ESXi 主机名或 IP |
| targets | type | vcenter | vcenter 或 esxi |
| targets | port | 443 | 连接端口 |
| targets | verify_ssl | true | 验证目标的 TLS 证书(仅对使用自签名证书的实验室主机设为 false) |
| scanner | interval_minutes | 15 | 扫描频率 |
| scanner | severity_threshold | warning | 最低严重性:critical/warning/info |
| scanner | lookback_hours | 1 | 向前回溯的扫描时间 |
| notify | log_file | ~/.vmware-monitor/scan.log | JSONL 日志输出 |
| notify | webhook_url | — | Webhook 端点(Slack、Discord 等) |
项目结构
VMware-Monitor/
├── skills/ # Skills index (npx skills add)
│ └── vmware-monitor/
│ ├── SKILL.md
│ └── references/ # Detailed docs loaded on-demand
├── vmware_monitor/ # Python backend (read-only only)
│ ├── config.py # YAML + .env config
│ ├── connection.py # Multi-target pyVmomi
│ ├── cli.py # Typer CLI (read-only commands only)
│ ├── ops/
│ │ ├── inventory.py # VMs, hosts, datastores, clusters
│ │ ├── health.py # Alarms, events, sensors
│ │ └── vm_info.py # VM info, snapshot list (read-only)
│ ├── scanner/ # Log scanning daemon
│ ├── notify/ # Notifications (JSONL + webhook)
│ └── mcp_server/ # MCP server (read-only tools only)
├── examples/mcp-configs/ # MCP client config templates
├── tests/ # Test suite
├── smithery.yaml # Smithery marketplace config
├── RELEASE_NOTES.md
├── config.example.yaml
└── pyproject.toml
相关项目
| 技能 | 范围 | 工具 | 安装 |
|---|---|---|---|
| vmware-monitor | 只读监控、警报、事件 | 27 | uv tool install vmware-monitor |
| vmware-aiops | VM 生命周期、部署、来宾操作、集群 | 49 | uv tool install vmware-aiops |
| vmware-storage | 数据存储、iSCSI、vSAN | 11 | uv tool install vmware-storage |
| vmware-vks | Tanzu 命名空间、TKC 集群生命周期 | 20 | uv tool install vmware-vks |
故障排除与贡献
如果遇到任何错误或问题,请将错误消息、日志或屏幕截图发送至 [email protected]。欢迎贡献!
远程访问(HTTPS)和限制工具
默认情况下,vmware-monitor mcp 通过 stdio 与一个本地客户端通信,并提供所有工具。以下两个选项可以更改此设置
(vmware-policy ≥ 1.21.0)。
通过 HTTPS 提供服务,以便其他机器上的客户端连接。每个调用方都需要一个 bearer token:
vmware-audit token create alice # prints the token once; give it to alice
vmware-audit token list # names only
vmware-audit token revoke alice # refused from its next request, no restart
vmware-monitor mcp --transport https --host 0.0.0.0 --port 8443 \
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
--public-name mcp.example.com
连接客户端(此处展示 Claude Code;任何支持 streamable HTTP 和自定义标头的 MCP 客户端均可):
claude mcp add --transport http vmware-monitor https://mcp.example.com:8443/mcp \
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
{
"mcpServers": {
"vmware-monitor": {
"type": "http",
"url": "https://mcp.example.com:8443/mcp",
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
}
}
}
- 如果没有 token,服务将无法启动;它会拒绝
--public-name以外的 Host/Origin 值,并在绑定端口前检查未经身份验证的请求是否会收到 401。请使用客户端信任的、适用于这些名称的证书。 - 如果在同一台机器上的 TLS 终止反向代理之后运行,请使用
--transport http --host 127.0.0.1 --public-name mcp.example.com,并透传Authorization标头。 - 如果在另一台机器上的负载均衡器或网关之后运行,请保留
--transport https(自签名证书也可以),在--public-name中列出负载均衡器发送的 Host 主机名,并让它转发Authorization。其健康检查可使用无需 token 的GET /healthz,该请求只会返回{"status": "ok"}(vmware-policy ≥ 1.23.0)。 - 每个请求都发送
traceparent或X-Request-ID,以便将其存储在审计记录中;随后运行vmware-audit log --correlation-id ID,即可查找同一平台请求背后的调用。 - 审计日志会将每个调用方记录为
token:<name>。调用会并行运行,每个目标最多使用VMWARE_MCP_POOL_SIZE个会话(默认值为 2);每个会话都是在目标上的一次登录,每次调用最多等待 300 s。 - 任何能访问此端点的人,都将以此服务使用的账户身份操作。 Token 用于识别调用方;它们不会授予任何平台权限。请为每个权限级别运行一个端点。
- **在同一端点上为多人或多种角色提供服务:**运行一次
vmware-audit roles enable,然后为每个 token 指定一个角色(vmware-audit token create NAME --role reader,或在roles.yaml中指定包含工具和目标的角色;vmware-policy ≥ 1.24.0)。角色会限制 token 在此端点上可调用的内容;它不能授予超出账户已有权限的权限。请参阅 vmware-policy 的 README 中的“网络调用方的角色”。
**限制工具:**此服务的所有工具均为只读,因此 --expose read 在此处不会改变任何内容;此选项适用于支持写入的技能。最小权限取决于服务使用的账户。
详情:skills/vmware-monitor/references/setup-guide.md(“通过 HTTPS 提供 MCP 服务”、“限制所提供的工具”)。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。