// Module included in the following assemblies:
//
// * virt/support/virt-collecting-virt-data.adoc
// * support/gathering-cluster-data.adoc

//This file contains UI elements and/or package names that need to be updated.

ifeval::["{context}" == "gathering-cluster-data"]
:from-main-support-section:
:VirtProductName: OpenShift Virtualization
endif::[]

:_mod-docs-content-type: PROCEDURE
[id="gathering-data-specific-features_{context}"]
= Gathering data about specific features

[role="_abstract"]
You can gather debugging information about specific features by using the `oc adm must-gather` CLI command with the `--image` or `--image-stream` argument. The `must-gather` tool supports multiple images, so you can gather data about more than one feature by running a single command.

ifdef::from-main-support-section[]

ifndef::openshift-origin[]

.Supported must-gather images
[cols="2,2",options="header",subs="attributes+"]
|===
|Image |Purpose

|`registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v{HCOVersion}`
|Data collection for {VirtProductName}.

|`registry.redhat.io/openshift-serverless-1/svls-must-gather-rhel8`
|Data collection for OpenShift Serverless.

|`registry.redhat.io/openshift-service-mesh/istio-must-gather-rhel8:<installed_version_service_mesh>`
|Data collection for Red Hat OpenShift Service Mesh.

|`registry.redhat.io/multicluster-engine/must-gather-rhel8`
|Data collection for {hcp}.

ifndef::openshift-rosa,openshift-dedicated[]
|`registry.redhat.io/odf4/odf-must-gather-rhel9:v<installed_version_ODF>`
|Data collection for {rh-storage-first}.
endif::openshift-rosa,openshift-dedicated[]

|`registry.redhat.io/openshift-logging/cluster-logging-rhel9-operator:v<installed_version_logging>`
|Data collection for {logging}.

|`quay.io/netobserv/must-gather`
|Data collection for the Network Observability Operator.

ifndef::openshift-rosa,openshift-dedicated[]
|`registry.redhat.io/openshift4/ose-local-storage-mustgather-rhel9:v<installed_version_LSO>`
|Data collection for Local Storage Operator.

|`registry.redhat.io/openshift-sandboxed-containers/osc-must-gather-rhel8:v<installed_version_sandboxed_containers>`
|Data collection for {osc}.

|`registry.redhat.io/workload-availability/node-healthcheck-must-gather-rhel8:v<installed_version_NHC>`
|Data collection for the Red{nbsp}Hat Workload Availability Operators, including the Self Node Remediation (SNR) Operator, the Fence Agents Remediation (FAR) Operator, the Machine Deletion Remediation (MDR) Operator, the Node Health Check (NHC) Operator, and the Node Maintenance Operator (NMO).

Use this image if your NHC Operator version is *earlier than 0.9.0*.

For more information, see the "Gathering data" section for the specific Operator in https://docs.redhat.com/en/documentation/workload_availability_for_red_hat_openshift/latest/html/remediation_fencing_and_maintenance/index[Remediation, fencing, and maintenance] (Workload Availability for Red Hat OpenShift documentation).

|`registry.redhat.io/workload-availability/node-healthcheck-must-gather-rhel9:v<installed_version_NHC>`
|Data collection for the Red{nbsp}Hat Workload Availability Operators, including the Self Node Remediation (SNR) Operator, the Fence Agents Remediation (FAR) Operator, the Machine Deletion Remediation (MDR) Operator, the Node Health Check (NHC) Operator, and the Node Maintenance Operator (NMO).

Use this image if your NHC Operator version is *0.9.0. or later*.

For more information, see the "Gathering data" section for the specific Operator in https://docs.redhat.com/en/documentation/workload_availability_for_red_hat_openshift/latest/html/remediation_fencing_and_maintenance/index[Remediation, fencing, and maintenance] (Workload Availability for Red Hat OpenShift documentation).

|`registry.redhat.io/numaresources/numaresources-must-gather-rhel9:v<installed-version-nro>`
|Data collection for the NUMA Resources Operator (NRO).

|`registry.redhat.io/openshift4/ptp-must-gather-rhel8:v<installed-version-ptp>`
|Data collection for the PTP Operator.
endif::openshift-rosa,openshift-dedicated[]

|`registry.redhat.io/openshift-gitops-1/must-gather-rhel8:v<installed_version_GitOps>`
|Data collection for {gitops-title}.

|`registry.redhat.io/openshift4/ose-secrets-store-csi-mustgather-rhel9:v<installed_version_secret_store>`
|Data collection for the {secrets-store-operator}.

ifndef::openshift-rosa,openshift-dedicated[]
|`registry.redhat.io/lvms4/lvms-must-gather-rhel9:v<installed_version_LVMS>`
|Data collection for the LVM Operator.

|`registry.redhat.io/compliance/openshift-compliance-must-gather-rhel8:<digest-version>`
|Data collection for the Compliance Operator.
endif::openshift-rosa,openshift-dedicated[]

|`registry.redhat.io/rhacm2/acm-must-gather-rhel9:v<ACM_version>`
|Data collection for {rh-rhacm-first} 2.10 and later.

|`registry.redhat.io/rhacm2/acm-must-gather-rhel8:v<ACM_version>`
|Data collection for {rh-rhacm} 2.9 and earlier.

|`<registry_name:port_number>/rhacm2/acm-must-gather-rhel9:v<ACM_version>`
|Data collection for {rh-rhacm} 2.10 and later in a disconnected environment.

|`<registry_name:port_number>/rhacm2/acm-must-gather-rhel8:v<ACM_version>`
|Data collection for {rh-rhacm} 2.9 and earlier in a disconnected environment.

|===

[NOTE]
====
To determine the latest version for an {product-title} component's image, see the link:https://access.redhat.com/support/policy/updates/openshift_operators[OpenShift Operator Life Cycles] web page on the Red Hat Customer Portal.
====

endif::openshift-origin[]

ifdef::openshift-origin[]

.Available must-gather images
[cols="2,2",options="header"]
|===
|Image |Purpose

|`quay.io/kubevirt/must-gather`
|Data collection for KubeVirt.

|`quay.io/openshift-knative/must-gather`
|Data collection for Knative.

|`docker.io/maistra/istio-must-gather`
|Data collection for service mesh.

|`quay.io/konveyor/must-gather`
|Data collection for migration-related information.

|`quay.io/ocs-dev/ocs-must-gather`
|Data collection for {rh-storage}.

|`quay.io/openshift/origin-cluster-logging-operator`
|Data collection for OpenShift Logging.

ifndef::openshift-dedicated[]
|`quay.io/openshift/origin-local-storage-mustgather`
|Data collection for Local Storage Operator.
endif::openshift-dedicated[]

|`quay.io/openshift/origin-secrets-store-csi-mustgather`
|Data collection for the {secrets-store-operator}.

|===

endif::openshift-origin[]

endif::from-main-support-section[]

.Prerequisites

* You have access to the cluster as a user with the `cluster-admin` role.
ifndef::openshift-rosa,openshift-dedicated[]
* The {product-title} CLI (`oc`) is installed.
endif::openshift-rosa,openshift-dedicated[]
ifdef::openshift-rosa,openshift-dedicated[]
* The OpenShift CLI (`oc`) is installed.
endif::openshift-rosa,openshift-dedicated[]

.Procedure

. Navigate to the directory where you want to store the `must-gather` data.

ifndef::openshift-origin[]

. Run the `oc adm must-gather` command with one or more `--image` or `--image-stream` arguments.
+
[NOTE]
====
* To collect the default `must-gather` data in addition to specific feature data, add the `--image-stream=openshift/must-gather` argument.
ifndef::openshift-rosa,openshift-dedicated[]
* For information on gathering data about the Custom Metrics Autoscaler, see the Additional resources section that follows.
endif::openshift-rosa,openshift-dedicated[]
====
+
For example, the following command gathers both the default cluster data and information specific to {VirtProductName}:
+
[source,terminal,subs="attributes+"]
----
$ oc adm must-gather \
  --image-stream=openshift/must-gather \
  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v{HCOVersion}
----
+
You can use the `must-gather` tool with additional arguments to gather data that is specifically related to OpenShift Logging and the
ifndef::openshift-dedicated[]
Red Hat OpenShift
endif::openshift-dedicated[]
ifdef::openshift-dedicated[]
Cluster
endif::openshift-dedicated[]
Logging Operator in your cluster. For OpenShift Logging, run the following command:
+
[source,terminal]
----
$ oc adm must-gather --image=$(oc -n openshift-logging get deployment.apps/cluster-logging-operator \
  -o jsonpath='{.spec.template.spec.containers[?(@.name == "cluster-logging-operator")].image}')
----
+
.Example `must-gather` output for OpenShift Logging
[source,terminal]
----
├── cluster-logging
│  ├── clo
│  │  ├── cluster-logging-operator-74dd5994f-6ttgt
│  │  ├── clusterlogforwarder_cr
│  │  ├── cr
│  │  ├── csv
│  │  ├── deployment
│  │  └── logforwarding_cr
│  ├── collector
│  │  ├── fluentd-2tr64
ifdef::openshift-dedicated[]
│  ├── curator
│  │  └── curator-1596028500-zkz4s
endif::openshift-dedicated[]
│  ├── eo
│  │  ├── csv
│  │  ├── deployment
│  │  └── elasticsearch-operator-7dc7d97b9d-jb4r4
│  ├── es
│  │  ├── cluster-elasticsearch
│  │  │  ├── aliases
│  │  │  ├── health
│  │  │  ├── indices
│  │  │  ├── latest_documents.json
│  │  │  ├── nodes
│  │  │  ├── nodes_stats.json
│  │  │  └── thread_pool
│  │  ├── cr
│  │  ├── elasticsearch-cdm-lp8l38m0-1-794d6dd989-4jxms
│  │  └── logs
│  │     ├── elasticsearch-cdm-lp8l38m0-1-794d6dd989-4jxms
│  ├── install
│  │  ├── co_logs
│  │  ├── install_plan
│  │  ├── olmo_logs
│  │  └── subscription
│  └── kibana
│     ├── cr
│     ├── kibana-9d69668d4-2rkvz
├── cluster-scoped-resources
│  └── core
│     ├── nodes
│     │  ├── ip-10-0-146-180.eu-west-1.compute.internal.yaml
│     └── persistentvolumes
│        ├── pvc-0a8d65d9-54aa-4c44-9ecc-33d9381e41c1.yaml
├── event-filter.html
├── gather-debug.log
└── namespaces
   ├── openshift-logging
   │  ├── apps
   │  │  ├── daemonsets.yaml
   │  │  ├── deployments.yaml
   │  │  ├── replicasets.yaml
   │  │  └── statefulsets.yaml
   │  ├── batch
   │  │  ├── cronjobs.yaml
   │  │  └── jobs.yaml
   │  ├── core
   │  │  ├── configmaps.yaml
   │  │  ├── endpoints.yaml
   │  │  ├── events
ifndef::openshift-dedicated[]
   │  │  │  ├── elasticsearch-im-app-1596020400-gm6nl.1626341a296c16a1.yaml
   │  │  │  ├── elasticsearch-im-audit-1596020400-9l9n4.1626341a2af81bbd.yaml
   │  │  │  ├── elasticsearch-im-infra-1596020400-v98tk.1626341a2d821069.yaml
   │  │  │  ├── elasticsearch-im-app-1596020400-cc5vc.1626341a3019b238.yaml
   │  │  │  ├── elasticsearch-im-audit-1596020400-s8d5s.1626341a31f7b315.yaml
   │  │  │  ├── elasticsearch-im-infra-1596020400-7mgv8.1626341a35ea59ed.yaml
endif::openshift-dedicated[]
ifdef::openshift-dedicated[]
   │  │  │  ├── curator-1596021300-wn2ks.162634ebf0055a94.yaml
   │  │  │  ├── curator.162638330681bee2.yaml
   │  │  │  ├── elasticsearch-delete-app-1596020400-gm6nl.1626341a296c16a1.yaml
   │  │  │  ├── elasticsearch-delete-audit-1596020400-9l9n4.1626341a2af81bbd.yaml
   │  │  │  ├── elasticsearch-delete-infra-1596020400-v98tk.1626341a2d821069.yaml
   │  │  │  ├── elasticsearch-rollover-app-1596020400-cc5vc.1626341a3019b238.yaml
   │  │  │  ├── elasticsearch-rollover-audit-1596020400-s8d5s.1626341a31f7b315.yaml
   │  │  │  ├── elasticsearch-rollover-infra-1596020400-7mgv8.1626341a35ea59ed.yaml
endif::openshift-dedicated[]
   │  │  ├── events.yaml
   │  │  ├── persistentvolumeclaims.yaml
   │  │  ├── pods.yaml
   │  │  ├── replicationcontrollers.yaml
   │  │  ├── secrets.yaml
   │  │  └── services.yaml
   │  ├── openshift-logging.yaml
   │  ├── pods
   │  │  ├── cluster-logging-operator-74dd5994f-6ttgt
   │  │  │  ├── cluster-logging-operator
   │  │  │  │  └── cluster-logging-operator
   │  │  │  │     └── logs
   │  │  │  │        ├── current.log
   │  │  │  │        ├── previous.insecure.log
   │  │  │  │        └── previous.log
   │  │  │  └── cluster-logging-operator-74dd5994f-6ttgt.yaml
   │  │  ├── cluster-logging-operator-registry-6df49d7d4-mxxff
   │  │  │  ├── cluster-logging-operator-registry
   │  │  │  │  └── cluster-logging-operator-registry
   │  │  │  │     └── logs
   │  │  │  │        ├── current.log
   │  │  │  │        ├── previous.insecure.log
   │  │  │  │        └── previous.log
   │  │  │  ├── cluster-logging-operator-registry-6df49d7d4-mxxff.yaml
   │  │  │  └── mutate-csv-and-generate-sqlite-db
   │  │  │     └── mutate-csv-and-generate-sqlite-db
   │  │  │        └── logs
   │  │  │           ├── current.log
   │  │  │           ├── previous.insecure.log
   │  │  │           └── previous.log
ifdef::openshift-dedicated[]
   │  │  ├── curator-1596028500-zkz4s
endif::openshift-dedicated[]
   │  │  ├── elasticsearch-cdm-lp8l38m0-1-794d6dd989-4jxms
ifndef::openshift-dedicated[]
   │  │  ├── elasticsearch-im-app-1596030300-bpgcx
   │  │  │  ├── elasticsearch-im-app-1596030300-bpgcx.yaml
endif::openshift-dedicated[]
ifdef::openshift-dedicated[]
   │  │  ├── elasticsearch-delete-app-1596030300-bpgcx
   │  │  │  ├── elasticsearch-delete-app-1596030300-bpgcx.yaml
endif::openshift-dedicated[]
   │  │  │  └── indexmanagement
   │  │  │     └── indexmanagement
   │  │  │        └── logs
   │  │  │           ├── current.log
   │  │  │           ├── previous.insecure.log
   │  │  │           └── previous.log
   │  │  ├── fluentd-2tr64
   │  │  │  ├── fluentd
   │  │  │  │  └── fluentd
   │  │  │  │     └── logs
   │  │  │  │        ├── current.log
   │  │  │  │        ├── previous.insecure.log
   │  │  │  │        └── previous.log
   │  │  │  ├── fluentd-2tr64.yaml
   │  │  │  └── fluentd-init
   │  │  │     └── fluentd-init
   │  │  │        └── logs
   │  │  │           ├── current.log
   │  │  │           ├── previous.insecure.log
   │  │  │           └── previous.log
   │  │  ├── kibana-9d69668d4-2rkvz
   │  │  │  ├── kibana
   │  │  │  │  └── kibana
   │  │  │  │     └── logs
   │  │  │  │        ├── current.log
   │  │  │  │        ├── previous.insecure.log
   │  │  │  │        └── previous.log
   │  │  │  ├── kibana-9d69668d4-2rkvz.yaml
   │  │  │  └── kibana-proxy
   │  │  │     └── kibana-proxy
   │  │  │        └── logs
   │  │  │           ├── current.log
   │  │  │           ├── previous.insecure.log
   │  │  │           └── previous.log
   │  └── route.openshift.io
   │     └── routes.yaml
   └── openshift-operators-redhat
      ├── ...
----
endif::openshift-origin[]

. Run the `oc adm must-gather` command with one or more `--image` or `--image-stream` arguments. For example, the following command gathers both the default cluster data and information specific to KubeVirt:
+
[source,terminal]
----
$ oc adm must-gather \
 --image-stream=openshift/must-gather \
 --image=quay.io/kubevirt/must-gather
----

ifndef::openshift-origin[]
. Create a compressed file from the `must-gather` directory that was just created in your working directory. Make sure you provide the date and cluster ID for the unique must-gather data. For more information about how to find the cluster ID, see link:https://access.redhat.com/solutions/5280291[How to find the cluster-id or name on OpenShift cluster]. For example, on a computer that uses a Linux operating system, run the following command:
+
[source,terminal]
----
$ tar cvaf must-gather-`date +"%m-%d-%Y-%H-%M-%S"`-<cluster_id>.tar.gz <must_gather_local_dir>
----
+
where:

`<must_gather_local_dir>`:: Replace with the actual directory name.

. Attach the compressed file to your support case on the link:https://access.redhat.com/support/cases/#/case/list[the *Customer Support* page] of the Red Hat Customer Portal.
endif::openshift-origin[]

ifeval::["{context}" == "gathering-cluster-data"]
:!from-main-support-section:
:!VirtProductName:
endif::[]
