Nvidia Datacenter GPU Manager (DCGM) is a suite of tools that provides health monitoring, performance telemetry, and proactive diagnostics for NVIDIA GPUs deployed on bare-metal servers. It is mainly installed for managing a fleet of GPUs across a large number of GPU enabled nodes.
DCGM does not have a WebUI, and is often seen “exporting” metrics into Grafana or other enterprise observability tools (like Zabbix) via Prometheus Scrape. I have both Grafana and Zabbix in my lab environment so I have a couple of options to where I want to visualize the data.
In this post, we are going to …
- Validate GPU Host Setup
- Install Nvidia DCGM
- Enable Health Watches via DCGM
- Setup dcgm-exporter for exporting of GPU metrics
Nvidia Drivers Install on RHEL 10.1
A lot has changed in RHEL 10.1 regarding the installation of NVIDIA drivers on RHEL 10. You can now install them via rhel-drivers.
The post below is pretty throughout on the topic
https://www.redhat.com/en/blog/introducing-new-and-simplified-ai-accelerator-driver-experience-rhel
Since I already have the NVIDIA drivers installed on my two GPU enabled nodes, I will just confirm they are both running the same driver version (for consistency) and will ensure the driver is loading properly with nvidia-smi. I will also install CUDA and the nvidia-container-toolkit.
Host Validation
In my lab I have 2x Dell R730s with Nvidia Tesla T4s installed (Turing-class GPUs). They are not the most modern GPUs but they are Data center class, can be purchased pretty cheaply used, and only draw ~70w of power and therefore do not require any additional power connections from a riser card or the system board.
So on each host we will first start off by insuring we have the proper NVIDIA drivers installed.
[root@columbia ~]# rhel-drivers listAvailable drivers: amdgpu:latest > nvidia:590.48.01
Now we run “nvidia-smi” to confirm the driver is loaded and the GPU is recognized.
nvidia-smiTue Feb 24 10:49:29 2026 +-----------------------------------------------------------------------------------------+| NVIDIA-SMI 580.105.08 Driver Version: 580.105.08 CUDA Version: 13.0 |+-----------------------------------------+------------------------+----------------------+| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. || | | MIG M. ||=========================================+========================+======================|| 0 Tesla T4 Off | 00000000:04:00.0 Off | 0 || N/A 34C P8 13W / 70W | 0MiB / 15360MiB | 0% Default || | | N/A |+-----------------------------------------+------------------------+----------------------+
Moving on 2 our second host and verify the installed driver.
[root@prometheus ~]$ rhel-drivers listAvailable drivers: amdgpu:latest*> nvidia:590.48.01
And nvidia-smi output, we can see that there are two Telsa T4s in this machine. Nice!
[root@prometheus ~]$ nvidia-smiTue Feb 24 10:52:55 2026 +-----------------------------------------------------------------------------------------+| NVIDIA-SMI 590.48.01 Driver Version: 590.48.01 CUDA Version: 13.1 |+-----------------------------------------+------------------------+----------------------+| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. || | | MIG M. ||=========================================+========================+======================|| 0 Tesla T4 Off | 00000000:04:00.0 Off | 0 || N/A 30C P8 9W / 70W | 0MiB / 15360MiB | 0% Default || | | N/A |+-----------------------------------------+------------------------+----------------------+| 1 Tesla T4 Off | 00000000:06:00.0 Off | 0 || N/A 32C P8 9W / 70W | 0MiB / 15360MiB | 0% Default || | | N/A |+-----------------------------------------+------------------------+----------------------+
Lets also make sure that we have the same CUDA version installed across hosts.
[root@prometheus ~]$ rpm -qa | grep cuda-toolkitcuda-toolkit-config-common-13.1.80-1.noarchcuda-toolkit-13-config-common-13.1.80-1.noarchcuda-toolkit-13-1-config-common-13.1.80-1.noarchcuda-toolkit-13-1-13.1.1-1.x86_64cuda-toolkit-13.1.1-1.x86_64
We also need to update $PATH for nvcc if we have not done so already.
cat << 'EOF' | sudo tee /etc/profile.d/cuda.shexport PATH=/usr/local/cuda/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATHEOF
Then source the path.
# source /etc/profile.d/cuda.sh
And now run nvcc.
nvcc --versionnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2025 NVIDIA CorporationBuilt on Tue_Dec_16_07:23:41_PM_PST_2025Cuda compilation tools, release 13.1, V13.1.115Build cuda_13.1.r13.1/compiler.37061995_0
We also will need to install the Nvidia Container Toolkit on both GPU hosts, using the RHEL 9 version below.
sudo dnf config-manager \ --add-repo=https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo
Once again we are going to skip the gpgcheck. Again this is a homelab.
sudo dnf install -y --nogpgcheck nvidia-container-toolkit
And now we validate install on both hosts.
# nvidia-ctk --versionNVIDIA Container Toolkit CLI version 1.18.2commit: 9e88ed39710fd94c7e49fbb26d96492c45e574fb
Now we need to generate the CDI specification, as Podman does not use Docker-style run-times, and instead using Container Device Interface (CDI).
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
The command above creates /etc/cdi/nvidia.yaml which describes installed GPUs and NVML libraries.
We now need to restart podman and confirm podman sees our CDI devices.
cat <<'EOF' | sudo tee /etc/containers/containers.conf.d/99-cdi.conf[engine]cdi_enabled=truecdi_spec_dirs=["/etc/cdi","/var/run/cdi"]EOF
Now we need to verify podman can utilize our GPUs. Again we are running these commands on both our GPU enabled servers.
podman run --rm --device nvidia.com/gpu=all docker.io/nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi -L
GPU 0: Tesla T4 (UUID: GPU-9491a3e6-ea29-ba4e-4403-083244d5575c)
GPU 1: Tesla T4 (UUID: GPU-1d877ac8-5df1-34b0-4f86-59945e37d2ba)
DCGM install on RHEL 10
The install is pretty straight forward, for this post I am performing these steps on both my GPU enabled hosts.
Add Nvidia Repo
Note that I could not find DCGM in the RHEL10 repos, so going with RHEL9 repos. Seems to work without issue thus far.
# dnf config-manager --add-repo \ https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
Now install as shown below.
Note we are skipping the gpgcheck due to RHEL10 newer OpenGPG verification stack. Since this is a lab, and not production, this is acceptable for testing.
# dnf install -y --nogpgcheck datacenter-gpu-manager-4-core datacenter-gpu-manager-4-proprietary
Now we can start the service.
# systemctl enable --now nvidia-dcgm
And we check that the service is running.
systemctl status nvidia-dcgm● nvidia-dcgm.service - NVIDIA DCGM service Loaded: loaded (/usr/lib/systemd/system/nvidia-dcgm.service; enabled; preset: disabled) Active: active (running) since Tue 2026-02-24 10:37:35 EST; 36min ago Invocation: da9cd3a2c8a5463a95a3605b68adf253 Main PID: 2263 (nv-hostengine) Tasks: 17 (limit: 1646190) Memory: 91.7M (peak: 93.1M) CPU: 23.253s CGroup: /system.slice/nvidia-dcgm.service └─2263 /usr/bin/nv-hostengine -n --service-account nvidia-dcgmFeb 24 10:37:35 prometheus.lab systemd[1]: Started nvidia-dcgm.service - NVIDIA DCGM service.Feb 24 10:37:37 prometheus.lab nv-hostengine[2263]: DCGM initializedFeb 24 10:37:37 prometheus.lab nv-hostengine[2263]: Started host engine version 4.5.2 using port number:>
dcgmi discovery -l
Now that dcgmi is installed lets confirm it can see our GPUs.
This command lists all discovered GPUs. Shows GPU id, PCI BUS ID and Model Name. Should be comparable to the output of nvidia-smi. This command confirms that dcgmi can talk to the host engine.
dcgmi discovery -l2 GPUs found (Active).+--------+----------------------------------------------------------------------+| GPU ID | Device Information |+--------+----------------------------------------------------------------------+| 0 | Name: Tesla T4 || | PCI Bus ID: 00000000:04:00.0 || | Device UUID: GPU-9491a3e6-ea29-ba4e-4403-083244d5575c |+--------+----------------------------------------------------------------------+| 1 | Name: Tesla T4 || | PCI Bus ID: 00000000:06:00.0 || | Device UUID: GPU-1d877ac8-5df1-34b0-4f86-59945e37d2ba |+--------+----------------------------------------------------------------------+
Enable Health Watches
Health Watches are background checks that DCGM performs on the GPU subsystems. While they are not required for metrics export they do provide additional metrics related to GPU health, so lets enable them.
dcgmi health -s aHealth monitor systems set successfully.
dcgm-exporter
NVIDIA DCGM Exporter is an open-source tool (container) that collects real-time telemetry data from NVIDIA GPUs—such as utilization, memory usage, temperature, and power consumption—and exposes them in a Prometheus-compatible format.
We are going to run it via Quadlet ( /etc/containers/systemd/dcgm-exporter.container)
Now lets start the container
sudo systemctl daemon-reload
[root@columbia ~]# sudo systemctl start dcgm-exporter.service
[root@columbia ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8804d788f7f5 docker.io/nvidia/dcgm-exporter:latest 10 seconds ago Up 10 seconds systemd-dcgm-exporter
Lets verify it is listening on port 9400.
ss -tnlp | grep 9400LISTEN 0 4096 *:9400 *:* users:(("dcgm-exporter",pid=135704,fd=24))
Now lets poke a hole in our firewall to allow the traffic.
firewall-cmd --add-port=9400/tcp --permanentsuccess[root@prometheus ~]$ sudo firewall-cmd --reload
And test locally with curl.
curl -s -o /dev/null -w "%{http_code}" http://10.1.10.23:9400/metrics
We can also view the metrics in our browser

Next steps will be to scrape and import.
Which I will do after lunch.
Resources
Learn more from NVIDIA’s official resources:
- DCGM documentation and API references: https://docs.nvidia.com/datacenter/dcgm/
- NVIDIA Data Center GPU Manager product overview: https://developer.nvidia.com/datacenter/dcgm









