Back to Prompt Library
Dashboards & Feeds

Grafana Cloud Dashboard

Build a custom TV dashboard displaying metrics from your Grafana Cloud Prometheus data

Guide

Grafana Cloud Dashboard

Build a custom TV-optimized dashboard that queries your Grafana Cloud Prometheus data source and visualizes the metrics.

Note: Grafana Cloud doesn't support iframe embedding, so we build a custom dashboard using their API.

Prerequisites

  • Activate OptiDev Cloud - Click the "OptiDev Cloud" button in your project

  • Create a Grafana Cloud Service Account - Go to Grafana Cloud > Administration > Service Accounts > Create

  • Add secrets - Go to OptiDev Cloud > Secrets and add:

  • - GRAFANA_API_TOKEN - Your service account token
    - GRAFANA_STACK_URL - Your Grafana stack URL (e.g., https://your-stack.grafana.net)
    - GRAFANA_DATASOURCE_ID - Your Prometheus data source ID (find in Grafana > Data Sources)

    API Reference

    Query Prometheus metrics via Grafana Cloud:
    ``
    GET {GRAFANA_STACK_URL}/api/datasources/proxy/{DATASOURCE_ID}/api/v1/query
    Authorization: Bearer {GRAFANA_API_TOKEN}
    ``

    Docs: https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/http-api/

    Customize Your Queries

    Replace the example PromQL queries in the final prompt with your own metrics.

    Final Prompt

    ### Purpose
    I need to build a custom dashboard for TV display that shows metrics from my Grafana Cloud Prometheus data source.
    
    ### Requirements
    Build a dashboard that queries Grafana Cloud and visualizes the results.
    
    **API Setup**
    - Base URL: Use `GRAFANA_STACK_URL` from secrets
    - Auth: Bearer token using `GRAFANA_API_TOKEN` from secrets
    - Endpoint: `/api/datasources/proxy/{GRAFANA_DATASOURCE_ID}/api/v1/query`
    - Query param: `query` = PromQL query string
    
    **Metrics to Display** (customize these PromQL queries for your data)
    - CPU Usage: `avg(rate(container_cpu_usage_seconds_total[5m])) * 100`
    - Memory Usage: `avg(container_memory_usage_bytes) / 1024 / 1024 / 1024`
    - Request Rate: `sum(rate(http_requests_total[5m]))`
    - Error Rate: `sum(rate(http_requests_total{status=~"5.."}[5m]))`
    
    **Dashboard Layout**
    - Dark theme for TV display
    - Large metric cards at top with current values
    - Simple line charts for trends (last 1 hour)
    - Auto-refresh every 60 seconds
    - Show last updated timestamp
    
    **Backend Setup**
    I've activated OptiDev Cloud and added `GRAFANA_API_TOKEN`, `GRAFANA_STACK_URL`, and `GRAFANA_DATASOURCE_ID` in the project secrets.
    AI-Powered App Builder | OptiDev