Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

To add a Prometheus dashboard to Grafana, first add a reachable Prometheus data source, then import a dashboard from JSON or a Grafana dashboard ID/URL and map its Prometheus reference to that data source. You can also create panels manually with PromQL. If panels are empty, check the network path, data-source mapping, query, time range, labels, and whether the required metrics actually exist.

How Grafana, Prometheus, and a dashboard fit together

Prometheus stores time-series metrics and evaluates PromQL queries. Grafana is the visualization layer: a dashboard contains panels, and each panel sends a query to a configured data source. Importing a dashboard does not install Prometheus, create missing metrics, or automatically discover the correct server. The destination Grafana must already be able to reach the Prometheus HTTP endpoint.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A typical host-monitoring setup uses Prometheus together with Node Exporter. Prometheus scrapes Node Exporter, stores the resulting series, and Grafana queries those series. The same sequence applies to application exporters and other Prometheus-compatible producers: the dashboard can only display metrics that the Prometheus server is collecting.

What you need before adding a dashboard

  • A running Prometheus server. Know its HTTP address and port. A common local address is http://localhost:9090, but that value is valid only when the Grafana process can resolve and reach that same machine.
  • Metrics that match the dashboard. A dashboard built for Node Exporter will expect Node Exporter metric names and labels. A dashboard built for a different exporter may import successfully but remain empty.
  • Access to configure Grafana. UI data-source changes require an organization-administrator account. If you cannot receive that permission, an administrator can provision the source with YAML or Terraform.
  • A dashboard definition. You may have a JSON file, a Grafana dashboard URL or numeric ID, or JSON text copied from another system. You can also start with an empty dashboard and write the panels yourself.

Before touching the dashboard, verify the Prometheus side. Confirm that the Prometheus process responds and that at least one metric expected by the dashboard exists. Grafana’s getting-started workflow follows this order: install and configure Prometheus and Node Exporter, check the collected metrics in Grafana Explore, and then build or import visualizations. Doing the checks first separates a metrics problem from a Grafana configuration problem.

Step 1: Verify Prometheus is collecting the required series

Check the endpoint from the Grafana network location

Open the Prometheus web interface or otherwise test its HTTP endpoint from the environment where Grafana runs. A successful response proves that the service is listening, but it does not prove that the required exporter is being scraped. Check the target status and query a known series before importing anything.

For a same-host installation, the URL may be http://localhost:9090. In a container deployment, that value usually points back to the Grafana container itself. Use the Prometheus container name, a service name on the shared network, or another address that is routable from Grafana instead.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Confirm the metric names and labels

Look for the metric family used by the dashboard and inspect its labels. PromQL is label-sensitive: a query can return no series when a dashboard assumes a label, job name, instance format, or exporter prefix that your setup does not use. Record the actual names and labels; they are useful when you later inspect an empty panel.

Check the time window

Use a time range that includes recent samples. A newly installed exporter may have no historical data, and a dashboard opened with an older custom range can appear blank even though current scraping works. This check belongs on the Prometheus side as well as in Grafana.

Step 2: Add Prometheus as a Grafana data source

Prometheus support is built into Grafana, so a separate Grafana plugin installation is not required. The navigation wording varies by Grafana version, but the current paths are Connections > Add new connection or Connections > Data sources.

  1. Sign in to Grafana with an organization-administrator account.
  2. Open Connections, then choose Add new connection. If your version presents a data-source list first, open Data sources and select Add data source.
  3. Search for and select Prometheus.
  4. Enter the Prometheus server URL in the URL field. Use http://localhost:9090 only for a same-host arrangement. For separate containers, enter the reachable Prometheus service hostname and port.
  5. Save the configuration and run Grafana’s connection test.

The URL must be reachable from the Grafana server, not merely from your browser. A browser may be able to open a private address that the Grafana backend cannot route to, or the reverse may be true. A failed test therefore points first to the URL, DNS, firewall, container network, TLS settings, or a stopped Prometheus process.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“Grafana provides built-in support for a Prometheus data source.” — Grafana Labs documentation.

When UI configuration is unavailable

Data-source configuration can also be managed through provisioning YAML or Terraform. This is useful for repeatable environments and for teams that do not grant dashboard editors organization-administrator rights. Have an administrator apply the provisioning configuration, then use the resulting data-source name when importing dashboards.

Step 3: Import an existing Prometheus dashboard

Once the data source passes its connection test, open Dashboards > New > Import dashboard. Grafana accepts three input forms:

Import method What you provide When it is useful
Upload JSON A dashboard JSON file saved locally Moving a dashboard between Grafana instances or keeping it under version control
Grafana dashboard URL or ID A URL from the Grafana dashboard library or its numeric ID Starting from an available dashboard definition without downloading it first
Paste JSON Dashboard JSON text in the import field Quick transfers and dashboards copied from another administration interface
  1. Choose the input type and provide the JSON, URL, or ID.
  2. Review the dashboard name and destination folder.
  3. Review the UID and any metric-prefix or variable options exposed by the importer. Keep the UID only when it will not collide with an existing dashboard in the destination.
  4. When Grafana displays data-source mappings, map every imported Prometheus reference to the Prometheus data source you configured in Step 2.
  5. Click Import, open the resulting dashboard, and test several panels across a recent time range.

Mapping is a required part of the process, not an optional cleanup step. A dashboard JSON can refer to a data source by a name, UID, or another internal reference that does not exist in your Grafana organization. Grafana lets you replace that reference with a source that does exist locally.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“During import, Grafana lets you map those references to data sources that exist in your environment so the dashboard can display data correctly.” — Grafana Labs documentation.

Review a dashboard before relying on it

Grafana’s dashboard library includes official and community dashboards for common technologies. Treat a community dashboard as configuration to inspect rather than as a guarantee that it matches your installation. Open representative panels and check:

  • the PromQL expression and the metric names it uses;
  • template variables, including the labels or data-source settings they depend on;
  • the exporter or application that must produce the metrics;
  • the expected job and instance label values;
  • any recording rules, plugins, or version-specific features referenced by the JSON.

Importing a dashboard does not install a required exporter or create recording rules. If those prerequisites are absent, the layout may look correct while every query returns an empty result.

Step 4: Validate the imported dashboard

Test a simple panel first

Open one panel, inspect its query, and run it over a short recent range. A simple series query is easier to validate than a complex rate, aggregation, or variable-driven expression. If the simple query returns data, move on to panels that depend on more specific labels or recording rules.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check variables before individual panels

Dashboard variables commonly filter by job, instance, device, or application. If a variable has no options, downstream panels may receive an empty label value and show no data. Inspect the variable query and compare its assumed labels with the labels actually present in Prometheus.

Save only after the mapping is correct

After confirming the data source and queries, save the dashboard. Saving preserves the panel definitions, visualizations, variables, folder placement, and the selected data-source references for subsequent viewers.

Build a Prometheus dashboard manually

An import is convenient, but a small custom dashboard is often clearer when no existing definition matches your metrics. Each panel needs a query and a visualization; Prometheus panels use PromQL because the data source determines the query language.

  1. Open Dashboards > New > New Dashboard.
  2. Choose Add visualization or add a new panel.
  3. Select the Prometheus data source.
  4. Enter or construct a PromQL query using a metric that you verified in Prometheus.
  5. Run the query and inspect the returned series and labels.
  6. Select an appropriate visualization. Grafana’s learning workflow starts with a time-series graph, but the visualization list also offers other panel types.
  7. Set the panel title, units, legend, thresholds, and time options that make the result understandable.
  8. Save the panel and then save the dashboard, choosing its name and folder.

Start with one meaningful question per panel: for example, whether a host metric changes over time or how a series differs by instance. Add label filters only after the unfiltered query returns the expected series. This approach makes a typo or label mismatch visible before it is hidden inside a larger expression.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Add deployment and alert context with annotations

Annotations place event markers over time-series panels. They can show deployments, threshold events, or other operational changes alongside metric data.

  1. Edit the dashboard and open its annotation settings.
  2. Add an Annotation query.
  3. Select the Prometheus data source.
  4. Enter a PromQL expression that returns the event series.
  5. Set the minimum step and map the fields that contain event time, text, or tags.
  6. Test the annotation query if your Grafana version provides that action, then save the dashboard.

Prometheus annotations require a configured and readable Prometheus data source plus metrics that represent the events. An annotation definition cannot create event data that Prometheus never collected.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Grafana Cloud or self-managed Grafana?

Both deployment models support importing dashboards from JSON, URLs, and IDs. The practical difference is who operates Grafana and how it reaches Prometheus.

Consideration Self-managed Grafana Grafana Cloud
Operations Your team runs Grafana, upgrades it, backs it up, and maintains its availability. The hosted service reduces platform maintenance; you still manage dashboards, queries, permissions, and metric sources.
Network path Grafana can often reach a private Prometheus directly on the local network. Prometheus must be reachable through an appropriate hosted connectivity path, such as a reachable endpoint or Private Data Source Connect configuration.
Dashboard portability Imports accept JSON, URLs, and IDs, subject to data-source mappings and version compatibility. The same import forms are available, with the same need to map data sources and verify compatibility.
Control and governance Local infrastructure gives you direct control over storage, network boundaries, and upgrade timing. The hosted model reduces infrastructure work while placing more of the platform operation with the service provider.

Choose based on the operational boundary rather than on dashboard syntax. A dashboard JSON does not remove the need to solve the network path to Prometheus, and moving the JSON between hosted and self-managed Grafana does not automatically translate data-source references.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Troubleshoot an empty or failing dashboard

Symptom Likely cause What to check
Connection refused or data-source test fails Prometheus is stopped, the URL is wrong, or Grafana cannot route to it. Confirm the Prometheus process, test the endpoint from the Grafana environment, and correct DNS, port, firewall, TLS, or container-network settings.
Grafana and Prometheus run in separate containers localhost:9090 points to the Grafana container rather than the Prometheus container. Use the Prometheus service or container hostname on the shared network, or another address reachable from Grafana.
Import succeeds but every panel is empty The imported Prometheus reference was not mapped to the configured source. Reopen the import or dashboard settings and ensure every Prometheus reference points to the working data source.
Only some panels are empty Those panels use different metrics, labels, recording rules, or exporter assumptions. Inspect each panel’s PromQL, compare its metric and label requirements with Prometheus, and check the dashboard’s variables.
Data exists but is outside the visible chart The selected time range or panel time override excludes the samples. Switch to a recent range and remove or adjust a panel-specific time override.
Variable dropdowns are blank The variable query expects a label or series that is not present. Run the variable query in Explore and compare its assumed job, instance, or other label with actual series.
You cannot add the data source Your account lacks organization-administrator permission. Ask an administrator to configure it, or use YAML provisioning or Terraform under your organization’s change process.

Use Explore to isolate the fault

Grafana Explore is useful for testing a metric independently of dashboard layout. Select the Prometheus source, run the panel’s query, and progressively simplify it: remove a label filter, try a known metric, and broaden the time range. If the simplified query still returns nothing, investigate Prometheus collection. If it works in Explore but not in the panel, inspect the panel’s variables, transformations, overrides, and time settings.

Check exporter and naming assumptions

An imported dashboard may target a different exporter or metric naming convention. For example, a host dashboard can assume Node Exporter while your Prometheus server scrapes only application metrics. Install and configure the required exporter in accordance with your environment, or edit the dashboard queries to use metrics you actually collect. Do not rename a metric in a panel without checking every related variable and panel query.

Operational practices that prevent repeat failures

  • Keep the data-source name deliberate. Consistent names make imports and provisioning mappings easier to understand across environments.
  • Version-control dashboard JSON. Store exported definitions with the PromQL and variable changes that explain why a panel was modified.
  • Test after exporter changes. A dashboard can remain saved while an exporter upgrade changes labels or removes a series.
  • Separate import validation from production rollout. Review queries, variables, required exporters, and permissions before placing a community dashboard in a shared production folder.
  • Limit access to configuration. Give organization-administrator rights only to accounts that need them; use provisioning for repeatable, audited changes.
  • Document the network path. Record whether Grafana reaches Prometheus through localhost, a service hostname, a private address, or a hosted connectivity feature.

The reliable sequence

The shortest dependable path is: verify Prometheus and its metrics, add and test the Prometheus data source from Grafana’s network location, import the dashboard, map every data-source reference, and then validate representative PromQL queries. Build panels manually when an import does not match your metrics, and add annotations only after event series and read access are available. When a panel is empty, debug the path in that same order—connectivity, mapping, query and labels, time range, then metric availability—rather than repeatedly re-importing the dashboard.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.