VMware Monitor(唯讀)
免責聲明:這是一個社群維護的開源專案,與 VMware, Inc. 或 Broadcom Inc. 無任何關聯、背書或贊助關係。「VMware」與「vSphere」為 Broadcom 的商標。原始碼以 MIT 授權公開於 github.com/zw008/VMware-Monitor 供稽核。
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、記憶體、磁碟、NIC、快照、客體 OS、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 Agent(尤其是較小的本地模型)可以直接讀取這些提示,決定下一步要呼叫哪個技能和工具,無需自行推理技能路由。
使用配套技能處理:
- 開關電源、部署、複製、遷移 -->
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 tokens |
| 雲端模型(Claude、GPT-4o) | 任一 | MCP 提供結構化 JSON 輸入/輸出 |
| 自動化管線 | 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、記憶體、磁碟、NIC、快照) |
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
故障排除
Alarms 回傳空值,但 vCenter 顯示有警示
get_alarms 工具查詢的是根資料夾層級的觸發警示。部分警示是實體特定的 — 請改為檢查事件:get_events --hours 1 --severity info。
「連線被拒」錯誤
- 執行
vmware-monitor doctor進行診斷 - 確認 config.yaml 中的目標主機名稱/IP 及連接埠 (443)
- 若使用自簽憑證:設定
disableSslCertValidation: true
Events 回傳過多結果
使用嚴重性過濾:--severity warning(預設值)會過濾掉 info 層級的事件。使用 --hours 4 縮小時間範圍。
VM info 顯示「guest_os: unknown」
VMware Tools 未安裝或未在客體中執行。請安裝/啟動 VMware Tools 以取得客體 OS 偵測、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 會自動作為相依套件安裝 — 無需手動設定。