Grafana
Dashboards and visualization for BlumeOps observability.
Quick Reference
| Property | Value |
|---|---|
| URL | https://grafana.ops.eblu.me |
| Tailscale URL | https://grafana.tail8d86e.ts.net |
| Namespace | monitoring |
| Deployment | Kustomize (argocd/manifests/grafana-ringtail/) |
| Image | registry.ops.eblu.me/blumeops/grafana |
| Sidecar Image | registry.ops.eblu.me/blumeops/grafana-sidecar |
Authentication
Grafana supports two login methods:
- SSO via authentik — OIDC login through Authentik (
auth.generic_oauth). Members of the Authentikadminsgroup get the Admin role; everyone else gets Viewer (role_attribute_pathingrafana.ini). - Local admin — break-glass login using the password from 1Password (“Grafana (blumeops)”). Always available if Authentik is down.
The OIDC endpoints live in the [auth.generic_oauth] section of argocd/manifests/grafana-ringtail/grafana.ini (fed to the grafana ConfigMap via configMapGenerator). The OIDC client secret is injected via external-secrets — argocd/manifests/grafana-config-ringtail/external-secret-authentik-oauth.yaml pulls grafana-client-secret from the 1Password “Authentik (blumeops)” item, surfacing it as the grafana-authentik-oauth secret in the monitoring namespace.
Upgrading
To upgrade Grafana:
- Update
version = "..."incontainers/grafana/default.nix(see build-grafana-images) and thegrafanaentry inservice-versions.yamlin the same PR. - Merge — the push to main builds the image at the merge commit and pushes it to the registry; the horkos publisher opens a pin PR with the new tag in
argocd/manifests/grafana-ringtail/kustomization.yaml(underimages:). - Merge the pin PR — that deploys.
The SQLite PVC is disposable — dashboards come from ConfigMaps and datasources from provisioning config.
Datasources
| Name | Type | Target |
|---|---|---|
| Prometheus | prometheus | prometheus.monitoring.svc.cluster.local:9090 |
| Loki | loki | loki.monitoring.svc.cluster.local:3100 |
| Tempo | tempo | tempo.monitoring.svc.cluster.local:3200 |
| TeslaMate | postgres | pg.ops.eblu.me:5434 (TeslaMate’s database on ringtail, via Caddy L4) |
Dashboard Provisioning
Dashboards are ConfigMaps with label grafana_dashboard: "1".
Location: argocd/manifests/grafana-config-ringtail/dashboards/
Optional annotation: grafana_folder: "FolderName"
Key Dashboards
Provisioned dashboards live in argocd/manifests/grafana-config-ringtail/dashboards/ (one ConfigMap per dashboard). Coverage as of 2026-06: alerts, borgmatic, CV APM, devpi, docs APM, fly.io proxy, forgejo, frigate, jellyfin, kubernetes, loki, macOS (indri host), postgresql, ringtail, sifaka disks, snowflake proxy, tempo, transmission, zot.
TeslaMate’s dashboards are not in the repo — an init container fetches them from the forge mirror at a pinned tag (TESLAMATE_VERSION in argocd/manifests/grafana-ringtail/deployment.yaml).
Related
- build-grafana-images - Home-built container images (Grafana + sidecar)
- kustomize-grafana-deployment - Kustomize manifest structure
- authentik - OIDC identity provider for SSO
- prometheus - Metrics datasource
- loki - Logs datasource
- tempo - Traces datasource
- Alloy - Data collector