VMware Log Insight
Disclaimer: Community-maintained open-source project, not affiliated with,
endorsed by, or sponsored by VMware, Inc. or Broadcom Inc. "VMware", "vSphere",
and "Aria" are trademarks of Broadcom. Source is publicly auditable under the MIT license.
Read-only log search and aggregation for VMware Aria Operations for Logs
(vRealize Log Insight) — the centralized-log data source for the VMware skill
family. Strictly non-destructive: it queries, it never writes.
What This Skill Does
| Category |
Tools |
Count |
Read or Write |
| Log search |
log_search |
1 |
Read |
| Aggregation / spikes |
log_aggregate |
1 |
Read |
| Metadata |
log_fields, log_version |
2 |
Read |
| Alerts |
alert_list, alert_get, alert_history |
3 |
Read |
7 tools, all read-only. No ingest, no alert creation/edit/delete — zero write surface.
Quick Install
uv tool install vmware-log-insight
cp config.example.yaml ~/.vmware-log-insight/config.yaml # then edit
vmware-log-insight doctor # verify connectivity
When to Use This Skill
Use it to read the actual log lines behind an incident — what an ESXi host's
vmkernel logged, vCenter vpxd errors, a login storm in VM syslog — and to find
when log volume spiked.
- vCenter events/alarms (not raw syslog)? → vmware-monitor
- Performance metrics / anomalies / capacity? → vmware-aria
- Correlate logs + events + metrics into one root-cause view? → vmware-debug
Do NOT use when there is no Log Insight appliance, or the user wants vCenter
alarms (monitor) or metric anomalies (aria). This skill only reads the log store.
Related Skills — Skill Routing
| Need |
Skill |
| Raw centralized logs + spikes |
vmware-log-insight (this) |
| vCenter events & alarms |
vmware-monitor |
| Metrics, anomalies, capacity |
vmware-aria |
| Incident correlation / root cause |
vmware-debug (feed it log_search output) |
| Network logs / DFW / traceflow |
vmware-nsx, vmware-nsx-security |
Common Workflows
1. "Find the errors on a host in the last hour"
log_search(text="error", last="1h", filters via CLI hostname=...) — or CLI: vmware-log-insight search -q error -l 1h.
- Read the
events[] (timestamp + text + fields). Narrow with a more specific text if complete=False (result was truncated).
- Failure branch — auth/connection error: the teaching message names the cause (e.g. "503: appliance starting up"); run
vmware-log-insight doctor. A 503 is a status, not a crash.
2. "Was there a log spike, and when?"
log_aggregate(text="...", last="6h", bin_width_ms=300000) — counts per 5-minute bin + spikes[] (z-score flagged).
- Take a spike's
timestamp_ms, then log_search(begin_ms=..., end_ms=...) around it to read what burst.
- Failure branch — empty bins: widen
last or drop the text filter; confirm the appliance actually receives logs from the source.
3. Correlate logs into a root-cause timeline
log_search / log_aggregate here for the log signal.
- Pull vCenter events (vmware-monitor) and metrics/anomalies (vmware-aria) for the same window/entity.
- Hand all of them to vmware-debug
incident_timeline (normalise to its event envelope) to rank root causes.
Usage Mode
- MCP (in an agent): call
log_search/log_aggregate, then pass results to vmware-debug. Primary mode.
- CLI (humans):
vmware-log-insight search -q "apd" -l 2h.
MCP Tools (7 — 7 read, 0 write)
| Category |
Tools |
| Logs |
log_search (time window + text + filters), log_aggregate (COUNT/etc + spike detection), log_fields, log_version |
| Alerts |
alert_list, alert_get, alert_history |
List envelope: log_fields, alert_list and alert_history return
{items, returned, limit, total, truncated, hint} rather than a bare list — read
the rows from items, and treat truncated: true as "there is more, raise
limit or narrow the filter". total is a real count (the appliance returns each
collection in one GET and limit is applied client-side), so a page that exactly
fills limit is still reported truncated: false when it is genuinely complete.
Query model: time windows use a relative last ("1h", "30m", "7d") or an
absolute begin_ms/end_ms (epoch ms); text is a CONTAINS search. See
references/cli-reference.md for the full constraint grammar.
Read-Only by Design
All 7 tools here are reads — no ingest, no alert creation/edit/delete, zero
write surface. Running with local or small models? See
references/agent-guardrails.md.
CLI Quick Reference
vmware-log-insight search -q "scsi apd" -l 2h # search events
vmware-log-insight search -q error -l 1h --json # raw JSON
vmware-log-insight aggregate -q error -l 6h --bin-ms 300000 # spikes
vmware-log-insight fields --name host # discover fields
vmware-log-insight alert list # defined alerts
vmware-log-insight doctor # diagnostics
vmware-log-insight mcp # start MCP server (proxy-safe)
Troubleshooting
POST /sessions returned HTTP 401 — wrong username/password/provider. Check config.yaml (provider: Local | ActiveDirectory) and the VMWARE_LOG_INSIGHT_<TARGET>_PASSWORD env var.
HTTP 503 on every call — the appliance is starting or a service isn't ready; the error says so. Wait and retry; doctor reports it as a status, not a crash.
HTTP 400 on a search — a malformed constraint. Time/field filters are path-encoded as field/OPERATOR/value; let the CLI/tool build them rather than hand-crafting.
- Empty results but logs exist — check the time window (
last) and that the appliance actually ingests from that source; widen the window.
- Default port is 9543, not 443 — set
port in config.yaml if your appliance differs.
Audit & Safety
Read-only by construction (no write tools). MCP tools run through
@vmware_tool(risk_level="low"), which records each call to the shared audit DB
(~/.vmware/audit.db). Targets may declare environment: (production /
staging / lab) in config.yaml to scope policy rules; reads are never gated
by it, so this skill is unaffected either way, but declaring it keeps any future
write tool correctly scoped. Credentials load from ~/.vmware-log-insight/.env
(chmod 600); plaintext passwords there are auto-rewritten to a grep-safe
b64: form on first load (obfuscation, not encryption — inject from a secret
manager for real at-rest secrecy). All API text passes through sanitize()
(prompt-injection defence). TLS verification is on by default; disable only for
self-signed lab appliances. See references/setup-guide.md.
License
MIT.
1---2name: vmware-log-insight3description: Use this skill whenever the user needs to search, aggregate, or investigate centralized logs in VMware VCF Operations for Logs (formerly Aria Operations for Logs / vRealize Log Insight) — the appliance that collects syslog from ESXi hosts, vCenter, and VMs. It is the log data source of the VMware family: full-text event search over a time window, aggregation with spike detection, field discovery, and alert queries. Always use this skill for "search the logs", "what did the host log", "find errors in Log Insight", "show me a log spike", "query vRealize Log Insight", "Aria Operations for Logs", "VCF Operations for Logs" when the context is explicitly VMware/vSphere/ESXi. It is strictly READ-ONLY — it never ingests, edits, or deletes anything. Do NOT use it for vCenter events/alarms (use vmware-monitor) or for performance metrics and anomalies (use vmware-aria). To correlate logs with events from other sources into one root-cause timeline, hand results to vmware-debug.4---56# VMware Log Insight78> **Disclaimer**: Community-maintained open-source project, **not affiliated with,9> endorsed by, or sponsored by VMware, Inc. or Broadcom Inc.** "VMware", "vSphere",10> and "Aria" are trademarks of Broadcom. Source is publicly auditable under the MIT license.1112Read-only log search and aggregation for **VMware Aria Operations for Logs**13(vRealize Log Insight) — the centralized-log data source for the VMware skill14family. Strictly non-destructive: it queries, it never writes.1516## What This Skill Does1718| Category | Tools | Count | Read or Write |19|---|---|:--:|:--:|20| Log search | `log_search` | 1 | Read |21| Aggregation / spikes | `log_aggregate` | 1 | Read |22| Metadata | `log_fields`, `log_version` | 2 | Read |23| Alerts | `alert_list`, `alert_get`, `alert_history` | 3 | Read |2425**7 tools, all read-only.** No ingest, no alert creation/edit/delete — zero write surface.2627## Quick Install2829```bash30uv tool install vmware-log-insight31cp config.example.yaml ~/.vmware-log-insight/config.yaml # then edit32vmware-log-insight doctor # verify connectivity33```3435## When to Use This Skill3637Use it to read the **actual log lines** behind an incident — what an ESXi host's38vmkernel logged, vCenter vpxd errors, a login storm in VM syslog — and to find39**when** log volume spiked.4041- vCenter events/alarms (not raw syslog)? → **vmware-monitor**42- Performance metrics / anomalies / capacity? → **vmware-aria**43- Correlate logs + events + metrics into one root-cause view? → **vmware-debug**4445**Do NOT use when** there is no Log Insight appliance, or the user wants vCenter46alarms (monitor) or metric anomalies (aria). This skill only reads the log store.4748## Related Skills — Skill Routing4950| Need | Skill |51|---|---|52| Raw centralized logs + spikes | **vmware-log-insight** (this) |53| vCenter events & alarms | vmware-monitor |54| Metrics, anomalies, capacity | vmware-aria |55| Incident correlation / root cause | vmware-debug (feed it `log_search` output) |56| Network logs / DFW / traceflow | vmware-nsx, vmware-nsx-security |5758## Common Workflows5960### 1. "Find the errors on a host in the last hour"611. `log_search(text="error", last="1h", filters via CLI hostname=...)` — or CLI: `vmware-log-insight search -q error -l 1h`.622. Read the `events[]` (timestamp + text + fields). Narrow with a more specific `text` if `complete=False` (result was truncated).633. **Failure branch — auth/connection error:** the teaching message names the cause (e.g. "503: appliance starting up"); run `vmware-log-insight doctor`. A 503 is a *status*, not a crash.6465### 2. "Was there a log spike, and when?"661. `log_aggregate(text="...", last="6h", bin_width_ms=300000)` — counts per 5-minute bin + `spikes[]` (z-score flagged).672. Take a spike's `timestamp_ms`, then `log_search(begin_ms=..., end_ms=...)` around it to read what burst.683. **Failure branch — empty bins:** widen `last` or drop the `text` filter; confirm the appliance actually receives logs from the source.6970### 3. Correlate logs into a root-cause timeline711. `log_search` / `log_aggregate` here for the log signal.722. Pull vCenter events (vmware-monitor) and metrics/anomalies (vmware-aria) for the same window/entity.733. Hand all of them to **vmware-debug** `incident_timeline` (normalise to its event envelope) to rank root causes.7475## Usage Mode7677- **MCP** (in an agent): call `log_search`/`log_aggregate`, then pass results to vmware-debug. Primary mode.78- **CLI** (humans): `vmware-log-insight search -q "apd" -l 2h`.7980## MCP Tools (7 — 7 read, 0 write)8182| Category | Tools |83|---|---|84| Logs | `log_search` (time window + text + filters), `log_aggregate` (COUNT/etc + spike detection), `log_fields`, `log_version` |85| Alerts | `alert_list`, `alert_get`, `alert_history` |8687**List envelope**: `log_fields`, `alert_list` and `alert_history` return88`{items, returned, limit, total, truncated, hint}` rather than a bare list — read89the rows from `items`, and treat `truncated: true` as "there is more, raise90`limit` or narrow the filter". `total` is a real count (the appliance returns each91collection in one GET and `limit` is applied client-side), so a page that exactly92fills `limit` is still reported `truncated: false` when it is genuinely complete.9394**Query model**: time windows use a relative `last` ("1h", "30m", "7d") or an95absolute `begin_ms`/`end_ms` (epoch ms); `text` is a CONTAINS search. See96`references/cli-reference.md` for the full constraint grammar.9798## Read-Only by Design99100All 7 tools here are reads — no ingest, no alert creation/edit/delete, zero101write surface. Running with local or small models? See102[`references/agent-guardrails.md`](references/agent-guardrails.md).103104## CLI Quick Reference105106```bash107vmware-log-insight search -q "scsi apd" -l 2h # search events108vmware-log-insight search -q error -l 1h --json # raw JSON109vmware-log-insight aggregate -q error -l 6h --bin-ms 300000 # spikes110vmware-log-insight fields --name host # discover fields111vmware-log-insight alert list # defined alerts112vmware-log-insight doctor # diagnostics113vmware-log-insight mcp # start MCP server (proxy-safe)114```115116## Troubleshooting117118- **`POST /sessions returned HTTP 401`** — wrong username/password/provider. Check `config.yaml` (`provider: Local | ActiveDirectory`) and the `VMWARE_LOG_INSIGHT_<TARGET>_PASSWORD` env var.119- **`HTTP 503` on every call** — the appliance is starting or a service isn't ready; the error says so. Wait and retry; `doctor` reports it as a status, not a crash.120- **`HTTP 400` on a search** — a malformed constraint. Time/field filters are path-encoded as `field/OPERATOR/value`; let the CLI/tool build them rather than hand-crafting.121- **Empty results but logs exist** — check the time window (`last`) and that the appliance actually ingests from that source; widen the window.122- **Default port is 9543**, not 443 — set `port` in `config.yaml` if your appliance differs.123124## Audit & Safety125126Read-only by construction (no write tools). MCP tools run through127`@vmware_tool(risk_level="low")`, which records each call to the shared audit DB128(`~/.vmware/audit.db`). Targets may declare `environment:` (`production` /129`staging` / `lab`) in `config.yaml` to scope policy rules; reads are never gated130by it, so this skill is unaffected either way, but declaring it keeps any future131write tool correctly scoped. Credentials load from `~/.vmware-log-insight/.env`132(`chmod 600`); plaintext passwords there are auto-rewritten to a grep-safe133`b64:` form on first load (obfuscation, not encryption — inject from a secret134manager for real at-rest secrecy). All API text passes through `sanitize()`135(prompt-injection defence). TLS verification is on by default; disable only for136self-signed lab appliances. See `references/setup-guide.md`.137138## License139140MIT.