✨ From vibe coding to vibe deployment. UBOS MCP turns ideas into infra with one message.

Learn more
Andrii Bidochko
  • Updated: March 23, 2026
  • 5 min read

Hands‑On Tutorial: Building a Production‑Ready Grafana Dashboard for OpenClaw SaaS

To build a production‑ready Grafana dashboard that visualizes per‑tenant observability metrics for the OpenClaw SaaS boilerplate, you need to export metrics from OpenClaw, configure a Prometheus data source in Grafana, design key panels (CPU, memory, request latency per tenant), set up alerts, and finally deploy the dashboard as code using UBOS tooling.

Introduction

Multi‑tenant SaaS applications demand granular observability so that each tenant’s performance can be monitored independently. OpenClaw, the open‑source SaaS boilerplate provided by UBOS homepage, ships with built‑in metrics collection but leaves the visualization layer to developers. This hands‑on tutorial walks you through creating a production‑grade Grafana dashboard that surfaces per‑tenant metrics, enabling engineering teams to detect anomalies, enforce SLAs, and optimize resource usage across all customers.

Prerequisites

  • Running OpenClaw instance (Docker or Kubernetes) with metric endpoints enabled.
  • Grafana 8+ installed (self‑hosted or SaaS).
  • Prometheus server reachable from Grafana.
  • Basic familiarity with UBOS platform overview and its CLI.
  • Access to a Git repository for storing dashboard JSON as code.
  • Node.js ≥ 14 (for optional script automation).

Exporting OpenClaw Metrics

OpenClaw exposes Prometheus‑compatible metrics at /metrics. By default, it includes tenant‑aware counters and gauges prefixed with openclaw_. To ensure per‑tenant labeling, verify that the tenant_id label is attached to each metric.

# Example metric output
openclaw_cpu_usage_seconds_total{tenant_id="tenantA",instance="app-1"} 123.45
openclaw_memory_usage_bytes{tenant_id="tenantB",instance="app-2"} 987654321
openclaw_request_latency_seconds{tenant_id="tenantA",method="GET",status="200"} 0.034

If you need to add custom metrics, edit src/metrics.ts in the OpenClaw repo and register them with the prom-client library, ensuring the tenant_id label is always present.

Setting Up the Prometheus Data Source in Grafana

  1. Log in to Grafana and navigate to Configuration > Data Sources.
  2. Click Add data source and select Prometheus.
  3. Enter the URL of your Prometheus server, e.g., http://prometheus:9090.
  4. Under Scrape interval, set a value that balances freshness and load (e.g., 15s).
  5. Save & test – you should see a green “Data source is working” message.

For environments where Grafana runs inside the same Kubernetes cluster as Prometheus, you can use the service DNS name (http://prometheus-operated:9090) to avoid exposing Prometheus publicly.

Creating the Grafana Dashboard

Data Source Configuration

When you create a new dashboard, the first panel should reference the Prometheus data source you just configured. In the panel editor, select Prometheus from the Query* dropdown.

Key Panels

The following panels cover the most critical per‑tenant observability signals.

CPU Usage per Tenant

Shows the cumulative CPU seconds consumed by each tenant.

sum by (tenant_id) (rate(openclaw_cpu_usage_seconds_total[5m]))

Memory Usage per Tenant

Current memory footprint in megabytes.

sum by (tenant_id) (openclaw_memory_usage_bytes / 1024 / 1024)

Request Latency (p95) per Tenant

95th‑percentile latency for HTTP requests.

histogram_quantile(0.95, sum by (le, tenant_id) (rate(openclaw_request_latency_seconds_bucket[5m])))

Error Rate per Tenant

Proportion of non‑2xx responses.

sum by (tenant_id) (rate(openclaw_http_requests_total{status=~"5.."}[5m])) / sum by (tenant_id) (rate(openclaw_http_requests_total[5m]))

Alerts

Configure alerts directly in each panel to notify you when a tenant exceeds thresholds.

  • CPU Spike: Trigger if rate(openclaw_cpu_usage_seconds_total[5m]) > 0.8 for a tenant.
  • Memory Leak: Alert when memory usage grows > 20% over 30 minutes.
  • Latency Breach: Fire if p95 latency exceeds 2s for more than 5 minutes.

In Grafana, go to Alerting > Notification channels and add a Slack or email endpoint. Then, enable Alert rule on each panel and bind it to the channel.

Deploying the Dashboard as Code

Storing the dashboard JSON in version control guarantees reproducibility across environments. UBOS provides a Workflow automation studio that can push JSON files to Grafana via its HTTP API.

  1. Export the dashboard JSON from Grafana (Share > Export > Save to file).
  2. Create a dashboards/ folder in your repo and commit the JSON file, e.g., openclaw-per-tenant.json.
  3. Add a CI step (GitHub Actions example):
    name: Deploy Grafana Dashboard
    on:
      push:
        paths:
          - 'dashboards/**'
    jobs:
      upload:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - name: Upload dashboard
            env:
              GRAFANA_TOKEN: ${{ secrets.GRAFANA_TOKEN }}
            run: |
              curl -X POST -H "Content-Type: application/json" \
                   -H "Authorization: Bearer $GRAFANA_TOKEN" \
                   --data @dashboards/openclaw-per-tenant.json \
                   https://grafana.example.com/api/dashboards/db
    

  4. Verify the dashboard appears in Grafana after the workflow runs.

Because the dashboard is now part of your codebase, any change—new panel, updated query, or alert rule—can be reviewed, tested, and rolled back like any other software artifact.

Additional UBOS Resources to Accelerate Your Observability Journey

UBOS offers a rich ecosystem of integrations and templates that complement the monitoring stack:

Conclusion and Next Steps

By following this tutorial you now have a fully functional Grafana dashboard that isolates per‑tenant metrics, alerts on critical thresholds, and lives as code within your UBOS‑powered CI/CD pipeline. The next logical steps are:

  1. Integrate AI YouTube Comment Analysis tool to automatically surface user feedback about performance.
  2. Leverage the Enterprise AI platform by UBOS to run predictive models on historic metric trends.
  3. Explore the UBOS partner program for dedicated support and co‑development opportunities.

“Observability is not a feature; it’s a foundation. With per‑tenant dashboards you turn raw metrics into actionable intelligence for every customer.” – UBOS Engineering Team

For a deeper dive into multi‑tenant observability patterns, check out the original announcement on the OpenClaw project: OpenClaw Observability Release.

© 2026 UBOS. All rights reserved.


Andrii Bidochko

CTO UBOS

Andrii Bidochko is an AI entrepreneur and researcher focused on AI agents, reinforcement learning, and autonomous systems. He writes about the technologies shaping the future of machine intelligence, from frontier models and agent architectures to real-world AI applications.

Sign up for our newsletter

Stay up to date with the roadmap progress, announcements and exclusive discounts feel free to sign up with your email.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.