Skip to content

Native Dashboard Provisioning via Helm (CRD or Sidecar) #169

@mridang

Description

@mridang

Is your feature request related to a problem? Please describe.

Currently, there is no native way within the OpenObserve Helm chart to provision dashboards as code (GitOps). While it is technically possible to upload dashboards using the API, the process feels clunky.

To achieve this right now, we have to write custom Kubernetes Jobs or post-install hooks that manage API credentials and execute curl commands to POST JSON files to the /api/<org>/dashboards endpoint. This adds unnecessary complexity and maintenance overhead compared to other observability tools.

Describe the solution you'd like

I would like the Helm chart to support automatic dashboard provisioning. Ideally, this would function similarly to the Datadog Operator, where dashboards are managed as Kubernetes Custom Resource Definitions (CRDs).

We are looking for an implementation similar to DatadogDashboard https://docs.datadoghq.com/containers/datadog_operator/crd_dashboard/, where the dashboard definition lives in a YAML file. Here is an example of what we want to be able to do with OpenObserve:

apiVersion: openobserve.ai/v1alpha1
kind: OpenObserveDashboard
metadata:
  name: example-dashboard
spec:
  title: Test Dashboard
  layoutType: ordered
  tags:
    - "team:my_team"
  # Clean dashboard structure defined directly in YAML
  widgets: |
    [
      {
        "id": "cpu-usage-widget",
        "definition": {
          "title": "CPU Usage",
          "type": "timeseries",
          "requests": [
            {
              "queries": [
                {
                  "name": "query1",
                  "data_source": "metrics",
                  "query": "avg:system.cpu.user{*} by {host}"
                }
              ],
              "display_type": "line"
            }
          ]
        },
        "layout": { "x": 0, "y": 0, "width": 4, "height": 2 }
      }
    ]

This feature is standard in tools like Grafana and Datadog. It allows us to manage dashboards via GitOps (ArgoCD/Flux) without maintaining custom scripts, simplifies version control, and ensures that if a dashboard resource is deleted from Kubernetes, it is removed from the application.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions