|
| 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