Grafana dashboards as code with JSON provisioning

Ryan Nakamura Feb 2026
2 tabs
# Grafana provisioning: datasources
# /etc/grafana/provisioning/datasources/prometheus.yml
apiVersion: 1
datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    url: http://prometheus:9090
    isDefault: true
    jsonData:
      timeInterval: "15s"
      httpMethod: POST

---
# Grafana provisioning: dashboards
# /etc/grafana/provisioning/dashboards/dashboards.yml
apiVersion: 1
providers:
  - name: Default
    orgId: 1
    folder: ""
    type: file
    disableDeletion: false
    editable: true
    updateIntervalSeconds: 30
    options:
      path: /var/lib/grafana/dashboards
      foldersFromFilesStructure: true
2 files · yaml, json Explain with highlit

Grafana visualizes Prometheus metrics through configurable dashboards. Dashboard JSON models define panels, queries, and layouts programmatically. Panel types include timeseries for graphs, stat for single values, table for tabular data, and gauge for thresholds. PromQL queries power panel data with rate(), sum(), and histogram_quantile(). Variables (template variables) enable dynamic filtering by service, environment, or instance. Row grouping organizes related panels. Alert thresholds add visual indicators. Dashboard provisioning from YAML auto-loads dashboards at startup. Grafana as code enables version-controlled, reproducible dashboards. Annotations mark deployments on graphs. Link panels to drill-down dashboards for investigation.