Use this skill whenever the user needs to operate a GPU inference cluster — vLLM (OpenAI API + Prometheus /metrics) and Ray Serve / Ray Jobs (Ray dashboard), plus the single-process serving engines SGLang and TGI (Text Generation Inference): a one-shot cluster overview (deployments + total replicas + queue backpressure), request metrics (TTFT / TPOT / e2e latency + token totals), queue depth, KV-cache stats (utilisation, prefix-cache hit rate, preemptions), the flagship latency root-cause analysis (diagnose_latency_spike / diagnose_engine_latency) and low-utilisation RCA, engine-agnostic health + running-model inventory across vLLM/SGLang/TGI, Ray Serve autoscaling and scaling (scale up/down, scale-to-zero, drain a replica), LoRA load/unload, base-model hot-swap, deploy/undeploy/redeploy, prefix-aware routing, GPU utilisation, Ray jobs, and cost per million tokens. Always use this skill for "why is inference slow", "TTFT spike", "latency spike", "GPU underutilised", "scale down the dep
Memory
ceph-aiops
Try itUse this skill whenever the user needs to operate or diagnose a Ceph cluster via its ceph-mgr Dashboard REST API — decode a HEALTH_WARN/ERR state into cause + action (cluster_health), read the cluster status, inspect OSDs (tree/df/perf), placement groups (summary/stuck/scrub), pools (list/usable capacity), RBD images and snapshots, CephFS/MDS and RGW status, monitors/managers, slow ops and capacity forecast — plus governed writes (set cluster flags, reweight/mark-in/mark-out/purge OSDs, trigger scrubs, set pool quota/pg_num/autoscale/size, create/delete pools, create/delete RBD images and snapshots, throttle recovery/backfill). Always use this skill for "ceph health", "what does this HEALTH_WARN mean", "PG_DEGRADED / OSD_NEARFULL / SLOW_OPS / MON_DOWN", "ceph -s", "which OSD is most full", "drain an OSD", "purge an OSD", "stuck PGs", "overdue scrub", "pool usable capacity", "set pool size / quota", "rebalance is too slow / throttle backfill", "RBD image or snapshot", "MDS behind on tri
What it does
Use this skill whenever the user needs to operate or diagnose a Ceph cluster via its ceph-mgr Dashboard REST API — decode a HEALTH_WARN/ERR state into cause + action (cluster_health), read the cluster status, inspect OSDs (tree/df/perf), placement groups (summary/stuck/scrub), pools (list/usable capacity), RBD images and snapshots, CephFS/MDS and RGW status, monitors/managers, slow ops and capacity forecast — plus governed writes (set cluster flags, reweight/mark-in/mark-out/purge OSDs, trigger scrubs, set pool quota/pg_num/autoscale/size, create/delete pools, create/delete RBD images and snapshots, throttle recovery/backfill). Always use this skill for "ceph health", "what does this HEALTH_WARN mean", "PG_DEGRADED / OSD_NEARFULL / SLOW_OPS / MON_DOWN", "ceph -s", "which OSD is most full", "drain an OSD", "purge an OSD", "stuck PGs", "overdue scrub", "pool usable capacity", "set pool size / quota", "rebalance is too slow / throttle backfill", "RBD image or snapshot", "MDS behind on trimming", "RGW large omap", "mon quorum", or "days to nearfull" when the context is a Ceph cluster (cephadm, hypervisor-bundled Ceph, or MicroCeph). Do NOT use when the target is not Ceph — a hypervisor, a different storage appliance, a backup product, a Kubernetes cluster, or a network device. Route those to the appropriate other AIops-tools skill (negative routing hint only). Common Ceph ops with a built-in governance harness (audit, policy, token budget, undo, risk-tiers).
The skill document
Ceph AIops
Disclaimer: Community-maintained open-source project, not affiliated with, endorsed by, or sponsored by the Ceph project or any storage vendor. Product and trademark names belong to their owners. Source at github.com/AIops-tools/Ceph-AIops under the MIT license.
Governed Ceph operations via the ceph-mgr Dashboard REST API — 37 MCP tools, every one wrapped with the bundled @governed_tool harness: a local unified audit log under ~/.ceph-aiops/, token/runaway budget guard, undo-token recording, and descriptive risk tiers. The Dashboard password is stored encrypted (~/.ceph-aiops/secrets.enc, Fernet + scrypt) — never plaintext on disk. The flagship cluster_health turns raw HEALTH_WARN/ERR check codes into plain-language cause + suggested action.
Standalone: the governance harness is bundled in the package (
ceph_aiops.governance) — ceph-aiops has no external skill-family dependency. Works against vanilla ceph-mgr (cephadm / hypervisor-bundled / MicroCeph); no croit, no Kubernetes.
What This Skill Does
| Group | Tools | Count | Read or Write |
|---|---|---|---|
| Health | cluster_health (flagship RCA), cluster_status | 2 | 2 read |
| OSD | osd_tree, osd_df, osd_perf | 3 | 3 read |
| cluster_flag_set, osd_reweight, osd_mark_in, osd_mark_out, osd_purge | 5 | 5 write | |
| PG | pg_summary, pg_dump_stuck, scrub_status | 3 | 3 read |
| trigger_scrub, trigger_deep_scrub | 2 | 2 write | |
| Pool | pool_ls, pool_df | 2 | 2 read |
| set_pool_quota, set_pool_pg_num, set_pool_autoscale, pool_create, set_pool_size, pool_delete | 6 | 6 write | |
| RBD | rbd_ls | 1 | 1 read |
| rbd_image_create, rbd_snapshot_create, rbd_image_delete, rbd_snapshot_delete | 4 | 4 write | |
| CephFS / RGW | cephfs_status, rgw_status | 2 | 2 read |
| Cluster-ops | mon_status, mgr_status, slow_ops, capacity_forecast | 4 | 4 read |
| throttle_recovery | 1 | 1 write | |
| Undo | undo_list, undo_apply | 2 | 2 undo |
Totals: 37 tools — 17 read, 18 write, 2 undo. The MCP server exposes all 37; the CLI is a convenience subset.
Quick Install
uv tool install ceph-aiops
ceph-aiops init # interactive wizard: mgr host/port/username + encrypted Dashboard password
ceph-aiops doctor
When to Use This Skill
- Decode a HEALTH_WARN/ERR state (
cluster_health/health detail) — cause + action per active check (PG_DEGRADED,OSD_NEARFULL,SLOW_OPS,MON_DOWN,LARGE_OMAP_OBJECTS, …) - One-shot triage (
overview): HEALTH status + active checks + OSD up/in counts - Inspect OSDs (
osd_tree/osd_dfmost-full first /osd_perfslowest first), PGs (pg_summary/pg_dump_stuck/scrub_status), pools (pool_ls/pool_dfusable capacity) - Investigate slow requests (
slow_ops), MDS trimming lag (cephfs_status), RGW large-omap (rgw_status), mon quorum (mon_status), and days-to-nearfull (capacity_forecast) - Safely drain + purge an OSD, change pool size/quota, or throttle a slow rebalance (governed writes with dry-run + undo)
Do NOT use when the target is not Ceph (a hypervisor, another storage appliance, a backup product, a container cluster, or a network device). Route those to the appropriate other AIops-tools skill.
Related Skills — Skill Routing
| If the user wants… | Use |
|---|---|
| Ceph: HEALTH_WARN RCA, OSD/PG/pool/RBD/CephFS/RGW, rebalance, slow ops | ceph-aiops (this skill) |
| Any non-Ceph target (hypervisor, other storage, backup, cluster, network) | the appropriate other AIops-tools skill |
Common Workflows
1. "The cluster went HEALTH_WARN overnight" — decode it (read-only)
ceph-aiops doctor→ confirm the mgr Dashboard is reachable and the JWT login works before trusting anything elseceph-aiops overview→ HEALTH status, the list of active check codes, and OSD up/in counts in one shotceph-aiops health detail(MCP:cluster_health) → each active check translated into what it means, the likely cause, and a suggested action- Drill into the implicated resource:
PG_DEGRADED→pg_dump_stuck;OSD_NEARFULL→ceph-aiops osd df(most-full first);SLOW_OPS→slow_ops;MON_DOWN→mon_status;LARGE_OMAP_OBJECTS→rgw_status - Failure branch: if
doctorfails on auth, the Dashboard password is wrong or the store is locked — re-runceph-aiops secret set(or exportCEPH_AIOPS_MASTER_PASSWORDfor non-interactive use). Ifdoctorfails on reachability, the mgrdashboardmodule is likely not enabled; no read is issued against an unauthenticated session.
2. Retire a failing OSD: drain, mark out, purge (governed)
ceph-aiops health detail→ confirm the OSD is genuinely the problem (e.g.OSD_SLOW_PING_TIME, repeatedSLOW_OPSon one id) rather than a cluster-wide symptomceph-aiops osd df→ confirm the id, and that the remaining OSDs have room to absorb its data before you drain anythingceph-aiops osd reweight 0.0→ start a gradual drain; reversible, the prior CRUSH weight is captured as the undo descriptorceph-aiops osd out --dry-run, then re-run without--dry-run→ high risk, double confirmation, needsCEPH_AUDIT_APPROVED_BY- Wait for
ceph-aiops health status/pg_summaryto show all PGsactive+clean— do not purge while backfill is running ceph-aiops osd purge --dry-run, then re-run without--dry-run→ high, irreversible- Failure branch: if client I/O tanks during the drain, stop and reverse —
ceph-aiops undo listthenceph-aiops undo applyrestores the prior weight (andosd_mark_inreverses the mark-out). Purge has no undo, which is exactly why it comes last and afteractive+clean.
3. Recovery is starving client I/O
ceph-aiops health detail→ confirm the cluster is actually backfilling/recovering (PG_DEGRADED,PG_BACKFILL_FULL) rather than hitting a different bottleneckslow_ops→ check whether client requests are genuinely being blocked, and by which OSDsthrottle_recovery(max_backfills=1, recovery_max_active=1)→ med risk, reversible; the priorosd_max_backfills/osd_recovery_max_activeare captured as the undo descriptor- Re-check
slow_opsandpg_summary— recovery is slower but client latency should recover - Once the cluster is quiet, raise the values back (or
ceph-aiops undo applyto restore the exact prior settings) - Failure branch: if throttling does not help, the bottleneck is not recovery — go back to
osd_perf(slowest OSDs first) andmon_status; do not keep lowering the throttle, you will only extend the degraded window.
4. A pool is running out of usable capacity
ceph-aiops overview→ look forPOOL_NEARFULL/OSD_NEARFULLamong the active checkspool_df→ per-pool usage with usable capacity = raw ÷ size (asize=3pool reports a third of raw — this is where most "but the disks aren't full" confusion comes from)capacity_forecast→ days-to-nearfull at the current fill rate, so you know whether this is a this-week problem or a this-quarter one- Buy time reversibly first:
set_pool_quota(med, undo → prior quota) orset_pool_autoscale(med, undo) to let pg_num track the new size - Only if a replica change is genuinely the answer:
set_pool_size --dry-runthen the real call — high risk, because loweringsizereduces durability and any change forces cluster-wide data movement - Failure branch: if the resulting rebalance saturates the cluster, apply workflow 3 (
throttle_recovery) rather than reverting the size mid-flight; if the size change itself was wrong,ceph-aiops undo applyreplays the recorded prior value — but expect a second full rebalance.
Governance & Safety
The skill delivers reads and writes and records them; it does not decide whether a write is permitted. That is your agent's judgement, or the permission of the account you connect it with (a ceph-mgr Dashboard account with a read-only role — writes then fail at the mgr). There is no read-only switch, policy file, or approval gate.
- Audit is the guarantee, and it is not bypassable. Every operation — MCP and CLI alike — is logged to
~/.ceph-aiops/audit.db(relocatable viaCEPH_AIOPS_HOME): params, result, status, duration, and the risk tier. The CLI writes the same row the MCP path does. CEPH_AUDIT_APPROVED_BY/CEPH_AUDIT_RATIONALEare optional annotations recorded on the audit row (who/why); they are never required and never block.- Runaway guard — a safety backstop, not authorization: the same call looped in a tight window trips a circuit breaker. Disable with
CEPH_RUNAWAY_MAX=0. - Destructive writes support
--dry-run/dry_run=Trueand double confirmation at the CLI. - Reversible writes fetch the real before-state and record an inverse descriptor (
osd_reweight→restore prior weight,cluster_flag_set→toggle back); irreversible ops (osd_purge,pool_delete, RBD deletes) record only the before-state.
References
references/capabilities.md— full tool → API-path → returns referencereferences/cli-reference.md— CLI command referencereferences/setup-guide.md— onboarding, credentials, and connectivity
Related skills
Use this skill whenever the user needs to operate or diagnose MinIO object storage — explain why the cluster is filling up or refusing writes (capacity_rca), find publicly exposed buckets and hygiene gaps (bucket_exposure_audit), find storage that lifecycle/ILM should be reclaiming but isn't, including noncurrent versions and incomplete multipart uploads (lifecycle_gap_analysis), check heal backlog and erasure-set write-quorum risk (healing_health), read service health / cluster status / per-bucket config (policy, versioning, lifecycle, encryption, quota, tags) — plus governed writes (set or delete bucket policy, enable/suspend versioning, set or delete lifecycle rules, set bucket quota, purge incomplete uploads, delete an empty bucket). Always use this skill for "minio health", "why is my object storage full", "which bucket is biggest", "is any bucket public / anonymous access", "versioning / noncurrent versions piling up", "incomplete multipart uploads", "lifecycle / ILM rules", "buc
Use this skill whenever the user needs to operate a Kubernetes cluster — list/inspect pods, deployments, statefulsets, daemonsets, replicasets, jobs, cronjobs, services, ingresses, endpoints, configmaps, secrets (names/keys only), PVCs/PVs/storageclasses, nodes, namespaces, and events; read pod logs; describe pods/nodes; pod/node top (metrics); read-only diagnostics / RCA (pod-health, workload-readiness); scale deployments/statefulsets; rollout status/history/undo/pause/resume and set image; delete pods/deployments/jobs; create/delete namespaces; and cordon/uncordon/drain nodes. Works with any kubeconfig-reachable cluster (standard Kubernetes, k3s, EKS, GKE, AKS). Always use this skill for "list k8s pods", "scale deployment", "kubernetes pod logs", "describe pod", "why is my pod crashing", "diagnose pods", "which deployments are unhealthy", "rollout undo", "set image", "top pods", "drain node", "cordon node", "restart deployment", "k3s", or "kubectl"-style tasks when the context is exp
Use this skill whenever the user needs to operate a Nutanix estate through Prism Central (v4 REST API) — an estate/cluster health overview, cluster & host inventory and utilization, VM lifecycle across AHV and ESXi (list/get/power/create/update/clone/delete/migrate), storage containers, subnets/network, images & categories, data protection / DR (snapshots, recovery points, protection domains, VM protect, failover), alerts & events with alert RCA (analyze_alert), LCM firmware/software upgrades, capacity runway forecasting, and read-only diagnostics/RCA over the whole estate (cluster_health_rca, alert_triage_rca). Always use this skill for "Nutanix", "Prism Central", "AHV", "cluster health", "list VMs", "power on/off a VM", "clone/migrate a VM", "delete a VM", "snapshot", "recovery point", "protection domain", "failover", "why did this alert fire" / "root cause this alert", "LCM upgrade / firmware", "days until storage is full" / "capacity runway", "what's wrong with my cluster" / "diagn
Use this skill whenever the user needs to operate a managed-endpoint fleet (thin clients, VDI endpoints, centrally-managed devices) — a one-shot fleet health overview, endpoint inventory (list/get), a composite per-endpoint health score (which endpoints are worst?), login & boot sessions, login-storm analysis (detect morning login storms and rank the slowest login/boot contributors), patch/config drift (which endpoints deviate from the fleet baseline), and two guarded writes (assign a config profile, reboot an endpoint). Always use this skill for "endpoint fleet overview", "list managed endpoints", "which endpoints are worst", "endpoint health score", "rank endpoints by risk", "why is login slow this morning", "login storm", "boot time analysis", "patch drift", "config drift", "which endpoints are behind on patches", "assign a profile to an endpoint", or "reboot a thin client" when the context is an endpoint-management fleet. Do NOT use when the target is OT / industrial equipment (Mod
Use this skill whenever the user needs to operate a network / infrastructure monitoring NOC on SolarWinds Orion (SWIS REST + SWQL), Paessler PRTG (web API), or Zabbix 6.x/7.x (JSON-RPC) — a one-shot NOC overview, canned SWQL answers (nodes down, flapping interfaces, muted, high-CPU nodes, full volumes, unmanaged/scheduled), a validated read-only SWQL passthrough, deduped/rolled-up active alerts, SolarWinds node/interface/volume/application health and top-N, PRTG sensors/devices/groups/history/alarms, Zabbix problems/hosts/host-groups/triggers/events/item-history/maintenances, and guarded writes (acknowledge, mute/unmute, schedule maintenance, unmanage/remanage, remove node, pause/resume sensor, create/delete Zabbix maintenance window). Always use this skill for "SolarWinds", "Orion", "SWQL", "THWACK question", "PRTG", "Paessler", "Zabbix", "Zabbix problem", "Zabbix trigger", "Zabbix maintenance", "NOC overview", "which nodes are down", "flapping interfaces", "interface flap storm", "al