Skip to content
DevOps AI ToolKit
Newsletter
Grafana Troubleshooting Toolkit

Grafana Troubleshooting Toolkit

Use this Grafana troubleshooting toolkit to diagnose datasource errors, no-data panels, alerting failures, provisioning errors, and auth/SSO problems.

Paste your error and get a triage plan.

Paste a log line, CLI error, stack trace, service failure, or config snippet and get a structured troubleshooting plan. Your snippet is carried straight into the AI Incident Response Assistant with Grafana context prefilled.

Do not paste secrets, tokens, private keys, passwords, or customer data. Your snippet stays in your browser until you open the assistant.

Top 25 Grafana Errors and Failure Modes

The production failures engineers hit most — each links to a full cause → fix → prevention guide.

Datasource not found

A panel or dashboard references a datasource UID that no longer exists after import, provisioning drift, or a deleted connection.

Bad Gateway (502) to datasource

Grafana's proxy returns HTTP 502 because the backend datasource is unreachable, crashing, or behind a broken reverse proxy.

Panel shows "No data"

A panel renders empty because the query matches no series, the time range is wrong, or the datasource returned an empty result set.

Datasource connection refused

Grafana cannot open a TCP connection to the datasource, usually a wrong host/port, stopped service, or network policy block.

Templating failed to load

A dashboard template variable query fails on load, breaking every panel that depends on that variable.

Datasource proxy 504 timeout

The datasource proxy times out waiting for a slow backend query to return, surfacing an HTTP 504 Gateway Timeout.

Panel render timeout

A heavy query or too many concurrent panels exceed the render timeout, leaving panels blank or spinning.

Too many outstanding requests

Prometheus rejects Grafana queries with "too many outstanding requests" when its query concurrency limit is saturated.

OAuth/SSO login failed

OAuth or SSO sign-in fails during user sync, often from misconfigured callback URLs, scopes, or attribute mappings.

Invalid API key (401)

API or datasource requests return 401 Unauthorized because the API key or service account token is wrong, expired, or revoked.

Access denied / dashboard permission

A user is blocked from viewing or editing a dashboard or folder because of missing RBAC or folder-level permissions.

Dashboard won't save (version mismatch)

Saving fails with a version mismatch when another edit changed the dashboard since it was opened.

Provisioning dashboard not found

File-based provisioning fails to load a dashboard due to a bad path, invalid JSON, or a missing referenced folder.

Plugin signature invalid / unsigned

Grafana refuses to load a plugin whose signature is invalid or unsigned unless it is explicitly allowlisted.

Database is locked (SQLite)

The bundled SQLite backend throws "database is locked" under concurrent writes, blocking saves and logins.

Grafana pod OOMKilled

The Grafana container is killed for exceeding its memory limit, often from large dashboards or heavy rendering.

Alert rule evaluation failed

A unified alerting rule fails to evaluate, so alerts never fire, from a datasource error or bad query expression.

Contact point / notification failed

A notification contact point fails to deliver because of a bad webhook, auth, or upstream integration error.

Image renderer unavailable

Alert images and PDF reports fail because the image-renderer plugin or service is missing or unreachable.

Invalid username or password

Login is rejected with invalid credentials, often from a forgotten admin password or a misconfigured auth backend.

Origin not allowed (CORS)

Embedded panels or the live streaming websocket fail because the request origin is not in the allowed list.

Migration failed on startup

Grafana fails to start after an upgrade when a database schema migration errors out mid-run.

x509 certificate signed by unknown authority

Grafana rejects a datasource or SSO endpoint whose TLS certificate is signed by an untrusted CA.

Context deadline exceeded

A query is cancelled when it exceeds the configured timeout, showing "context deadline exceeded" in the panel.

Panel plugin not found

A dashboard references a panel plugin that is not installed, so the panel renders as a missing-plugin placeholder.

Validate your config before you redeploy

Catch the structural mistakes that cause outages — 100% in your browser, nothing uploaded.

Best Grafana Prompts

Turn symptoms, logs, and config into a structured plan with prompts tuned for Grafana.

Grafana Datasource Provisioning YAML

Datasource errors

Use this prompt

Grafana Prometheus Panel Query Design

No-data panels

Use this prompt

Grafana Unified Alerting

Alerting

Use this prompt

Grafana Notification Policies & Contact Points

Alert routing

Use this prompt

Grafana Provisioning as Code

Provisioning

Use this prompt

Grafana SSO SAML/OIDC Debug

Auth / SSO

Use this prompt

Grafana RBAC Team & Folder Permissions

Permissions

Use this prompt

Grafana Templating Variables

Template variables

Use this prompt

Grafana Dashboard JSON Model Drift Review

Dashboard saves

Use this prompt

Download the Grafana Troubleshooting Runbook Pack

Checklists for datasource, panel, and alerting problems.

  • Datasource health & queries
  • No-data panels & templating
  • Alerting & contact points
  • Provisioning & plugins
  • Auth / SSO & permissions
Download the Grafana Runbook Pack

All Grafana Troubleshooting Guides

Grouped by failure-mode type — each guide covers cause, fix, validation, and prevention.

Authentication & TLS (10)

Networking (6)

Deployment & Builds (4)

Runtime (2)

Performance (4)

API errors (3)

Configuration (7)

Other (15)

Browse the full Grafana category

Grafana troubleshooting FAQ

Why does my Grafana panel show 'No data'?
"No data" means the query ran but returned zero series. Check that the selected time range covers your data, that the datasource is the right one, and that the metric or label filters actually match existing series. Test the same query in Explore to confirm the backend returns rows before blaming the panel.
How do I fix a Grafana datasource error?
Start at Connections > Data sources and click Save & test to see the exact failure. Most datasource errors are a wrong URL/port, a refused connection, an expired credential, or a TLS/CA mismatch. Confirm Grafana can reach the backend over the network, verify the auth token, and check for a stale datasource UID left behind after an import or provisioning change.
Why is Grafana alerting not firing?
Unified alerting rules fail silently when their evaluation errors. Open the rule and check its state and health: a datasource error, a query that returns no data, or a misconfigured no-data/error behavior can all prevent firing. Then verify the notification policy actually routes to a working contact point, since a delivery failure looks the same as an alert that never triggered.
How do I fix Grafana provisioning errors?
Provisioning failures usually come from bad file paths, invalid YAML/JSON, or references to folders or datasource UIDs that don't exist. Check the Grafana server logs at startup for the provisioning error, validate the files, and make sure every dashboard's datasource UID and target folder are present. Remember that provisioned dashboards can't be edited or deleted from the UI.
What causes Grafana 'Templating failed to load'?
This appears when a template variable's query fails, which cascades to every panel that depends on that variable. The underlying cause is almost always a datasource error or a variable query that returns nothing. Fix the variable's datasource and query first, then reload; the dependent panels recover once the variable populates.
Why does Grafana return a 502 or 504 for a datasource?
Grafana proxies datasource requests, so a 502 Bad Gateway means the backend is unreachable or crashing, while a 504 Gateway Timeout means the backend is too slow to answer within the proxy timeout. Check the datasource health and load, raise query/proxy timeouts if queries are legitimately heavy, and reduce concurrency for backends like Prometheus that reject too many outstanding requests.