Files
home-network-k3s-impl/platform/kubevirt/dashboard.yaml
T
jakman85andClaude Opus 4.8 dbffb8fab8 Phase 5: KubeVirt + CDI IaaS proof (R-PLAT-03/04, R-STATE-01, R-NET-01)
- platform/kubevirt: pinned KubeVirt v1.9.0 + CDI v1.66.0 operators (remote bases);
  KubeVirt/CDI CRs tuned for Longhorn; useEmulation=true (prefer real KVM, emulate fallback).
- Controllers/configs split (F-MON1): CRs + ServiceMonitors + alerts via platform-config.
- Observability: ServiceMonitors, KubeVirt platform-health alerts (R-OBS-04), VM dashboard.
- catalog/vm-demo.yaml (kind: vm) + rendered VirtualMachine/DataVolume fixture.
- Conformance: vm-lifecycle (R-PLAT-03/04), vm-data-survival (R-STATE-01, L3),
  vm-default-deny (R-NET-01) — self-skipping until KubeVirt+longhorn exist.
- ci/SPEC_PIN: adopt accepted spec b633b7f (ADR-0015 egress work already merged).
- conformance/run.sh: document R-ENV-02/R-GITOPS-01 coverage gaps (WS-GITOPS/INFRA-owned).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-08-24 19:51:30 -05:00

65 lines
2.2 KiB
YAML

---
# Grafana dashboard for VM health (docs/10 — per-platform-component dashboard). A plain ConfigMap
# labeled `grafana_dashboard` that the kube-prometheus-stack Grafana sidecar auto-loads (searchNamespace
# ALL, see platform/monitoring/kube-prometheus-stack.yaml). No CRD dependency, but co-located with the
# rest of the KubeVirt monitoring wiring and applied via platform-config for locality.
apiVersion: v1
kind: ConfigMap
metadata:
name: kubevirt-vm-health-dashboard
namespace: monitoring
labels:
grafana_dashboard: "1"
data:
kubevirt-vm-health.json: |
{
"title": "KubeVirt — VM Health",
"uid": "kubevirt-vm-health",
"schemaVersion": 39,
"timezone": "browser",
"tags": ["kubevirt", "platform"],
"time": {"from": "now-6h", "to": "now"},
"templating": {"list": []},
"panels": [
{
"id": 1,
"type": "stat",
"title": "Running VMIs",
"gridPos": {"h": 6, "w": 8, "x": 0, "y": 0},
"targets": [
{"expr": "sum(kubevirt_vmi_phase_count{phase=\"Running\"})", "legendFormat": "running"}
]
},
{
"id": 2,
"type": "stat",
"title": "Failed VMIs",
"gridPos": {"h": 6, "w": 8, "x": 8, "y": 0},
"fieldConfig": {"defaults": {"thresholds": {"steps": [
{"color": "green", "value": null}, {"color": "red", "value": 1}
]}}},
"targets": [
{"expr": "sum(kubevirt_vmi_phase_count{phase=\"Failed\"})", "legendFormat": "failed"}
]
},
{
"id": 3,
"type": "timeseries",
"title": "VMI count by phase",
"gridPos": {"h": 8, "w": 24, "x": 0, "y": 6},
"targets": [
{"expr": "sum by (phase) (kubevirt_vmi_phase_count)", "legendFormat": "{{phase}}"}
]
},
{
"id": 4,
"type": "timeseries",
"title": "virt-launcher restarts (15m)",
"gridPos": {"h": 8, "w": 24, "x": 0, "y": 14},
"targets": [
{"expr": "increase(kube_pod_container_status_restarts_total{pod=~\"virt-launcher-.*\"}[15m])", "legendFormat": "{{namespace}}/{{pod}}"}
]
}
]
}