Splunk Observability Database Monitoring Setup
SkillDatabases & data"Use when handling DBMon receiver setup, database query analysis, explain-plan readiness, or database
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Splunk Observability Database Monitoring Setup skill
What this skill tells your AI
The instructions your AI receives, as published by chambear2809/splunk-cisco-skills in skills/splunk-observability-database-monitoring-setup/SKILL.md and read by ahel’s review.
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
- Handling DBMon receiver setup, database query analysis, explain-plan readiness, or database collector lifecycle work, including version-aware MySQL and MariaDB feature gaps.
- Preview and review the splunk observability database monitoring setup 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-database-monitoring-setup/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-database-monitoring-setup/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 |
Use this skill to take DBMon from a reviewed target specification through a validated collector deployment and product evidence. Render first. Apply only with the platform-specific acceptance gate. Do not report success merely because the collector starts.
Audited baseline and production matrix
Pin new deployments to Splunk OTel Collector v0.158.0 and Helm chart
0.158.0. Enforce these receiver-specific floors and platform/version pairs:
| Engine | Production support | Collector floor |
|---|---|---|
| Microsoft SQL Server | 2016/2017/2019/2022 on Azure Managed Instance, Azure SQL Database, AWS RDS, or self-hosted | v0.148.0 |
| MySQL | Product floor 5.7+ on AWS RDS or standalone; pinned receiver verifies 5.7.x, 8.0.x, 8.4.x, and 9.x; explain plans require 8.0+ | v0.154.0 |
| MariaDB | Product floor 10.5+ on AWS RDS or standalone; pinned receiver verifies 10.5.x–10.11.x and 11.x; explain plans are unavailable | v0.154.0 |
| Oracle Database | 19c/26ai on AWS RDS, Oracle RAC, or self-hosted; one target per RAC node | v0.148.0 |
| PostgreSQL | Azure Flexible Server 14.20/17.7 or Amazon RDS 14.15/17.5; keep versions paired with their provider | v0.147.0 |
MySQL 5.7+ and MariaDB 10.5+ are production-supported product targets. Enforce
the narrower pinned-receiver rows above and preserve their version-aware
evidence: metrics and query events are available, but explain plans are not
produced for MySQL 5.7 or MariaDB. Continue to use
--allow-unsupported-targets only for platforms or versions outside the
verified matrix; generated production apply helpers refuse that mode.
Required production evidence schema:
sizing_evidence:
reference: CHANGE-1234-load-test-report
reviewed_by: db-platform-owner
reviewed_at: "2026-07-07"
peak_memory_mib: 3072
peak_cpu_cores: 1.5
target_count: 4
Direct self-managed SQL Server/Oracle connections have no receiver TLS knobs
and therefore also require an explicit transport_exception with exactly
reason, reference, reviewed_by, and ISO reviewed_at. Managed SQL
Server/Oracle never accepts that exception and must use a secret-backed,
URL-form datasource with certificate verification.
Primary workflow
-
Read
reference.md. Confirm the realm, DBMon entitlement, target matrix, collector topology, explicit CPU/memory sizing evidence, database prerequisites, and required product features. Setscrape_ownerto exactly one enabled runtime; multiple output packets may be rendered for review, but only the owner packet can apply. -
Copy
template.exampleoutside the repository. Enter non-secret target data and credential reference names only. Setcollector.kube_contextfor Kubernetes and review each non-secret targetvalidation_filtersidentity; datasource and loopback targets require an explicit expected identity. Add sizing reference/reviewer/date plus measured peak memory, peak CPU, and benchmark target count. Managed SQL Server/Oracle targets require datasource mode with runtime-verified TLS. -
Render and run static plus pinned-collector configuration validation:
bash skills/splunk-observability-database-monitoring-setup/scripts/setup.sh \ --render --validate --collector-validate \ --spec /secure/path/dbmon.yaml \ --output-dir splunk-observability-database-monitoring-rendered -
Review
metadata.json, the coverage report, validation plan, database prerequisite runbooks, platform config, action packet, and rollback packet. Resolve every failure and explicitly accept every documented gap. -
Create the database users/grants and real Kubernetes Secrets or host environment variables through the owning systems. This skill never applies database grants or renders secret values.
-
Apply the reviewed target platform only after authorization:
# Kubernetes bash skills/splunk-observability-database-monitoring-setup/scripts/setup.sh \ --apply-k8s --accept-k8s-apply --collector-validate \ --spec /secure/path/dbmon.yaml # Linux bash skills/splunk-observability-database-monitoring-setup/scripts/setup.sh \ --apply-linux --accept-linux-apply --collector-validate \ --spec /secure/path/dbmon.yaml \ --db-credentials-env-file /secure/path/dbmon.env--applyremains a Kubernetes compatibility alias. Use the explicit target mode in new automation. Windows is a reviewed PowerShell handoff, not an unattended mutation path. An action helper refuses to run when its platform does not equal the spec'sscrape_owner, preventing duplicate scrapes. -
Run live and tenant-side read-only validation:
bash skills/splunk-observability-database-monitoring-setup/scripts/validate.sh \ --output-dir splunk-observability-database-monitoring-rendered \ --apiAdd
--livefor a Kubernetes packet. It is a scoped Kubernetes pod/log probe, not a host-service check. It keeps connection, authentication, required-system-view permission, scrape, and export failures fatal while recognizing the upstream PostgreSQL receiver's two best-effort per-statement EXPLAIN messages. For Linux or Windows, run the rendered platform status step and then the API validation above. -
Complete the product validation plan. Prove the target in Infrastructure > Datastores and APM > Database monitoring, then verify Queries, Query samples, Query metrics, Dependencies, Metadata, eligible explain plans, and any requested APM/AI features.
-
If apply validation fails, use the captured rollback state:
bash skills/splunk-observability-database-monitoring-setup/scripts/setup.sh \ --rollback-k8s --accept-k8s-rollback \ --output-dir splunk-observability-database-monitoring-rendered bash skills/splunk-observability-database-monitoring-setup/scripts/setup.sh \ --rollback-linux --accept-linux-rollback \ --output-dir splunk-observability-database-monitoring-renderedRollback requires the owner-only apply-state file and refuses if the live Helm revision or applied Linux files drifted. An explicit
--rollback-revision Nmust equal the state-recorded previous revision; otherwise perform a separately reviewed manual recovery. Never improvise a destructive Helm or filesystem reset.
Run setup.sh --help before production execution; it is authoritative for the
current flags and acceptance requirements.
Required collector shape
- Render
metrics/dbmonandlogs/dbmonfor a core-engine-only or MySQL-family-only packet. For mixed packets, render the deterministicmetrics/dbmon_core,logs/dbmon_core,metrics/dbmon_mysql, andlogs/dbmon_mysqlpipelines so MySQL and MariaDB retain their documented processor order. - Export infrastructure metrics through the isolated
signalfx/dbmonexporter. - Export query samples and top-query events through the canonical
otlp_http/dbmonexporter tohttps://ingest.<realm>.observability.splunkcloud.com/v3/event. - Set
X-splunk-instrumentation-library: dbmonand obtainX-SF-Tokenonly from a runtime secret environment variable. Kubernetes reuses the chart'sSPLUNK_OBSERVABILITY_ACCESS_TOKEN; Linux, Windows, and standalone gateways useSPLUNK_ACCESS_TOKEN. - Enable
db.server.query_sampleanddb.server.top_queryby default. - Preserve stable
service.instance.id; MySQL and MariaDB require themysql.instance.endpointidentity processor. - Keep the production receiver interval fixed at
10s. Default to100query-sample rows, a60stop-query interval, and a1000top-query sample limit. A reviewed load test can justify only documented advanced changes within the renderer's enforced bounds;100query-sample rows is a ceiling, so an override may lower it but never raise it. - Reject legacy
otlphttp/dbmon, a genericmetricsDBMon pipeline, invented suffixes, deprecated*.signalfx.comendpoints, and receiver configurations that omit the event pipeline.
Platform rules
Kubernetes
- Place external database receivers only under
clusterReceiver; never put them in the nodeagentDaemonSet. Chart0.158.0does not accept aclusterReceiver.replicasvalue, so use its singleton mode and verify exactly one ready cluster-receiver pod after apply. - Render generic Kubernetes with a blank chart
distributionvalue. Reject EKS Fargate and use a supported non-Fargate or external collector runtime. - Before apply, prove active context, release/namespace/chart ownership, existing database Secrets, current Helm values, and a clean config validation. Every Helm and kubectl call is bound to the reviewed context. Merge with the current release and use the major-version-specific transactional Helm upgrade below.
- Support both Helm 3 and Helm 4 semantics: Helm 3 uses the owner-only
executable post-renderer with
--wait; Helm 4 uses an ephemeral localpostrenderer/v1subprocess plugin plus watcher wait and--server-side=false. Do not enable Helm's built-in--atomicor--rollback-on-failure: this action owns rollback so it can first quiesce the fixed-node singleton and avoid overlapping old/new pods. The Helm 4 client-side three-way update is needed to removerollingUpdatewhile changing the singleton Deployment toRecreate; Helm 4 server-side apply otherwise retains an invalid field. Scope the Helm 4 plugin path to template/upgrade commands only, and retain--hide-secretfor server-side upgrade dry-runs. - If the installed chart is not
0.158.0, stop for an upgrade review; only continue with the separate--accept-collector-upgradegate. The same gate applies if the global image pin changes any existing collector workload. - For an accepted chart or image upgrade, derive the target distribution's receiver, processor, exporter, connector, and extension inventory from the exact pinned image. Inspect existing role configs diagnostically, then fail before Secret reads or Helm mutation if the final rendered agent, gateway, or cluster-receiver config retains an unavailable component type. Existing defaults that the target chart removes are not false-blocked.
- Chart
0.158.0also rejects deprecated custom component aliases through itsfailOnDeprecatedNamesgate. Before template rendering, fail on exporterotlp/otlphttp, processork8sattributes, or receiverfilelog/hostmetrics/k8sobjectsdefinitions and pipeline references, including suffixed IDs. Do not mechanically rename a live topology; hand the full-release migration tosplunk-observability-otel-collector-setup. - Fail on database receivers already assigned to agent/gateway placement.
Replacing or removing an existing cluster-receiver DBMon slice additionally
requires
--accept-dbmon-reconfigureafter duplicate-load review. - The helper inventories only the named Helm release. Before migration, attach evidence that any external collector, host service, or prior release scraping the same databases is disabled; the action cannot discover every external scraper.
- Preserve chart-owned processors, normal Kubernetes pipelines, existing env entries, realm, cluster name, and distribution. Database Secrets must be in the collector namespace with every referenced key nonempty.
- For secure datasource options that name a SQL Server
certificatefile or OracleWALLETdirectory, configure a read-only Secret volume in the baseclusterReceiver. The guarded apply verifies that each secret-derived, absolute trust path is covered by a rendered cluster-receiver mount before Helm mutation; it never prints the datasource or credential values. SQL Server certificate paths must end in.pem; the pinned driver rejects a PEM trust certificate whose path uses a.crtsuffix. - Verify desired replicas, ready replicas, and selected pod count all equal one. Persist owner-only revision/image/config-fingerprint state outside the rendered packet, and roll back only when the live revision still matches it.
Linux
- Require the pinned collector, systemd, the configured environment file,
adequate effective host/cgroup memory, and permission to manage only
splunk-otel-collector.service. - Refuse a base config that already has any database receiver. Audit the
effective systemd
ExecStartand fail closed rather than discarding existing feature gates, providers, arguments, or additional configs. - Back up and integrity-record the existing config/environment before atomic
replacement. Validate the new config before restart; persist
preparingstate before any backup or credential staging, then use durableapplying,restoring, andfinalizingtransitions around every mutation. Restore on any uncommitted failure. Rollback verifies both backup checksums and hashes of the currently applied files, refusing stale state after operator drift.
Windows
- Render collector YAML, environment-variable names, prerequisites, and a PowerShell action/rollback handoff.
- Validate with the pinned Windows collector before restarting the service.
- Use Windows Performance Counters only for applicable SQL Server collection; other targets use direct network connections.
- Do not mutate Windows from this skill without a future explicit, guarded action implementation.
Sizing and topology gates
- Refuse more than 30 targets per collector instance.
- Require at least
2048 MiBfor any collector that monitors SQL Server. - Require at least
512 MiBfor an Oracle-only collector; mixed SQL Server/Oracle uses2048 MiB. - Require explicit
collector.memory_mib,collector.cpu_limit, and reviewedsizing_evidencefor every packet. Splunk publishes no equivalent performance baseline for PostgreSQL, MySQL, or MariaDB; require a representative load test instead of inventing a support claim. - Allow only DBMon realms
us0,us1,eu0,eu1,eu2,au0,jp0, andsg0; rejectus2and unknown realms.
Product completion gate
Record these states separately: configured, collector validated,
telemetry observed, and product UI verified.
- Confirm stable database instance identity and receiver metrics in Infrastructure Monitoring.
- Require one positive SignalFlow metric probe per configured target, filtered by that target's expected identity. A tenant-wide metric match is never telemetry proof for a specific target.
- Confirm every intended target in the DBMon Overview and all applicable navigator tabs.
- Confirm only event surfaces enabled for each target. MySQL explain plans require 8.0+; supported MySQL 5.7 and MariaDB targets provide metrics and query events but not explain plans in the pinned receiver.
- Confirm stored-procedure views when used; Splunk exposes them for SQL Server and Oracle.
- Treat Oracle
db.server.session.wait_sampleas an explicit opt-in. The upstreamv0.158.0receiver documents it, but Splunk's DBMon Oracle product page does not yet document its UI/support behavior; record and validate that gap. - When APM correlation is requested, use only Splunk's published matrix: .NET with SQL Server; Java JDBC with SQL Server, MySQL, Oracle, or PostgreSQL. Prove a sampled query-to-trace link and trace-to-normalized-query link.
- Do not promise MySQL database instances in the APM service map; Splunk explicitly excludes that feature. Treat MariaDB APM correlation as a gap.
- The DBMon Query statement AI Assistant can summarize normalized queries and
generate recommendations, but Splunk Support must activate it. Mark it
ui_handoff_requireduntil a human verifies it. - Hand custom dashboards and detectors to
splunk-observability-dashboard-builderandsplunk-observability-native-ops; do not treat their absence as collector failure unless they were in the requested scope.
Non-negotiable guardrails
- Never ask for or display token, password, datasource, private-key, or connection-string values. Reject direct secret flags and inline secret fields recursively.
- Read the tenant API token only from
SPLUNK_O11Y_TOKEN_FILE. For collector ingest, reuse the Kubernetes chart Secret or readSPLUNK_ACCESS_TOKENfrom the private Linux/Windows runtime environment. Require private, non-symlink files and never pass a token value on argv. - Render only Kubernetes Secret key references and Linux/Windows environment variable names. Placeholder Secret manifests are documentation, never apply input.
- Collector config validation,
--live, and--apiare read-only and do not authorize apply. - Require separate explicit gates for Kubernetes apply, Linux apply, and every rollback. Do not broaden one approval to another platform.
- Do not auto-apply database users/grants, managed-database parameter changes, database restarts, application instrumentation, DBMon entitlement changes, AI activation, dashboards, or detectors.
- Treat query samples as potentially sensitive. Redact product evidence under the organization's data-handling policy.
Rendered evidence
Expect the packet to contain:
- Kubernetes singleton cluster-receiver values, placeholder-only Secret stubs,
base-collector handoff,
scripts/apply-dbmon-overlay.sh, andscripts/rollback-dbmon-k8s.sh. linux/collector-dbmon.yaml, its environment-name template and base handoff,scripts/apply-dbmon-linux.sh, andscripts/rollback-dbmon-linux.sh.windows/collector-dbmon.yaml, its environment-name template,scripts/apply-dbmon-windows.ps1, andscripts/rollback-dbmon-windows.ps1as fail-closed validation/handoff packets. They do not persist plaintext credentials in the service registry.- Per-engine prerequisite runbooks, APM-correlation handoff, product validation
plan, coverage report, gateway reference, and
metadata.json.
Static validation must fail on malformed YAML, unsupported target pairs, version-floor violations, more than 30 targets, insufficient documented memory, non-singleton Kubernetes placement, missing platform artifacts, legacy component names, secret material, or incomplete coverage/validation evidence.
See reference.md for the full support gaps, receiver prerequisites, advanced
controls, product/APM/AI feature matrix, action behavior, and official source
ledger. See references/gateway-routing.sqlserver.md for the supported SQL
Server gateway pattern.
Signals
- GitHub stars
- 37
- Forks
- 8
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
splunk-observability-database-monitoring-setup- Source
- github.com/chambear2809/splunk-cisco-skills