31.2c GPU Operator deployment: dcgm-exporter is automatically deployed and configured

📦 Virtualization and Cloud 📖 Cluster-Wide Telemetry

📘 Context Introduction

When you deploy the NVIDIA GPU Operator on a Kubernetes cluster, it doesn't just manage GPU drivers and containers. It also automatically sets up monitoring components. One of the most important of these is dcgm-exporter — a service that collects GPU metrics using NVIDIA's DCGM (Data Center GPU Manager) and exposes them in a format that Prometheus can scrape.

For new engineers, this means: you don't need to manually install or configure dcgm-exporter. The GPU Operator handles it for you as part of its deployment. This section explains what happens behind the scenes and what you can expect.


⚙️ How Automatic Deployment Works

When the GPU Operator is installed using Helm or the Operator Lifecycle Manager, it includes a component called the Node Feature Discovery and GPU Operator DaemonSet. During deployment:

  • The operator detects which nodes have NVIDIA GPUs.
  • It automatically schedules a dcgm-exporter pod on each GPU-enabled node.
  • The exporter starts collecting metrics immediately without any manual configuration.
  • A Service and ServiceMonitor (for Prometheus Operator users) are also created automatically.

This eliminates the need for engineers to manually set up metric exporters or worry about configuration files.


📊 What dcgm-exporter Collects

The automatically deployed dcgm-exporter gathers a standard set of GPU metrics. Here are the most important ones:

  • GPU Utilization — Percentage of time the GPU was busy
  • Memory Utilization — How much GPU memory is in use
  • Temperature — Current GPU temperature in Celsius
  • Power Draw — Instantaneous power consumption in watts
  • Memory Bandwidth — Percentage of memory bandwidth used
  • PCIe Throughput — Data transfer rates over the PCIe bus
  • GPU Clock Speeds — Current core and memory clock frequencies
  • ECC Errors — Error correction code events (if supported)
  • XID Errors — Critical GPU hardware errors

All metrics are exposed on port 9400 by default, which is the standard dcgm-exporter endpoint.


📊 Visual Representation: GPU Operator dcgm-exporter deployment

This diagram shows how the GPU Operator deploys dcgm-exporter DaemonSets, exposing metrics on port 9400.

flowchart LR Operator["GPU Operator Spec"] -->|Deploys DaemonSet| Exporter["dcgm-exporter Pod (Port 9400)"] Exporter -->|Expose metrics| Service["k8s Service (dcgm-exporter-service)"] classDef cpu fill:#eafaf1,stroke:#76b900,stroke-width:2px,rx:6px,ry:6px; classDef memory fill:#f0f7ff,stroke:#3498db,stroke-width:1.5px,rx:4px,ry:4px; classDef system fill:#f1f5f9,stroke:#64748b,stroke-width:1.5px; class Exporter cpu; class Service memory; class Operator system;

🛠️ Default Configuration Details

When the GPU Operator deploys dcgm-exporter, it uses sensible defaults. Here is what gets configured automatically:

Component Default Behavior
Deployment method DaemonSet (one pod per GPU node)
Exposed port 9400
Metrics path /metrics
Collection interval Every 10 seconds
Prometheus ServiceMonitor Created if Prometheus Operator is detected
Resource limits Set based on node GPU count
Log level INFO

Engineers can override these defaults by modifying the GPU Operator's Helm values, but for most use cases, the automatic configuration works perfectly.


🕵️ Verifying the Automatic Deployment

After the GPU Operator is installed, you can confirm that dcgm-exporter is running by checking for pods with the name containing dcgm-exporter on your GPU nodes. The pod status should show Running.

To see the metrics being collected, you can access the exporter's endpoint directly. The output will be a plain text list of GPU metrics in Prometheus exposition format, with each metric prefixed by DCGM_ (for example, DCGM_FI_DEV_GPU_UTIL).

If you are using Prometheus, you can verify that the metrics are being scraped by checking the Prometheus target status page — the dcgm-exporter targets should show as UP.


🔄 Relationship with Other GPU Operator Components

The automatic deployment of dcgm-exporter is part of a larger ecosystem within the GPU Operator:

  • GPU Driver DaemonSet — Installs NVIDIA drivers on each node
  • Container Toolkit DaemonSet — Configures Docker/containerd for GPU access
  • DCGM DaemonSet — Runs the DCGM host engine (required by dcgm-exporter)
  • dcgm-exporter DaemonSet — Collects and exposes metrics (automatically deployed)
  • Prometheus ServiceMonitor — Tells Prometheus where to scrape (if applicable)

The dcgm-exporter depends on the DCGM host engine being present, which is also deployed automatically by the GPU Operator.


✅ Key Takeaways for New Engineers

  • No manual setup needed — The GPU Operator handles dcgm-exporter deployment automatically.
  • One exporter per GPU node — Each node with GPUs gets its own dcgm-exporter pod.
  • Standard metrics — All common GPU health and performance metrics are collected.
  • Prometheus-ready — Metrics are exposed in Prometheus format on port 9400.
  • Customizable — While defaults work well, you can adjust configuration via Helm values.
  • Part of a larger system — dcgm-exporter works alongside other GPU Operator components.

This automatic deployment is one of the key benefits of using the GPU Operator — it significantly reduces the operational overhead of monitoring GPU infrastructure.