Splunk Observability Cisco AI Pod Integration (Umbrella)
Prerequisites
| Tool or access |
Purpose |
Verify |
| Bash and Python 3 |
Run bundled setup and validation helpers |
bash --version && python3 --version |
| Required product/platform access |
Inspect or configure the selected target |
Complete the documented preflight |
| Credential files for live modes |
Keep secrets out of chat |
Verify paths only |
Workflow Overview
┌───────────┐ ┌───────────────┐ ┌───────────────┐ ┌─────────────────┐
│ Preflight │ → │ Render/review │ → │ Apply/handoff │ → │ Validate evidence │
└───────────┘ └───────────────┘ └───────────────┘ └─────────────────┘
When to Activate
- Deploying Splunk Observability Cloud for a Cisco AI Pod with UCS, Nexus, NVIDIA GPUs, NIM/vLLM inference, and
storage telemetry. Hand off base collector, HEC, dashboards, and detectors to the owning skills.
- Preview and review the splunk observability cisco ai pod 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-cisco-ai-pod-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-cisco-ai-pod-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 the AI Pod umbrella that ties together every component skill needed for end-to-end Cisco AI Pod observability in Splunk Observability Cloud. It composes:
- splunk-observability-cisco-nexus-integration for Cisco Nexus 9000 fabric metrics (cisco_os receiver).
- splunk-observability-cisco-intersight-integration for Cisco UCS metrics via Intersight OTel deployment.
- splunk-observability-nvidia-gpu-integration for NVIDIA GPU telemetry via DCGM Exporter.
And adds AI-Pod-specific bits documented in the configuration guide and production-validated by an OpenShift deployment:
- NIM scrapes (multi-job: llm/embedqa/rerankqa, port 8000
/v1/metrics).
- vLLM scrape (port 8000
/metrics).
- Milvus vector DB scrape (port 9091).
- NetApp Trident storage scrape (port 8001
/metrics).
- Pure Portworx storage scrape (ports 17001 + 17018).
- Redfish exporter (user-supplied) on port 9210.
- Cisco AI PODs Splunk Observability dashboard pipeline (
metrics/cisco-ai-pods, unfiltered).
- NIM dashboard pipeline (
metrics/nvidianim-metrics, unfiltered).
k8s_attributes/nim processor for app -> model_name extraction.
- OpenShift SCC helper,
workshop/multi-tenant.sh, and dual-pipeline filtering pattern.
Critical production lessons encoded
These are the silent failure traps the umbrella prevents:
- RBAC gap: base chart's ClusterRole grants only
pods and services. Any kubernetes_sd_configs.role: endpoints scrape (e.g. NIM in endpoint mode) silently fails with endpoints is forbidden. The umbrella emits the rbac.customRules block with endpoints + discovery.k8s.io/endpointslices get/list/watch when needed.
- receiver_creator naming:
receiver_creator/dcgm-cisco, NOT receiver_creator/nvidia (collision with chart autodetect). Inherited from the GPU child skill.
- DCGM dual-label discovery: matches both
app and app.kubernetes.io/name. Inherited from the GPU child skill.
- Dual-pipeline filtering: filtered standard pipeline + unfiltered specialized pipelines for AI Pod dashboards. Smarter than the canonical single-pipeline pattern.
- OpenShift defaults:
kubeletstats.insecure_skip_verify: true (REQUIRED), certmanager.enabled: false, cloudProvider: "".
- Existing collector apply: use
--apply-existing-collector when a Splunk OTel Collector is already running. This path renders the overlay, reads current Helm values without persisting the token, removes stale receiver_creator/nvidia, wires otlp into the metrics pipeline for Intersight, applies via Helm, restarts the existing collector agent, restarts Intersight, and runs live validation.
- Helm token pattern: apply scripts use a file-backed token (
--set-file splunkObservability.accessToken=...) so the token is never written to a tracked values file or temporary values file.
Composition model
When you run --render, the umbrella:
- Invokes each child skill's renderer to produce its overlay under a sub-directory.
- Merges the child overlays into a unified
splunk-otel-overlay/values.overlay.yaml with the renderer's deterministic Python deep-merge. The rendered base-collector handoff uses yq later to merge that reviewed overlay with base collector values.
- Adds AI-Pod-specific blocks on top of the merged overlay.
- Renders unified handoff scripts.
When you run --apply-existing-collector, the umbrella applies its rendered overlay to the already running Splunk OTel Collector Helm release instead of standing up a second collector.
What it renders (composed + AI-Pod-specific)
splunk-otel-overlay/values.overlay.yaml — composed overlay (Nexus + Intersight + GPU children + AI-Pod additions).
child-renders/<skill>/ — each child skill's full rendered output (preserved for debugging the merge).
intersight-integration/ — from the Intersight child.
secrets/cisco-nexus-ssh-secret.yaml — from the Nexus child.
dcgm-pod-labels-patch/ — from the GPU child when --enable-dcgm-pod-labels.
- NIM, vLLM, Milvus, Trident, Portworx, and Redfish scrape configuration embedded in
splunk-otel-overlay/values.overlay.yaml.
openshift/scc.sh — OpenShift SCC helper script.
workshop/multi-tenant.sh — Workshop multi-tenant deploy script (when --workshop-mode).
dashboards/ — AI-Pod-specific dashboards for NIM/vLLM inference, Milvus, and Trident/Portworx storage.
detectors/ — AI-Pod-specific detectors (vLLM error rate, NIM TTFT regression, Milvus query latency, Portworx node offline, Trident volume allocation).
scripts/handoff-base-collector.sh — emits the base collector + merge command with --distribution openshift (default).
scripts/handoff-hec-token.sh — for K8s container log shipping to Splunk Platform.
scripts/handoff-dashboards.sh, handoff-detectors.sh — emit reviewed dashboard and detector commands across all four skills.
scripts/explain-composition.sh — prints the per-child contribution summary.
metadata.json.
Safety Rules
- File-backed token flags only:
--o11y-token-file (Splunk Observability Org access token; passed through to all child skills + base collector).
--platform-hec-token-file (optional; for K8s container logs to Splunk Platform).
--intersight-key-id-file and --intersight-key-file (passed through to the Intersight child).
- Reject every direct token / key flag.
- Token files must be
chmod 600; --allow-loose-token-perms overrides with WARN.
- Cisco Nexus SSH credentials handled by the Nexus child (K8s Secret stub; user creates the Secret out-of-band).
Primary Workflow
Confirm prerequisites are installed: NVIDIA GPU Operator (or standalone DCGM Exporter), NIM/vLLM with the standard pod labels, Milvus, NetApp Trident, Pure Portworx, Redfish exporter, Cisco Intersight account + API key.
Render the composed overlay:
bash skills/splunk-observability-cisco-ai-pod-integration/scripts/setup.sh \
--render --validate \
--realm us0 \
--cluster-name atl-ai-pod \
--distribution openshift \
--nim-scrape-mode endpoints \
--enable-dcgm-pod-labels \
--output-dir splunk-observability-cisco-ai-pod-rendered
If a Splunk OTel Collector is already running, apply the overlay in place and run live validation:
bash skills/splunk-observability-cisco-ai-pod-integration/scripts/setup.sh \
--render --apply-existing-collector --validate --live \
--realm us0 \
--cluster-name atl-ai-pod \
--distribution openshift \
--collector-release splunk-otel-collector \
--collector-namespace splunk-otel \
--o11y-token-file /path/to/o11y-token \
--output-dir splunk-observability-cisco-ai-pod-rendered
For greenfield installs, apply child manifests (Intersight, optional DCGM patch) + merge overlay + apply via base collector:
bash splunk-observability-cisco-ai-pod-rendered/scripts/handoff-base-collector.sh
bash splunk-observability-cisco-ai-pod-rendered/scripts/handoff-dashboards.sh
bash splunk-observability-cisco-ai-pod-rendered/scripts/handoff-detectors.sh
Hand-offs
Out of scope
- All children's out-of-scope items (NVIDIA GPU Operator install, DCGM Exporter install, NIM/vLLM/Milvus/Trident/Portworx/Redfish exporter deployment, OpenShift cluster bootstrap, Cisco Intersight account creation).
Validation
bash skills/splunk-observability-cisco-ai-pod-integration/scripts/validate.sh
Runs each child skill's validate.sh recursively, then checks the composed overlay, endpoint-discovery RBAC, OpenShift kubelet settings, and rendered secret safety. With --live, it probes collector and Intersight resources and logs plus the live collector ConfigMap. The umbrella validator does not make direct SignalFlow API probes for NIM, Milvus, or vLLM metrics.
With --live, validation prefers oc, falls back to kubectl, passes --live through to child validators, and fails on Intersight OTLP export errors such as unknown service opentelemetry.proto.collector.metrics.v1.MetricsService.
See reference.md and references/composition-and-overlay-merge.md, nim-vllm-scrape-catalog.md, milvus-storage-redfish.md, openshift-scc.md, workshop-multi-tenant.md, ai-pod-dashboards-catalog.md, endpoints-rbac-patch.md, dual-pipeline-filtering.md, nim-scrape-modes.md, production-troubleshooting-reference.md, troubleshooting.md for the full annexes.
1---2name: splunk-observability-cisco-ai-pod-integration3description: Use when deploying Splunk Observability Cloud for a Cisco AI Pod with UCS, Nexus, NVIDIA GPUs, NIM/vLLM inference, and storage telemetry. Hand off base collector, HEC, dashboards, and detectors to the owning skills. Compose Cisco Nexus, Cisco Intersight, and NVIDIA GPU Observability skills into a Cisco AI Pod overlay, then add NIM, vLLM, Milvus, NetApp Trident, Pure Portworx, Redfish exporter, OpenShift SCC, workshop tenancy, RBAC, receiver naming, DCGM discovery, dual-pipeline filtering, NIM model-name extraction, and existing-collector cleanup patterns.4---56# Splunk Observability Cisco AI Pod Integration (Umbrella)78## Prerequisites910| Tool or access | Purpose | Verify |11|---|---|---|12| Bash and Python 3 | Run bundled setup and validation helpers | `bash --version && python3 --version` |13| Required product/platform access | Inspect or configure the selected target | Complete the documented preflight |14| Credential files for live modes | Keep secrets out of chat | Verify paths only |1516## Workflow Overview1718```text19┌───────────┐ ┌───────────────┐ ┌───────────────┐ ┌─────────────────┐20│ Preflight │ → │ Render/review │ → │ Apply/handoff │ → │ Validate evidence │21└───────────┘ └───────────────┘ └───────────────┘ └─────────────────┘22```2324## When to Activate2526- Deploying Splunk Observability Cloud for a Cisco AI Pod with UCS, Nexus, NVIDIA GPUs, NIM/vLLM inference, and27 storage telemetry. Hand off base collector, HEC, dashboards, and detectors to the owning skills.28- Preview and review the splunk observability cisco ai pod integration workflow before any live apply phase.29- Diagnose failed prerequisites, generated assets, configuration, or validation evidence.3031## Scope3233Follow the documented read-only or render-first path whenever it is available.34This skill does not imply permission to mutate live systems. Require explicit35apply flags, protected credentials, and operator review for state changes.3637## Examples3839Inspect the supported setup modes before selecting one:4041```bash42bash skills/splunk-observability-cisco-ai-pod-integration/scripts/setup.sh --help43```4445Expected output: usage, supported modes, and required arguments are displayed46without changing the target environment.4748Inspect validation modes before running completion checks:4950```bash51bash skills/splunk-observability-cisco-ai-pod-integration/scripts/validate.sh --help52```5354Expected output: offline, live, and completion options are displayed when the55skill supports them; help exits without mutation.5657## Troubleshooting5859| Issue | Cause | Resolution |60|---|---|---|61| Preflight fails | A required tool or access path is missing | Resolve it before rendering or applying |62| Rendered assets are incomplete | Required non-secret inputs are absent | Complete intake and render again |63| Apply is blocked | Review, credentials, or explicit acceptance is missing | Use the documented handoff |64| Validation is incomplete | Live evidence is unavailable | Record the gap and keep completion open |6566This is the **AI Pod umbrella** that ties together every component skill needed for end-to-end Cisco AI Pod observability in Splunk Observability Cloud. It composes:67681. [splunk-observability-cisco-nexus-integration](../splunk-observability-cisco-nexus-integration/SKILL.md) for Cisco Nexus 9000 fabric metrics (cisco_os receiver).692. [splunk-observability-cisco-intersight-integration](../splunk-observability-cisco-intersight-integration/SKILL.md) for Cisco UCS metrics via Intersight OTel deployment.703. [splunk-observability-nvidia-gpu-integration](../splunk-observability-nvidia-gpu-integration/SKILL.md) for NVIDIA GPU telemetry via DCGM Exporter.7172And adds **AI-Pod-specific bits** documented in the configuration guide and production-validated by an OpenShift deployment:7374- NIM scrapes (multi-job: llm/embedqa/rerankqa, port 8000 `/v1/metrics`).75- vLLM scrape (port 8000 `/metrics`).76- Milvus vector DB scrape (port 9091).77- NetApp Trident storage scrape (port 8001 `/metrics`).78- Pure Portworx storage scrape (ports 17001 + 17018).79- Redfish exporter (user-supplied) on port 9210.80- Cisco AI PODs Splunk Observability dashboard pipeline (`metrics/cisco-ai-pods`, unfiltered).81- NIM dashboard pipeline (`metrics/nvidianim-metrics`, unfiltered).82- `k8s_attributes/nim` processor for `app -> model_name` extraction.83- OpenShift SCC helper, `workshop/multi-tenant.sh`, and dual-pipeline filtering pattern.8485## Critical production lessons encoded8687These are the **silent failure traps** the umbrella prevents:88891. **RBAC gap**: base chart's ClusterRole grants only `pods` and `services`. Any `kubernetes_sd_configs.role: endpoints` scrape (e.g. NIM in endpoint mode) silently fails with `endpoints is forbidden`. The umbrella emits the `rbac.customRules` block with `endpoints` + `discovery.k8s.io/endpointslices` get/list/watch when needed.902. **receiver_creator naming**: `receiver_creator/dcgm-cisco`, NOT `receiver_creator/nvidia` (collision with chart autodetect). Inherited from the GPU child skill.913. **DCGM dual-label discovery**: matches both `app` and `app.kubernetes.io/name`. Inherited from the GPU child skill.924. **Dual-pipeline filtering**: filtered standard pipeline + unfiltered specialized pipelines for AI Pod dashboards. Smarter than the canonical single-pipeline pattern.935. **OpenShift defaults**: `kubeletstats.insecure_skip_verify: true` (REQUIRED), `certmanager.enabled: false`, `cloudProvider: ""`.946. **Existing collector apply**: use `--apply-existing-collector` when a Splunk OTel Collector is already running. This path renders the overlay, reads current Helm values without persisting the token, removes stale `receiver_creator/nvidia`, wires `otlp` into the metrics pipeline for Intersight, applies via Helm, restarts the existing collector agent, restarts Intersight, and runs live validation.957. **Helm token pattern**: apply scripts use a file-backed token (`--set-file splunkObservability.accessToken=...`) so the token is never written to a tracked values file or temporary values file.9697## Composition model9899When you run `--render`, the umbrella:1001011. Invokes each child skill's renderer to produce its overlay under a sub-directory.1022. Merges the child overlays into a unified `splunk-otel-overlay/values.overlay.yaml` with the renderer's deterministic Python deep-merge. The rendered base-collector handoff uses `yq` later to merge that reviewed overlay with base collector values.1033. Adds AI-Pod-specific blocks on top of the merged overlay.1044. Renders unified handoff scripts.105106When you run `--apply-existing-collector`, the umbrella applies its rendered overlay to the already running Splunk OTel Collector Helm release instead of standing up a second collector.107108## What it renders (composed + AI-Pod-specific)109110- `splunk-otel-overlay/values.overlay.yaml` — composed overlay (Nexus + Intersight + GPU children + AI-Pod additions).111- `child-renders/<skill>/` — each child skill's full rendered output (preserved for debugging the merge).112- `intersight-integration/` — from the Intersight child.113- `secrets/cisco-nexus-ssh-secret.yaml` — from the Nexus child.114- `dcgm-pod-labels-patch/` — from the GPU child when `--enable-dcgm-pod-labels`.115- NIM, vLLM, Milvus, Trident, Portworx, and Redfish scrape configuration embedded in `splunk-otel-overlay/values.overlay.yaml`.116- `openshift/scc.sh` — OpenShift SCC helper script.117- `workshop/multi-tenant.sh` — Workshop multi-tenant deploy script (when `--workshop-mode`).118- `dashboards/` — AI-Pod-specific dashboards for NIM/vLLM inference, Milvus, and Trident/Portworx storage.119- `detectors/` — AI-Pod-specific detectors (vLLM error rate, NIM TTFT regression, Milvus query latency, Portworx node offline, Trident volume allocation).120- `scripts/handoff-base-collector.sh` — emits the base collector + merge command with `--distribution openshift` (default).121- `scripts/handoff-hec-token.sh` — for K8s container log shipping to Splunk Platform.122- `scripts/handoff-dashboards.sh`, `handoff-detectors.sh` — emit reviewed dashboard and detector commands across all four skills.123- `scripts/explain-composition.sh` — prints the per-child contribution summary.124- `metadata.json`.125126## Safety Rules127128- File-backed token flags only:129 - `--o11y-token-file` (Splunk Observability Org access token; passed through to all child skills + base collector).130 - `--platform-hec-token-file` (optional; for K8s container logs to Splunk Platform).131 - `--intersight-key-id-file` and `--intersight-key-file` (passed through to the Intersight child).132- Reject every direct token / key flag.133- Token files must be `chmod 600`; `--allow-loose-token-perms` overrides with WARN.134- Cisco Nexus SSH credentials handled by the Nexus child (K8s Secret stub; user creates the Secret out-of-band).135136## Primary Workflow1371381. Confirm prerequisites are installed: NVIDIA GPU Operator (or standalone DCGM Exporter), NIM/vLLM with the standard pod labels, Milvus, NetApp Trident, Pure Portworx, Redfish exporter, Cisco Intersight account + API key.1391402. Render the composed overlay:141142 ```bash143 bash skills/splunk-observability-cisco-ai-pod-integration/scripts/setup.sh \144 --render --validate \145 --realm us0 \146 --cluster-name atl-ai-pod \147 --distribution openshift \148 --nim-scrape-mode endpoints \149 --enable-dcgm-pod-labels \150 --output-dir splunk-observability-cisco-ai-pod-rendered151 ```1521533. If a Splunk OTel Collector is already running, apply the overlay in place and run live validation:154155 ```bash156 bash skills/splunk-observability-cisco-ai-pod-integration/scripts/setup.sh \157 --render --apply-existing-collector --validate --live \158 --realm us0 \159 --cluster-name atl-ai-pod \160 --distribution openshift \161 --collector-release splunk-otel-collector \162 --collector-namespace splunk-otel \163 --o11y-token-file /path/to/o11y-token \164 --output-dir splunk-observability-cisco-ai-pod-rendered165 ```1661674. For greenfield installs, apply child manifests (Intersight, optional DCGM patch) + merge overlay + apply via base collector:168169 ```bash170 bash splunk-observability-cisco-ai-pod-rendered/scripts/handoff-base-collector.sh171 bash splunk-observability-cisco-ai-pod-rendered/scripts/handoff-dashboards.sh172 bash splunk-observability-cisco-ai-pod-rendered/scripts/handoff-detectors.sh173 ```174175## Hand-offs176177- Splunk OTel Collector base install: [splunk-observability-otel-collector-setup](../splunk-observability-otel-collector-setup/SKILL.md) with `--distribution openshift` (default; configurable).178- HEC for K8s container logs: [splunk-hec-service-setup](../splunk-hec-service-setup/SKILL.md).179- Dashboards: [splunk-observability-dashboard-builder](../splunk-observability-dashboard-builder/SKILL.md).180- Detectors: [splunk-observability-native-ops](../splunk-observability-native-ops/SKILL.md).181- Component skills (composed): Nexus / Intersight / GPU child skills.182183## Out of scope184185- All children's out-of-scope items (NVIDIA GPU Operator install, DCGM Exporter install, NIM/vLLM/Milvus/Trident/Portworx/Redfish exporter deployment, OpenShift cluster bootstrap, Cisco Intersight account creation).186187## Validation188189```bash190bash skills/splunk-observability-cisco-ai-pod-integration/scripts/validate.sh191```192193Runs each child skill's `validate.sh` recursively, then checks the composed overlay, endpoint-discovery RBAC, OpenShift kubelet settings, and rendered secret safety. With `--live`, it probes collector and Intersight resources and logs plus the live collector ConfigMap. The umbrella validator does not make direct SignalFlow API probes for NIM, Milvus, or vLLM metrics.194195With `--live`, validation prefers `oc`, falls back to `kubectl`, passes `--live` through to child validators, and fails on Intersight OTLP export errors such as `unknown service opentelemetry.proto.collector.metrics.v1.MetricsService`.196197See `reference.md` and `references/composition-and-overlay-merge.md`, `nim-vllm-scrape-catalog.md`, `milvus-storage-redfish.md`, `openshift-scc.md`, `workshop-multi-tenant.md`, `ai-pod-dashboards-catalog.md`, `endpoints-rbac-patch.md`, `dual-pipeline-filtering.md`, `nim-scrape-modes.md`, `production-troubleshooting-reference.md`, `troubleshooting.md` for the full annexes.