Skip to main content
Cloud DevOps Solutions
Get a quote Talk to an engineer

Observability and monitoring

Grafana Consulting and Engineering for Dashboards Your Team Will Actually Use

Grafana is an open source visualisation and alerting platform that queries metrics, logs, traces and databases from many data sources in one interface. We deploy and secure it, provision dashboards and alerts as code, and design views around service health so engineers and on-call staff can find answers quickly.

Key takeaways

  • Grafana is a query and visualisation layer, not a storage system. Its quality depends on the data sources behind it.
  • Dashboards should live in version control and be provisioned, not hand-edited in production.
  • Fewer, well-designed dashboards beat hundreds of copies that nobody maintains.
  • Unified alerting is powerful, but alert rules still need owners, severity and runbooks.
  • Access control and SSO matter more than most teams expect once non-engineers use dashboards.

What teams use Grafana for

Service health dashboards

Rate, error and duration views per service, with links down to logs and traces for the same time window.

Kubernetes and infrastructure views

Cluster, node, namespace and workload dashboards that answer capacity and saturation questions.

SLO and error budget reporting

Burn rate and remaining budget shown to engineering and product stakeholders.

Cross-source investigation

Prometheus, Loki, Tempo, cloud metrics and SQL databases explored from one place during an incident.

Business and operational metrics

Order volumes, queue depth and job success rates for teams outside engineering.

What Grafana is and why teams adopt it

Grafana does not store your telemetry. It connects to the systems that do, runs queries against them and presents the results as panels, dashboards and alerts. That separation is its main strength: you can keep metrics in Prometheus, logs in Loki or Elasticsearch, traces in Tempo and business data in PostgreSQL, and still look at all of it together.

Teams adopt Grafana because it is flexible, widely understood and free to self-host under its open source licence. It also gives non-specialists something to look at. A well-built dashboard lets a product manager see error rates during a launch without reading PromQL. Our Grafana installation and data source guide shows the basic setup, and the Grafana and Prometheus monitoring service covers the wider engagement.

How we run Grafana in production

Deployment

Grafana is a stateless web application plus a database for users, folders and settings. For anything beyond a trial we use PostgreSQL or MySQL instead of the default embedded SQLite, run at least two replicas behind a load balancer, and keep the configuration in Helm values or Terraform. On Kubernetes the official Helm chart works well, with data sources and dashboards provisioned at startup.

A provisioned data source looks like this:

apiVersion: 1
datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    url: http://prometheus-operated.monitoring:9090
    isDefault: true
  - name: Loki
    type: loki
    access: proxy
    url: http://loki-gateway.logging

Dashboards as code

Hand-built dashboards decay. Someone clones one for a test, tweaks a query, and six months later nobody knows which copy is correct. We keep dashboard definitions in Git, deploy them through provisioning, and discourage saving edits to production. Engineers can still experiment in a scratch folder and export the result when it is worth keeping.

Variables do much of the work. A single service dashboard with cluster, namespace and workload variables replaces dozens of near-identical copies. Our Kubernetes, JVM and PostgreSQL dashboard patterns show the structure we start from.

Design for the on-call engineer

We lay dashboards out top to bottom: user-facing symptoms first (traffic, errors, latency), then saturation and dependencies, then detail. Panels link to related logs and traces with the time range carried across. A dashboard that needs explanation has failed its job, so each one gets a short description and an owner.

Alerting and on-call

Grafana’s unified alerting can evaluate rules against any data source and route notifications through contact points. It is convenient for rules over logs or SQL, where Prometheus cannot help. For metric alerts we often keep rules in Prometheus and Alertmanager, since that keeps them next to the data and testable with standard tooling, and use Grafana alerting for the rest. Whichever you choose, we apply the same discipline: alerts describe a user-visible problem, carry a runbook link and have an owner. See runbooks in alert annotations and Grafana OnCall schedule integration.

Security and access

Dashboards expose a lot about your systems and sometimes about customers. We configure SSO with OIDC or SAML, map identity provider groups to roles, switch off anonymous and sign-up access, and enforce TLS. Data sources are the real sensitive layer, because a viewer with query access to a database data source can read whatever that credential can read. We use read-only credentials, restrict data source permissions by team, and use service accounts with narrow scopes for automation rather than shared admin keys.

Cost and capacity

Self-hosted Grafana is cheap to run. The expensive part is the queries it generates. Dashboards that refresh every few seconds across wide time ranges can hammer Prometheus or Elasticsearch. We set sensible default refresh intervals, use recording rules for heavy expressions, and review slow panels. If you use Grafana Cloud or Amazon Managed Grafana, pricing is usage or seat based, so we check which volumes you actually send before you commit.

Day-2 operations and failure modes

Typical issues are an overloaded database, plugins that break on upgrade, stale dashboards pointing at renamed metrics and alert rules that error silently. We pin plugin versions, test upgrades in staging, back up the Grafana database, and alert on rule evaluation failures. A quarterly review removes dashboards nobody has opened, which is the simplest way to keep trust high.

Dashboard sprawl and governance

The commonest Grafana problem is not technical. After a year, an unmanaged instance holds hundreds of dashboards, many copied, many broken, and engineers stop trusting any of them. We prevent that with light governance: a folder structure per team, a short naming convention, tags for service type, and a rule that anything in production folders comes from Git.

We also keep a small set of golden dashboards per workload type, such as an HTTP service, a queue consumer or a database, so a new service gets a good view by changing a variable instead of building from scratch. Usage statistics help during reviews, since a dashboard nobody has opened in months can usually be archived without a debate.

When not to choose Grafana

If your telemetry is exclusively in Elasticsearch and your team lives in log search, Kibana as part of the ELK Stack may serve you better. If you want one vendor to collect, store and visualise everything with no infrastructure, Datadog bundles that, with a different cost model. Grafana is strongest as the front end for Prometheus and Grafana Loki. If you would like help untangling an existing dashboard estate, get in touch.

Official documentation: grafana.com

How we work with Grafana

  1. 01

    Audit current dashboards and sources

    We find duplicated, stale and untrusted dashboards and list the data sources you actually rely on.

  2. 02

    Design the information model

    We agree folders, naming, variables and a small set of standard dashboards per service type.

  3. 03

    Deploy and secure

    Grafana is installed with a proper database, SSO, role mapping and TLS, and data sources are provisioned.

  4. 04

    Provision dashboards and alerts as code

    Dashboards and alert rules are stored in Git and applied through the provisioning API, Terraform or sidecars.

  5. 05

    Connect on-call and context

    Alert routes, contact points and links to runbooks, logs and traces are wired up and tested.

  6. 06

    Train and hand over

    We document conventions and review dashboards with the teams who use them.

Grafana compared with the alternatives

We recommend the tool that fits your team, not the one we know best. Here is when each option makes sense.

OptionChoose it when
GrafanaGrafana is an open source visualisation and alerting platform that queries metrics, logs, traces and databases from many data sources in one interface.
KibanaChoose it if your data lives mainly in Elasticsearch and log search is the main job, since it integrates tightly with that stack.
Datadog dashboardsChoose them if you already pay for Datadog and want dashboards bundled with its collection and alerting, accepting its usage-based model.
Amazon Managed Grafana or Grafana CloudChoose a managed Grafana if you want the same interface without running upgrades, databases and scaling yourself.
Cloud native consolesChoose CloudWatch or Azure Monitor workbooks for small, single-cloud setups where one more tool is not worth it.

Tools we use alongside Grafana

PrometheusGrafana LokiGrafana TempoGrafana MimirGrafana OnCallAlertmanagerElasticsearchPostgreSQLAWS CloudWatchAzure MonitorTerraformHelmOpenTelemetry

Frequently asked questions

What is Grafana used for?
Grafana turns data from sources such as Prometheus, Loki, Elasticsearch, cloud monitoring services and SQL databases into dashboards and alerts. Engineers use it to watch service health, investigate incidents and track capacity, and it lets teams move between metrics, logs and traces in a single interface.
Is Grafana the same as Prometheus?
No. Prometheus collects and stores metrics and evaluates alert rules. Grafana visualises data from Prometheus and many other sources, and has its own alerting. They are commonly paired, but each can be used without the other.
How do you manage Grafana dashboards as code?
We keep dashboard JSON, or generated definitions from libraries such as Grafonnet, in Git and provision them through Grafana's provisioning files, Kubernetes sidecars or Terraform. Changes go through pull requests, and editing in the UI is limited so production does not drift from the repository.
Grafana or Kibana: which should we choose?
Choose Grafana when you work across several data sources, especially metrics and logs together. Choose Kibana when Elasticsearch is your main store and you need its search and analysis features. Many organisations run both, with Grafana for service health and Kibana for deep log work.
Should we self-host Grafana or use a managed service?
Self-hosting gives control and keeps data in your account, at the cost of upgrades, backups and capacity work. Managed options remove that work and add vendor dependence. We usually recommend managed for small teams and self-hosted where data residency or integration needs demand it.
How do you secure Grafana?
We put it behind SSO with OIDC or SAML, map identity groups to organisation roles, disable anonymous access, use TLS, and restrict data source permissions. Service accounts with scoped tokens replace shared admin credentials for automation.

Talk to an engineer about Grafana

Book a free 30-minute call. We review your current setup and tell you honestly whether and how we can help.

Written by Saddique Khan, DevOps / SRE / Cloud Consultant Engineer. Last updated 2026-10-09.