Turn AtlasMart observability evidence into environment-safe dashboards and supported saved artifacts whose UI boundaries never replace underlying index authorization.

Dashboards/Kibana Data Views, Saved Objects, Visualizations, and Environment Separation

Create an operational evidence model that links user-visible search symptoms to cluster, node, index, query, ingest, and relevance signals and turns them into actionable SLOs.

Intermediate → Advanced115–150 minutesDashboard artifact & environment-separation lab · Chapter 24 · Lesson 02Elasticsearch/Kibana 9.5.3 · OpenSearch/Dashboards 3.8.0 · bundled JVMsLast reviewed: September 2026

Learning outcomes

01

Distinguish Elasticsearch/Kibana data views and saved objects from underlying Elasticsearch index authorization.

02

Organize operational visualizations around user symptoms, diagnostic drill-down, and ownership instead of metric inventory.

03

Use spaces/tenants and environment naming to reduce accidental cross-environment edits while respecting their security limits.

04

Export/import dashboard artifacts through supported APIs or UI flows rather than editing Kibana/OpenSearch system indices directly.

05

Design a portable AtlasMart dashboard contract that can be reproduced in Elastic or OpenSearch without pretending saved-object formats are compatible.

Execution and safety note

Run mutating, destructive, security, lifecycle, snapshot, failure-injection, and load-test commands only in the disposable AtlasMart lab or an equivalently isolated environment. Verify the target cluster, index, tenant, credentials, and rollback path before execution; treat shown output as an expected invariant unless the lesson explicitly labels it as captured evidence.

Pinned observability baseline

Examples are reviewed against Elasticsearch/Kibana 9.5.3 and OpenSearch/OpenSearch Dashboards 3.8.0, using the course's established local TLS/auth conventions and bundled JVMs. Elastic metrics examples use supported cluster, node, index, task, slow-log, Kibana rule, saved-object/data-view, and SLO surfaces. OpenSearch examples use node/index stats, Alerting monitors, Dashboards, and Query Insights where installed/enabled. OpenSearch's native SLO feature is currently documented as experimental; Elastic SLO management has license and node-role prerequisites, so the mandatory lab also includes a product-neutral SLI/error-budget worksheet. No live cluster is available in this generation environment: commands are reproducible, expected invariants are stated, and latency/throughput values are labeled MEASURED instead of fabricated.

1. AtlasMart problem: the dashboard exists, but nobody trusts it

Production, staging, and a game-day cluster all send similarly named telemetry. An engineer opens an old dashboard, changes a filter, and assumes the p99 panel represents production. The technical failure is not chart rendering; it is missing environment identity, artifact ownership, and data authorization.

Wrong approach: “put every environment in one dashboard and rely on a dropdown.”

A dropdown is a convenience, not an authorization boundary. Separate data privileges first, then use spaces/tenants/data-source conventions to reduce human error.

2. Three layers: data, view, saved artifact

Layer Elastic/Kibana OpenSearch Dashboards Security implication
Data indices/data streams indices/data streams controlled by search-cluster privileges
Logical view data view / time field index pattern/data source concepts depending workflow does not grant index access
Saved artifact dashboard, visualization, search, data view saved objects Dashboards saved objects and plugin objects UI object access is distinct from data access

Elastic explicitly warns against writing directly to the .kibana index. Use documented saved-object/data-view/dashboard APIs or the UI so migrations and metadata remain valid. Apply the same principle to OpenSearch Dashboards system objects: use supported Dashboards/plugin interfaces, not direct hidden-index surgery.

3. Dashboard information architecture

Build the AtlasMart operations view in four rows. The first row is for the incident commander; deeper rows are for diagnosis.

Row Panels Question
1 — SLO availability, p95/p99, freshness, error/rejection rate, relevance probe Are users affected?
2 — Workload search/index rate, concurrency, top queries, ingest rate What demand changed?
3 — Runtime CPU, heap/GC, thread pools, breakers, caches Which resource or guardrail is stressed?
4 — Storage/topology disk, shards, merges, refresh, recovery, allocation Is storage or topology driving the symptom?

4. Environment contract before visualization

Every telemetry document used by the reproducible metric report should have stable dimensions such as environment, service, cluster_id, and a timestamp. Avoid free-form high-cardinality labels unless they are required for diagnosis.

Environment-safe telemetry mapping
PUT /atlasmart-ops-v24
{
  "mappings": {
    "properties": {
      "@timestamp": {"type":"date"},
      "environment": {"type":"keyword"},
      "service": {"type":"keyword"},
      "cluster_id": {"type":"keyword"},
      "latency_ms": {"type":"double"},
      "status": {"type":"keyword"},
      "freshness_lag_ms": {"type":"long"},
      "relevance_pass": {"type":"boolean"}
    }
  }
}

Production dashboards should default to an explicit production filter and display the environment prominently. The underlying principal must also have only the intended environment's index privileges when isolation is required.

5. Kibana spaces and saved objects

Kibana spaces organize saved objects and can provide feature-level access, but Elastic documents that spaces do not automatically restrict access to the underlying Elasticsearch data. Treat a production space as a UI boundary layered on top of Elasticsearch roles. For promoted dashboards, export supported saved objects as opaque artifacts and import them into the target space/version; do not hand-edit migration metadata.

Kibana: supported saved-object export shape
POST kbn:/api/saved_objects/_export
{
  "objects": [
    {"type": "dashboard", "id": "atlasmart-operations-v24"}
  ],
  "includeReferencesDeep": true
}
# Preserve the exported NDJSON as an opaque deployment artifact.
# Exported saved objects are not backwards-compatible with older Kibana versions.

6. OpenSearch Dashboards separation

OpenSearch Dashboards has its own saved-object, tenant, data-source, and plugin boundaries. The operational intent can match Kibana—separate environments, least privilege, version-controlled exports—but object schemas and APIs are not assumed interchangeable. In Security-plugin deployments, tenant visibility is a Dashboards object boundary; index permissions still decide which data the user can query.

Portability rule

Version-control the dashboard contract—panel purpose, query/aggregation definition, filters, units, SLO thresholds, and owner—plus product-specific exported artifacts. Do not make one product's saved-object JSON the canonical cross-product specification.

7. Free/local reproducible fallback: metric report

If the UI is unavailable or a visualization feature is subscription/managed-service dependent, the mandatory chapter lab remains reproducible with a generated HTML/JSON metric report fed by the same API evidence. The report should include the SLO row, query/runtime/storage evidence, timestamps, and links to the runbook. That preserves the learning objective without requiring a paid observability UI.

Product-neutral panel contract
{
  "panel_id": "search-p99",
  "owner": "search-platform",
  "environment": "prod",
  "sli": "client_search_latency_ms",
  "aggregation": "p99",
  "window": "5m",
  "unit": "ms",
  "runbook": "runbooks/search-tail-latency.md",
  "drilldowns": ["top_queries", "thread_pool_search", "cpu_gc", "disk_merge"]
}

8. Production judgment

Dashboards are operational software. Give them owners, version them, test their filters against fixtures, validate units and aggregation semantics, and review them when index names, mappings, spaces/tenants, or SLO definitions change. Keep a small “golden incident” dataset so a dashboard import can be smoke-tested before promotion.

Check your understanding

  1. Why is a Kibana space not an Elasticsearch data-security boundary?
  2. Why avoid direct writes to .kibana?
  3. What should the first dashboard row answer?
  4. What is the portable artifact across Elastic and OpenSearch?
  5. What is the free/local fallback?
Review the answers

1. Spaces organize/authorize Kibana objects; underlying index access is still governed by Elasticsearch privileges.

2. They bypass Kibana saved-object migrations and can corrupt future compatibility.

3. Whether users are affected, using availability, tail latency, freshness, errors/rejections, and relevance.

4. The dashboard contract plus product-specific exports, not a shared saved-object JSON schema.

5. A reproducible metric report built from supported APIs and the same SLO/runbook contract.

Summary and next step

Preserve the evidence, assumptions, version boundaries, and safety checks established in this lesson. Carry them into the next lesson—or, at the end of the capstone, into the production runbook—rather than treating this lesson as an isolated recipe.

References and version checks

Keep knowledge open

Help the academy stay free and grow.

If these tutorials save you time, a small donation supports new lessons, technical review, diagrams, examples, and long-term maintenance.

ETHEthereum / ERC-20 only
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0

Send only Ethereum or ERC-20 compatible assets to this address.