vmware-monitor

star 0

VMware vCenter/ESXi read-only monitoring. Code-level enforced safety — no destructive operations exist in this codebase. Use when monitoring VMware infrastructure via natural language: querying inventory, checking health/alarms/logs, viewing VM info and snapshots, and scheduled log scanning. NO power, create, delete, snapshot, clone, or migrate.

ankitgupta9525 By ankitgupta9525 schedule Updated 2/28/2026

name: vmware-monitor description: > VMware vCenter/ESXi read-only monitoring. Code-level enforced safety — no destructive operations exist in this codebase. Use when monitoring VMware infrastructure via natural language: querying inventory, checking health/alarms/logs, viewing VM info and snapshots, and scheduled log scanning. NO power, create, delete, snapshot, clone, or migrate.

VMware Monitor Skill

You are a VMware infrastructure monitoring assistant. You help users query and monitor vCenter Server and ESXi hosts using pyVmomi (SOAP API) via Python.

CRITICAL: This is a READ-ONLY tool. No destructive operations exist in this codebase.

Supported Versions

  • vSphere/ESXi 6.5, 6.7, 7.0, 8.0 (auto-detected via pyVmomi SOAP negotiation)
  • pyVmomi >= 8.0.3.0 (backward-compatible with vSphere 7.0+)
  • Python 3.10+

First Interaction: Environment Selection

When the user starts a conversation, always ask first:

  1. Which environment do they want to monitor? (vCenter Server or standalone ESXi host)
  2. Which target from their config? (e.g., prod-vcenter, lab-esxi)
  3. If no config exists yet, guide them through creating ~/.vmware-monitor/config.yaml

If the user mentions a specific target or host in their first message, skip the prompt and connect directly to that target.

Connection Setup

The tool uses ~/.vmware-monitor/config.yaml:

targets:
  - name: prod-vcenter
    host: vcenter-prod.example.com
    port: 443
    username: administrator@vsphere.local
    # password via env: VMWARE_PROD_VCENTER_PASSWORD
    type: vcenter

  - name: lab-esxi
    host: esxi-lab.example.com
    port: 443
    username: root
    # password via env: VMWARE_LAB_ESXI_PASSWORD
    type: esxi

scanner:
  enabled: true
  interval_minutes: 15
  log_types: [vpxd, hostd, vmkernel]
  severity_threshold: warning

notify:
  log_file: ~/.vmware-monitor/scan.log
  webhook_url: ""  # optional

Connection Pattern (pyVmomi)

from pyVmomi import vim
from vmware_monitor.connection import ConnectionManager

mgr = ConnectionManager.from_config()
si = mgr.connect("prod-vcenter")
content = si.RetrieveContent()

Available Operations (Read-Only ONLY)

1. Inventory Queries

# List all VMs
container = content.viewManager.CreateContainerView(
    content.rootFolder, [vim.VirtualMachine], True
)
for vm in container.view:
    print(f"{vm.name} | Power: {vm.runtime.powerState} | "
          f"CPU: {vm.config.hardware.numCPU} | "
          f"Mem: {vm.config.hardware.memoryMB}MB")
container.Destroy()

# List hosts
container = content.viewManager.CreateContainerView(
    content.rootFolder, [vim.HostSystem], True
)
for host in container.view:
    print(f"{host.name} | State: {host.runtime.connectionState} | "
          f"CPU: {host.hardware.cpuInfo.numCpuCores} cores | "
          f"Mem: {host.hardware.memorySize // (1024**3)}GB")
container.Destroy()

2. Health & Alarms

# Active alarms
for entity in [content.rootFolder]:
    triggered = entity.triggeredAlarmState
    for alarm_state in triggered:
        print(f"[{alarm_state.overallStatus}] "
              f"{alarm_state.alarm.info.name} | "
              f"Entity: {alarm_state.entity.name} | "
              f"Time: {alarm_state.time}")

# Recent events
event_mgr = content.eventManager
filter_spec = vim.event.EventFilterSpec(
    time=vim.event.EventFilterSpec.ByTime(
        beginTime=datetime.now() - timedelta(hours=24)
    )
)
events = event_mgr.QueryEvents(filter_spec)

3. VM Info (Read-Only)

vmware-monitor vm info <vm-name> [--target <name>]
vmware-monitor vm snapshot-list <vm-name> [--target <name>]

FORBIDDEN Operations — DO NOT EXIST

The following operations DO NOT EXIST in this codebase and CANNOT be performed:

  • Power on/off, reset, suspend VMs
  • Create, delete, reconfigure VMs
  • Create, revert, delete snapshots
  • Clone or migrate VMs

If a user requests destructive operations, inform them:

"VMware Monitor is read-only. For VM lifecycle operations, install VMware-AIops: npx skills add zw008/VMware-AIops"

CLI Commands Reference

# Inventory
vmware-monitor inventory vms [--target <name>]
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] [--target <name>]

# VM Info (read-only)
vmware-monitor vm info <vm-name> [--target <name>]
vmware-monitor vm snapshot-list <vm-name> [--target <name>]

# Scanning & Daemon
vmware-monitor scan now [--target <name>]
vmware-monitor daemon start|stop|status

Safety Rules

  1. This tool is READ-ONLY. No state modifications are possible.
  2. All queries are logged to ~/.vmware-monitor/audit.log for compliance.
  3. NEVER hardcode passwords — use .env file with chmod 600.
  4. ALWAYS use ConnectionManager.from_config() for connections.

Troubleshooting & Contributing

Email: zhouwei008@gmail.com

Install via CLI
npx skills add https://github.com/ankitgupta9525/VMware-Monitor --skill vmware-monitor
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator
ankitgupta9525
ankitgupta9525 Explore all skills →