Skip to content

Commit 5ecde23

Browse files
authored
Merge pull request #392 from avlitman/add-panic-admin
Add ClusterVMPanicDetected runbook
2 parents 422ab1a + 7be5422 commit 5ecde23

1 file changed

Lines changed: 83 additions & 0 deletions

File tree

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# ClusterVMPanicDetected
2+
3+
## Meaning
4+
5+
This alert fires when one or more VMs across the cluster have experienced
6+
non-recoverable guest OS panics in the last 24 hours. This may indicate a
7+
cluster-wide infrastructure issue such as a faulty node image, a broken
8+
driver, or a shared storage problem affecting VMs.
9+
10+
The alert is based on the `kubevirt_vmi_guest_os_panic_total` metric, which
11+
tracks panic events detected via the pvpanic device (Linux and Windows) or
12+
the Hyper-V enlightenment mechanism (Windows).
13+
14+
## Impact
15+
16+
* One or more VMs are crashing across the cluster.
17+
* Applications running on affected VMs were unavailable during crashes.
18+
* If VMs have `RunStrategy: Always`, they restart automatically but may
19+
continue crash-looping.
20+
* If multiple VMs are affected, the issue likely relates to shared
21+
infrastructure rather than individual workloads.
22+
23+
## Diagnosis
24+
25+
1. **Identify all affected VMs** by querying the panic metric:
26+
27+
```promql
28+
sum by (namespace, name) (increase(kubevirt_vmi_guest_os_panic_total[24h])) > 0
29+
```
30+
31+
2. **Look for common patterns** across affected VMs:
32+
33+
```promql
34+
kubevirt_vmi_guest_os_panic_total
35+
```
36+
37+
Check whether panics share the same `type` (e.g., all `pvpanic` or all
38+
`hyper-v`) or the same `bugcheck_code`.
39+
40+
3. **Check if affected VMs share a common node:**
41+
42+
```bash
43+
kubectl get vmi -A -o wide | grep -E "<vm-name-1>|<vm-name-2>|..."
44+
```
45+
46+
If all affected VMs run on the same node, the issue is likely
47+
node-specific (hardware, kernel, driver).
48+
49+
4. **Check node health and events:**
50+
51+
```bash
52+
kubectl describe node <node-name>
53+
kubectl get events -A --field-selector involvedObject.kind=Node
54+
```
55+
56+
5. **Review virt-launcher logs** for any of the affected VMs:
57+
58+
```bash
59+
POD=$(kubectl get pod -n <namespace> -l kubevirt.io/domain=<vm-name> -o name | head -n1)
60+
kubectl logs $POD -n <namespace> -c compute --previous
61+
```
62+
63+
## Mitigation
64+
65+
* **Immediately:** Identify whether panics are concentrated on specific
66+
nodes. If so, cordon the affected node(s) to prevent new VMs from
67+
scheduling there.
68+
* **Short term:** Check for recent cluster-wide changes (node OS updates,
69+
driver updates, storage changes) that coincide with the panics.
70+
* **Long term:** Investigate the root cause (faulty hardware, driver
71+
incompatibility, storage issue) and apply fixes across the affected
72+
infrastructure.
73+
74+
<!--USstart-->
75+
If you cannot resolve the issue, see the following resources:
76+
77+
- [OKD Help](https://www.okd.io/help/)
78+
- [#virtualization Slack channel](https://kubernetes.slack.com/channels/virtualization)
79+
<!--USend-->
80+
81+
<!--DS: If you cannot resolve the issue, log in to the
82+
[Red Hat Customer Portal](https://access.redhat.com) and open a support case,
83+
attaching the artifacts gathered during the diagnosis procedure.-->

0 commit comments

Comments
 (0)