Analyze OpenShift must-gather diagnostic data including cluster operators, pods, nodes, and network components...
Comprehensive analysis of OpenShift must-gather diagnostic data with helper scripts that parse YAML and display output in oc-like format.
This skill provides analysis for:
Important: Must-gather data is contained in a subdirectory with a long hash name:
must-gather/
āāā registry-ci-openshift-org-origin-...-sha256-<hash>/
āāā cluster-scoped-resources/
ā āāā config.openshift.io/clusteroperators/
ā āāā core/nodes/
āāā namespaces/
ā āāā <namespace>/
ā āāā pods/
ā āāā <pod-name>/
ā āāā <pod-name>.yaml
āāā network_logs/
The analysis scripts expect the path to the subdirectory (the one with the hash), not the root must-gather folder.
Ask the user for the must-gather directory path if not already provided.
cluster-scoped-resources/ and namespaces/ directoriesBased on user's request, run the appropriate helper script:
./scripts/analyze_clusterversion.py <must-gather-path>
Shows cluster version information similar to oc get clusterversion:
./scripts/analyze_clusteroperators.py <must-gather-path>
Shows cluster operator status similar to oc get clusteroperators:
# All namespaces
./scripts/analyze_pods.py <must-gather-path>
# Specific namespace
./scripts/analyze_pods.py <must-gather-path> --namespace <namespace>
# Show only problematic pods
./scripts/analyze_pods.py <must-gather-path> --problems-only
Shows pod status similar to oc get pods -A:
./scripts/analyze_nodes.py <must-gather-path>
# Show only nodes with issues
./scripts/analyze_nodes.py <must-gather-path> --problems-only
Shows node status similar to oc get nodes:
./scripts/analyze_network.py <must-gather-path>
Shows network health:
# Recent events (last 100)
./scripts/analyze_events.py <must-gather-path>
# Warning events only
./scripts/analyze_events.py <must-gather-path> --type Warning
# Events in specific namespace
./scripts/analyze_events.py <must-gather-path> --namespace openshift-etcd
# Show last 50 events
./scripts/analyze_events.py <must-gather-path> --count 50
Shows cluster events:
./scripts/analyze_etcd.py <must-gather-path>
Shows etcd cluster health:
# All PVs and PVCs
./scripts/analyze_pvs.py <must-gather-path>
# PVCs in specific namespace
./scripts/analyze_pvs.py <must-gather-path> --namespace openshift-monitoring
Shows storage resources:
# All alerts.
./scripts/analyze_prometheus.py <must-gather-path>
# Alerts in specific namespace
./scripts/analyze_prometheus.py <must-gather-path> --namespace openshift-monitoring
Shows monitoring information:
After running the scripts:
All scripts provide:
oc-like formatted outputExample summary format:
================================================================================
SUMMARY: 25/28 operators healthy
ā ļø 3 operators with issues
š 1 progressing
ā 2 degraded
================================================================================
Parses: cluster-scoped-resources/config.openshift.io/clusterversions/version.yaml
Output: ClusterVersion table with detailed version info, conditions, and capabilities
Parses: cluster-scoped-resources/config.openshift.io/clusteroperators/
Output: ClusterOperator status table with conditions
Parses: namespaces/*/pods/*/*.yaml (individual pod directories)
Output: Pod status table with issues categorized
Parses: cluster-scoped-resources/core/nodes/
Output: Node status table with conditions and capacity
Parses: network_logs/, network operator, OVN resources
Output: Network health summary and diagnostics
Parses: namespaces/*/core/events.yaml
Output: Event table sorted by last occurrence
Parses: etcd_info/ (endpoint_health.json, member_list.json, endpoint_status.json)
Output: etcd cluster health and member status
Parses: cluster-scoped-resources/core/persistentvolumes/, namespaces/*/core/persistentvolumeclaims.yaml
Output: PV and PVC status tables
Parses OVN Northbound and Southbound database dumps and supports targeted OVSDB queries.
Parses Windows node component logs for kube-proxy, hybrid-overlay, kubelet, containerd, WICD, and CSI proxy.
analyze_clusteroperators.py - identify degraded operatorsanalyze_pods.py --namespace <operator-namespace> - check operator podsanalyze_nodes.py - verify node healthanalyze_pods.py --problems-only - find crashlooping podsanalyze_nodes.py - verify node conditionsanalyze_network.py - check network healthanalyze_pods.py --namespace openshift-ovn-kubernetesBased on findings, suggest:
namespaces/<ns>/pods/<pod>/<container>/logs/namespaces/<ns>/core/events.yamlaudit_logs/host_service_logs/