Kind reference

Dashboard

Field reference and a complete example manifest for the Dashboard Kind.

Dashboard

A panel-and-layout dashboard, git as its only write path by design; there is no console dashboard builder and there never will be one. metadata.name is the natural key, unique per organization.

The spec shape adopts Perses' panel, layout and datasource structure under up0.io/v1, not Perses' own apiVersion and not Perses' own datasource plugins. upzero's data lives behind its own APIs, not behind Prometheus, Tempo or Loki, so two upzero-native query plugins stand in: Up0MonitorUptimeQuery and Up0TelemetryQuery. Panels render through upzero's own chart renderer, not an embedded Perses server.

Fields

Generated from up0 schema explain Dashboard --version v1 --output json against a live deployment.

FieldTypeRequiredDefaultMeaning
displayobjectno{}{ name: "..." }, the dashboard's own title.
datasourcesobjectno{}Keyed by an id you choose. Today this is always { kind: Up0DataSource, spec: {} }, this organization's own data; there is no configurable external datasource.
layoutsarray of objectno[]Grid placement: each item positions a panel by x/y/width/height, referencing it with $ref: "#/spec/panels/<key>".
panelsobjectno{}Keyed by the same id layouts[].content.$ref points at. Each panel has a display.name and a plugin. Only TimeSeriesChart is supported today.

Example

# up0/dashboards/service-overview.yaml
apiVersion: up0.io/v1
kind: Dashboard
metadata:
  name: service-overview
  labels:
    team: platform
spec:
  display:
    name: Service Overview
  datasources:
    default:
      display:
        name: upzero data
      default: true
      plugin:
        kind: Up0DataSource
        spec: {}
  layouts:
    - kind: Grid
      spec:
        items:
          - x: 0
            y: 0
            width: 12
            height: 6
            content:
              $ref: "#/spec/panels/api_throughput"
  panels:
    api_throughput:
      kind: Panel
      spec:
        display:
          name: production-api request throughput (24h)
        plugin:
          kind: TimeSeriesChart
          spec:
            queries:
              - kind: Up0TelemetryQuery
                spec:
                  signal: metrics
                  serviceName: production-api
                  metricName: http.server.request.count
                  aggregation: throughput

Up0TelemetryQuery.spec.signal is fixed to metrics; aggregation is one of errorRate, latencyP50, latencyP95, latencyP99, throughput, and metricName is required for all of them.

No direct apply path outside a sync

Dashboard has no REST create or update endpoint, deliberately; git is its only write path, not a temporary gap. The example above validates against the live schema; applying it needs a connected repository, which the local walk that verified this page's other examples could not complete (see Connect a repository).

On this page