Grafana Dashboards
Reproducible steps to build a first dashboard from the Grant API Prometheus metrics. High signal: exact PromQL and panel type.
Prerequisites
- API running with
METRICS_ENABLED=true(andAPP_PORT=4000or matchobservability/prometheus.yml). - Prometheus and Grafana up:
docker compose up -d prometheus grafana. - See observability/README.md in the repo for the full runbook.
1. Add Prometheus data source
- Open Grafana (e.g. http://localhost:3001). Log in (default
admin/adminor value ofGRAFANA_ADMIN_PASSWORD). - Go to Configuration → Data sources → Add data source.
- Choose Prometheus.
- URL:
http://prometheus:9090(Grafana and Prometheus on same Docker network). If Grafana runs on the host, usehttp://localhost:9090. - Save & Test.
2. Create a dashboard
- Dashboards → New → New dashboard.
- Add visualization (or Add → Visualization).
3. Panel 1 — Request rate
Data source: Prometheus.
Query: (PromQL)
promqlrate(http_requests_total[5m])Visualization: Time series.
Panel title: Request rate.
Unit: optional
reqps(requests per second) or leave default. Apply or Save.
4. Panel 2 — P95 latency by route
Add → Visualization (new panel).
Query:
promqlhistogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, route))Visualization: Time series.
Panel title: P95 latency by route.
Unit:
s(seconds). Legend:. Apply or Save.
5. Save dashboard
Save dashboard; give it a name (e.g. "Grant API"). You can add more panels (e.g. error rate, request count by status) using the same data source and http_requests_total / http_request_duration_seconds_* metrics.
Related:
- Observability overview — Ports and adapters, config
- Runbook:
observability/README.mdin the repo