Grafana
Dashboards and visualisation for every metric you collect
What is Grafana?
Grafana turns time-series data into dashboards. It connects to dozens of data sources — Prometheus, InfluxDB, PostgreSQL, Elasticsearch, Loki — and lets you build panels, alerts and shared views without writing front-end code.
Best for
Visualising metrics from any source in one place
Why choose Grafana
Grafana's value is that it does not care where your data comes from. The same dashboard can show Prometheus metrics next to a PostgreSQL table, an InfluxDB measurement and a Loki log stream, which means you stop building a separate visualisation layer for each backend you happen to run. Panels are declarative and exportable as JSON, so a dashboard someone builds can be committed to a repository and reviewed like code. Alerting is unified across data sources, so you write one rule and route it through one notification policy rather than learning each backend's alert format. For a homelab or a small team, it is the single pane of glass that stops you from keeping six bookmarks.
Replaces
- Datadog
- New Relic
- Grafana Cloud
Key features
- Connects to dozens of data sources from one interface
- Panels, variables and templated dashboards
- Alert rules across any configured data source
- Teams, folders and sharing with snapshots
What to watch out for
Grafana visualises data; it does not store it. Every backend you connect is a separate system to install, secure and back up, and the dashboards are only as reliable as the slowest query behind them. The default admin credentials must be changed before it is ever exposed, and anonymous access is a footgun that has put many internal dashboards on the public internet. Provisioning dashboards as files is possible but the learning curve is real, and dashboards built in the UI tend to drift from whatever is in version control. Alerting rules in Grafana and alert rules in Prometheus overlap confusingly, and teams commonly end up maintaining both.
How to deploy
- Docker image or systemd binary
- Persistent volume for the SQLite/Postgres config store
- Add data sources after first login
Getting started
Install it with persistent storage for its own database — it keeps users, dashboards and alert state there, and losing it means rebuilding by hand. Immediately change the admin password and avoid exposing it directly to the internet without a reverse proxy and authentication in front. Add one data source at a time and confirm queries work in the Explore view before building panels. When a dashboard is worth keeping, export its JSON into your repository and provision it from a file so it survives a rebuild. Set up one notification contact point and one simple alert to prove the path end to end before writing dozens of rules.
Typical setup
Usually one container with a small persistent volume for its own database, fronted by a reverse proxy that terminates TLS and enforces authentication. Data sources are added one at a time and validated in Explore before any dashboard depends on them. Dashboards worth keeping are exported as JSON into a repository and provisioned from files, so a rebuilt instance comes back with the same views. Alert rules and notification policies are configured once, shared across sources, and tested with a throwaway alert. Anonymous access stays off, the admin password is changed on day one, and the instance itself is added to the backup routine because losing it loses every dashboard.
Who should look elsewhere
Skip Grafana if you have exactly one metrics source and your needs are a fixed set of charts — the source's own UI is often enough, and Grafana adds a service to run and secure. It is also a poor fit if nobody on the team will maintain dashboards, because an abandoned Grafana instance becomes a wall of broken panels that erodes trust in the data. And if your goal is alerting rather than visualisation, Prometheus with Alertmanager does that job with fewer moving parts.
Project health
- GitHub stars: 77,041
- Last code push: 2026-10-02
- Open issues: 3,293
- Status: actively developed
Figures pulled from the GitHub API and refreshed periodically.