Splunk Observability NVIDIA GPU Integration
Workflow Overview
┌───────────┐ ┌───────────────┐ ┌───────────────┐ ┌─────────────────┐
│ Preflight │ → │ Render/review │ → │ Apply/handoff │ → │ Validate evidence │
└───────────┘ └───────────────┘ └───────────────┘ └─────────────────┘
When to Activate
- Send NVIDIA GPU, DCGM, DCGM Exporter, GPU Operator, DGX, AI Pod, or CUDA workload telemetry to Splunk
Observability Cloud, configure receiver_creator/dcgm-cisco, enable per-pod DCGM labels, or render GPU dashboards
and detectors.
- Preview and review the splunk observability nvidia gpu integration workflow before any live apply phase.
- Diagnose failed prerequisites, generated assets, configuration, or validation evidence.
Scope
Follow the documented read-only or render-first path whenever it is available.
This skill does not imply permission to mutate live systems. Require explicit
apply flags, protected credentials, and operator review for state changes.
Examples
Inspect the supported setup modes before selecting one:
bash skills/splunk-observability-nvidia-gpu-integration/scripts/setup.sh --help
Expected output: usage, supported modes, and required arguments are displayed
without changing the target environment.
Inspect validation modes before running completion checks:
bash skills/splunk-observability-nvidia-gpu-integration/scripts/validate.sh --help
Expected output: offline, live, and completion options are displayed when the
skill supports them; help exits without mutation.
Troubleshooting
| Issue |
Cause |
Resolution |
| Preflight fails |
A required tool or access path is missing |
Resolve it before rendering or applying |
| Rendered assets are incomplete |
Required non-secret inputs are absent |
Complete intake and render again |
| Apply is blocked |
Review, credentials, or explicit acceptance is missing |
Use the documented handoff |
| Validation is incomplete |
Live evidence is unavailable |
Record the gap and keep completion open |
This is a standalone reusable skill for NVIDIA GPU telemetry (DCGM Exporter) in Splunk Observability Cloud. It is independent of the AI Pod umbrella — works for NVIDIA DGX clusters, AI Pods, generic K8s + GPUs, anywhere DCGM Exporter is installed.
Critical naming + discovery details
- Receiver name
receiver_creator/dcgm-cisco (parameterized via --receiver-creator-name, default dcgm-cisco). Explicitly NOT receiver_creator/nvidia — that name collides with the Splunk OTel chart's autodetect receiver_creator when autodetect.prometheus: true is set, and the collision silently breaks GPU discovery.
- Discovery rule matches both label conventions:
app=nvidia-dcgm-exporter (older standalone deployments) AND app.kubernetes.io/name=nvidia-dcgm-exporter (newer GPU Operator deployments).
- Default unfiltered pipeline:
metrics/nvidia-metrics ships all DCGM_FI_* series so dashboards have everything. Pass --filter strict to enable the canonical signalfx allow-list when cardinality control is critical.
What it renders
splunk-otel-overlay/values.overlay.yaml — agent.config.receivers.receiver_creator/dcgm-cisco parent (watch_observers: [k8s_observer]) owning prometheus/dcgm-cisco child (port 9400). Discovery rule with the dual-label match. Plus the metrics/nvidia-metrics pipeline (unfiltered by default).
dcgm-pod-labels-patch/ — when --enable-dcgm-pod-labels: env-var patch (DCGM_EXPORTER_KUBERNETES_ENABLE_POD_LABELS=true, DCGM_EXPORTER_KUBERNETES_ENABLE_POD_UID=true), ClusterRole + ClusterRoleBinding for the DCGM ServiceAccount, AutoMount ServiceAccountToken, kubelet-path volume mount.
dashboards/<name>.signalflow.yaml — GPU utilization, memory used/free, GPU temp, power, SM/MEM clocks, PCIe TX/RX, total energy, profiling DRAM/GR engine/PIPE tensor activity.
detectors/<name>.yaml — GPU temp ceiling, GPU power floor, GPU utilization regression, energy consumption anomaly.
scripts/setup.sh, render_assets.py, validate.sh, handoff-base-collector.sh, handoff-dashboards.sh, handoff-detectors.sh, apply-dcgm-pod-labels-patch.sh.
metadata.json.
Prerequisites surfaced as preflight checks (not installed)
- NVIDIA GPU Operator or standalone DCGM Exporter: install via
helm repo add gpu-helm-charts https://nvidia.github.io/dcgm-exporter/helm-charts then helm install --generate-name gpu-helm-charts/dcgm-exporter. The receiver_creator pattern relies on the standard pod label app=nvidia-dcgm-exporter (or app.kubernetes.io/name=nvidia-dcgm-exporter).
Safety Rules
- O11y token via
--o11y-token-file (chmod 600 enforced; passed through to base collector). Reject --o11y-token, --access-token, --token, --bearer-token, --api-token, --sf-token.
Primary Workflow
Verify DCGM Exporter is installed and pods carry the standard label:
kubectl get pods -A -l app=nvidia-dcgm-exporter -o wide
# OR (newer GPU Operator):
kubectl get pods -A -l app.kubernetes.io/name=nvidia-dcgm-exporter -o wide
Render:
bash skills/splunk-observability-nvidia-gpu-integration/scripts/setup.sh \
--render --validate \
--realm us0 \
--cluster-name lab-cluster \
--output-dir splunk-observability-nvidia-gpu-rendered
(Optional) When you need pod/namespace labels in DCGM_FI_* metrics — they are NOT exposed by GPU Operator by default — render the patch:
bash skills/splunk-observability-nvidia-gpu-integration/scripts/setup.sh \
--render --enable-dcgm-pod-labels \
--output-dir splunk-observability-nvidia-gpu-rendered
Then apply directly via the skill (recommended; refuses without
--accept-k8s-apply and prints the active kube-context):
bash skills/splunk-observability-nvidia-gpu-integration/scripts/setup.sh \
--render --enable-dcgm-pod-labels \
--apply-pod-labels-patch --accept-k8s-apply
--apply-pod-labels-patch --accept-k8s-apply --dry-run runs kubectl --dry-run=server without mutating the cluster. The DaemonSet env patch
(04-daemonset-env-patch.yaml) remains a strategic-merge patch the
operator applies separately so GPU Operator reconciles cleanly.
Hand off:
bash splunk-observability-nvidia-gpu-rendered/scripts/handoff-base-collector.sh
bash splunk-observability-nvidia-gpu-rendered/scripts/handoff-dashboards.sh
bash splunk-observability-nvidia-gpu-rendered/scripts/handoff-detectors.sh
Hand-offs
Validation
bash skills/splunk-observability-nvidia-gpu-integration/scripts/validate.sh
Static checks: receiver_creator name not equal to receiver_creator/nvidia, dual-label rule present, allow-list opt-in shape. With --live: DCGM Exporter pod presence, optional SignalFlow probe for DCGM_FI_DEV_GPU_UTIL series.
See reference.md and references/dcgm-exporter.md, dcgm-pod-labels.md, gpu-operator-prereq.md, receiver-creator-naming.md, dual-label-discovery.md, dashboards-catalog.md, troubleshooting.md for details.
1---2name: splunk-observability-nvidia-gpu-integration3description: Use when the user asks to send NVIDIA GPU, DCGM, DCGM Exporter, GPU Operator, DGX, AI Pod, or CUDA workload telemetry to Splunk Observability Cloud, configure receiver_creator/dcgm-cisco, enable per-pod DCGM labels, or render GPU dashboards and detectors. Render NVIDIA GPU telemetry from DCGM Exporter into Splunk Observability Cloud. Uses receiver_creator/dcgm-cisco to avoid chart autodetect collisions, matches both common DCGM labels, defaults to an unfiltered NVIDIA metrics pipeline, optionally patches DCGM pod labels, and emits dashboard, detector, base-collector, and apply handoffs.4---56# Splunk Observability NVIDIA GPU Integration78## Workflow Overview910```text11┌───────────┐ ┌───────────────┐ ┌───────────────┐ ┌─────────────────┐12│ Preflight │ → │ Render/review │ → │ Apply/handoff │ → │ Validate evidence │13└───────────┘ └───────────────┘ └───────────────┘ └─────────────────┘14```1516## When to Activate1718- Send NVIDIA GPU, DCGM, DCGM Exporter, GPU Operator, DGX, AI Pod, or CUDA workload telemetry to Splunk19 Observability Cloud, configure receiver_creator/dcgm-cisco, enable per-pod DCGM labels, or render GPU dashboards20 and detectors.21- Preview and review the splunk observability nvidia gpu integration workflow before any live apply phase.22- Diagnose failed prerequisites, generated assets, configuration, or validation evidence.2324## Scope2526Follow the documented read-only or render-first path whenever it is available.27This skill does not imply permission to mutate live systems. Require explicit28apply flags, protected credentials, and operator review for state changes.2930## Examples3132Inspect the supported setup modes before selecting one:3334```bash35bash skills/splunk-observability-nvidia-gpu-integration/scripts/setup.sh --help36```3738Expected output: usage, supported modes, and required arguments are displayed39without changing the target environment.4041Inspect validation modes before running completion checks:4243```bash44bash skills/splunk-observability-nvidia-gpu-integration/scripts/validate.sh --help45```4647Expected output: offline, live, and completion options are displayed when the48skill supports them; help exits without mutation.4950## Troubleshooting5152| Issue | Cause | Resolution |53|---|---|---|54| Preflight fails | A required tool or access path is missing | Resolve it before rendering or applying |55| Rendered assets are incomplete | Required non-secret inputs are absent | Complete intake and render again |56| Apply is blocked | Review, credentials, or explicit acceptance is missing | Use the documented handoff |57| Validation is incomplete | Live evidence is unavailable | Record the gap and keep completion open |5859This is a **standalone reusable skill** for NVIDIA GPU telemetry (DCGM Exporter) in Splunk Observability Cloud. It is **independent of the AI Pod** umbrella — works for NVIDIA DGX clusters, AI Pods, generic K8s + GPUs, anywhere DCGM Exporter is installed.6061## Critical naming + discovery details6263- **Receiver name `receiver_creator/dcgm-cisco`** (parameterized via `--receiver-creator-name`, default `dcgm-cisco`). Explicitly NOT `receiver_creator/nvidia` — that name collides with the Splunk OTel chart's autodetect receiver_creator when `autodetect.prometheus: true` is set, and the collision silently breaks GPU discovery.64- **Discovery rule matches both label conventions**: `app=nvidia-dcgm-exporter` (older standalone deployments) AND `app.kubernetes.io/name=nvidia-dcgm-exporter` (newer GPU Operator deployments).65- **Default unfiltered pipeline**: `metrics/nvidia-metrics` ships all DCGM_FI_* series so dashboards have everything. Pass `--filter strict` to enable the canonical signalfx allow-list when cardinality control is critical.6667## What it renders6869- `splunk-otel-overlay/values.overlay.yaml` — `agent.config.receivers.receiver_creator/dcgm-cisco` parent (`watch_observers: [k8s_observer]`) owning `prometheus/dcgm-cisco` child (port 9400). Discovery rule with the dual-label match. Plus the `metrics/nvidia-metrics` pipeline (unfiltered by default).70- `dcgm-pod-labels-patch/` — when `--enable-dcgm-pod-labels`: env-var patch (`DCGM_EXPORTER_KUBERNETES_ENABLE_POD_LABELS=true`, `DCGM_EXPORTER_KUBERNETES_ENABLE_POD_UID=true`), ClusterRole + ClusterRoleBinding for the DCGM ServiceAccount, AutoMount ServiceAccountToken, kubelet-path volume mount.71- `dashboards/<name>.signalflow.yaml` — GPU utilization, memory used/free, GPU temp, power, SM/MEM clocks, PCIe TX/RX, total energy, profiling DRAM/GR engine/PIPE tensor activity.72- `detectors/<name>.yaml` — GPU temp ceiling, GPU power floor, GPU utilization regression, energy consumption anomaly.73- `scripts/setup.sh`, `render_assets.py`, `validate.sh`, `handoff-base-collector.sh`, `handoff-dashboards.sh`, `handoff-detectors.sh`, `apply-dcgm-pod-labels-patch.sh`.74- `metadata.json`.7576## Prerequisites surfaced as preflight checks (not installed)7778- **NVIDIA GPU Operator** or standalone **DCGM Exporter**: install via `helm repo add gpu-helm-charts https://nvidia.github.io/dcgm-exporter/helm-charts` then `helm install --generate-name gpu-helm-charts/dcgm-exporter`. The receiver_creator pattern relies on the standard pod label `app=nvidia-dcgm-exporter` (or `app.kubernetes.io/name=nvidia-dcgm-exporter`).7980## Safety Rules8182- O11y token via `--o11y-token-file` (chmod 600 enforced; passed through to base collector). Reject `--o11y-token`, `--access-token`, `--token`, `--bearer-token`, `--api-token`, `--sf-token`.8384## Primary Workflow85861. Verify DCGM Exporter is installed and pods carry the standard label:8788 ```bash89 kubectl get pods -A -l app=nvidia-dcgm-exporter -o wide90 # OR (newer GPU Operator):91 kubectl get pods -A -l app.kubernetes.io/name=nvidia-dcgm-exporter -o wide92 ```93942. Render:9596 ```bash97 bash skills/splunk-observability-nvidia-gpu-integration/scripts/setup.sh \98 --render --validate \99 --realm us0 \100 --cluster-name lab-cluster \101 --output-dir splunk-observability-nvidia-gpu-rendered102 ```1031043. (Optional) When you need pod/namespace labels in DCGM_FI_* metrics — they are NOT exposed by GPU Operator by default — render the patch:105106 ```bash107 bash skills/splunk-observability-nvidia-gpu-integration/scripts/setup.sh \108 --render --enable-dcgm-pod-labels \109 --output-dir splunk-observability-nvidia-gpu-rendered110 ```111112 Then apply directly via the skill (recommended; refuses without113 `--accept-k8s-apply` and prints the active kube-context):114115 ```bash116 bash skills/splunk-observability-nvidia-gpu-integration/scripts/setup.sh \117 --render --enable-dcgm-pod-labels \118 --apply-pod-labels-patch --accept-k8s-apply119 ```120121 `--apply-pod-labels-patch --accept-k8s-apply --dry-run` runs `kubectl122 --dry-run=server` without mutating the cluster. The DaemonSet env patch123 (`04-daemonset-env-patch.yaml`) remains a strategic-merge patch the124 operator applies separately so GPU Operator reconciles cleanly.1251264. Hand off:127128 ```bash129 bash splunk-observability-nvidia-gpu-rendered/scripts/handoff-base-collector.sh130 bash splunk-observability-nvidia-gpu-rendered/scripts/handoff-dashboards.sh131 bash splunk-observability-nvidia-gpu-rendered/scripts/handoff-detectors.sh132 ```133134## Hand-offs135136- Splunk OTel Collector base install: [splunk-observability-otel-collector-setup](../splunk-observability-otel-collector-setup/SKILL.md).137- Dashboards: [splunk-observability-dashboard-builder](../splunk-observability-dashboard-builder/SKILL.md).138- Detectors: [splunk-observability-native-ops](../splunk-observability-native-ops/SKILL.md).139140## Validation141142```bash143bash skills/splunk-observability-nvidia-gpu-integration/scripts/validate.sh144```145146Static checks: receiver_creator name not equal to `receiver_creator/nvidia`, dual-label rule present, allow-list opt-in shape. With `--live`: DCGM Exporter pod presence, optional SignalFlow probe for `DCGM_FI_DEV_GPU_UTIL` series.147148See `reference.md` and `references/dcgm-exporter.md`, `dcgm-pod-labels.md`, `gpu-operator-prereq.md`, `receiver-creator-naming.md`, `dual-label-discovery.md`, `dashboards-catalog.md`, `troubleshooting.md` for details.