What Is Grafana? Homelab Metrics and Dashboards Explained

What Grafana actually is, how data sources, dashboards, panels, and alerts fit together, and how to read the Node Exporter Full dashboard at a glance.

On this page
  1. What Grafana actually is
  2. The four words that unlock Grafana
  3. A tour of the Node Exporter Full dashboard
  4. Where Grafana fits in your monitoring
  5. What’s next

The first time you set up monitoring, you end up staring at a page of raw numbers — or worse, a text box asking you to write a query in a language you’ve never seen. You have the data. You just can’t read it. That’s the exact gap Grafana fills: it takes the metrics something else already collected and turns them into charts you can understand at a glance. This post explains what Grafana is, the four words that make it click, and how to read a real dashboard — then points you at the hands-on build. When you’re ready to install it, Proxmox Monitoring with Prometheus and Grafana is the full-stack walkthrough.


What Grafana actually is

Grafana is a visualization layer — a dashboarding tool. It does not go out and measure anything itself, and it barely stores any data. Its whole job is to connect to somewhere your numbers already live, ask that source questions, and draw the answers as graphs, gauges, and tables.

That one distinction clears up most beginner confusion. In a typical homelab monitoring stack, three separate things are doing three separate jobs:

  • Small agents called exporters sit on each machine and expose its live numbers. The most common is Prometheus node_exporter, which reports CPU, memory, disk, and network for a Linux host.
  • Prometheus scrapes those exporters on a schedule and stores the history — it’s the database, keeping every measurement over time so you can look back.
  • Grafana connects to Prometheus, queries it, and shows the picture — it’s the screen you actually look at.
Collect → store → read → seeYour serversnode_exporter:9100Prometheusstores history:9090data sourceGrafana:3000one dashboardCPU31%Memory62%Disk44%Network18 Mb/seach box is a panel — one question eachalert rulepeira.dev

Grafana is the amber box on the right. Everything to its left is data; Grafana is how you see it.

So why not just look at Prometheus?

Prometheus has a basic query page, but it’s built for one expression at a time and speaks PromQL, its own query language. Grafana lets you arrange dozens of pre-written queries on a single screen, share it, and read it without touching PromQL. The queries are still there — they’re just saved inside the dashboard so you don’t retype them.


The four words that unlock Grafana

Almost everything in Grafana is one of four things. Learn these and the interface stops being mysterious.

Data sourcewhere the numbers come from. A data source is just a saved connection: a name, a type, and a URL. Point Grafana at your Prometheus and every graph can now query it. Grafana speaks to many data sources — Prometheus, InfluxDB, Loki for logs, even a plain MySQL or PostgreSQL database — but in a homelab, Prometheus is the one you’ll add first. Defining one is genuinely this small:

A Prometheus data source, defined as a file

# /etc/grafana/provisioning/datasources/prometheus.yaml
apiVersion: 1
datasources:
- name: Prometheus
  type: prometheus
  access: proxy
  url: http://localhost:9090
  isDefault: true

Dashboarda saved screen full of graphs. A dashboard is a page you assemble once and revisit forever: “my cluster overview”, “the NAS”, “AI token spend”. It holds a grid of graphs and a time picker in the top-right that rewinds every graph on the page together — last 15 minutes, last 24 hours, last week.

Panelone graph answering one question. Each box on a dashboard is a panel: “CPU usage”, “free disk”, “network in/out”. A panel runs its own query against the data source and renders the result — as a time-series line, a single stat, a gauge, a bar chart, or a table. A good rule of thumb: one panel, one question.

Alerta panel that watches itself. Grafana alerting lets you attach a rule to a metric — “tell me if free disk drops below 10%” — and get a notification by email, Slack, or a webhook when it fires. This is the leap from looking at graphs to being told when one goes wrong, so you don’t have to keep the tab open.

You don't have to build panels by hand

The community publishes thousands of ready-made dashboards. You import one by its ID number, pick your data source, and it appears fully populated — no panel-building required. That’s exactly what the next section is.


A tour of the Node Exporter Full dashboard

The fastest way to see Grafana earn its keep is to import the Node Exporter Full dashboardID 1860, published by Grafana Labs. It graphs nearly everything a Linux machine reports through node_exporter, and it’s the dashboard most homelabbers meet first.

You import it from Grafana’s Dashboards → New → Import screen: type 1860, click Load, choose your Prometheus data source, and it builds itself. Here’s how to read what appears:

  • The dropdowns at the top. The dashboard defines variables — dropdowns for the job and the host — that let one dashboard serve every machine. Pick a server and every panel below re-queries for it. One dashboard, your whole fleet.
  • The top rows are the “is it healthy right now?” stats — a handful of single-number panels: CPU busy, memory used, root filesystem used, uptime. Green-ish numbers mean you can stop looking.
  • The big graphs below are the “what has it been doing?” history — CPU broken out by mode, memory over time, disk I/O, network traffic. This is where you spot a slow leak or a 3 a.m. spike you slept through.
  • The time picker, top-right, is the control that matters most. A panel that looks alarming over “last 5 minutes” is often boring over “last 7 days”, and vice versa. Widening the window is the first move when a number looks off.
A brand-new panel reading “No data” is normal

If the dashboard imports but every panel says “No data”, the usual cause is that Prometheus isn’t actually scraping node_exporter yet, or you picked the wrong data source on import. The dashboard is only ever as good as the metrics behind it — Grafana draws what Prometheus has, and nothing more.

If you’d rather do this step yourself with copy-paste commands, the companion playbook — Add a Prometheus data source and import a Grafana dashboard — provisions the data source as a file and drops dashboard 1860 in, so a fresh Grafana comes up already showing data.


Where Grafana fits in your monitoring

Grafana is one layer of a small stack, and it pairs naturally with the others rather than replacing them:

  • Uptime checks answer “is it up?” — a simple yes/no ping. That’s Uptime Kuma’s job, and it’s the right first monitor before you touch metrics.
  • Metrics and history answer “how is it doing, and how has it been trending?” — that’s node_exporter, Prometheus, and Grafana together.
  • Alerts answer “what should wake me up?” — Grafana (or Prometheus’ own Alertmanager) watching those metrics for you.

You don’t need all of it on day one. Most homelabs start with uptime checks, add Prometheus and Grafana when “is it up?” stops being enough, and wire alerts once they know which numbers actually matter.


What’s next

Now that the vocabulary makes sense, the hands-on builds will feel like filling in a shape you already understand:

The official Grafana documentation is the best deeper reference once you’re building your own panels.


Related posts:

Sources: Grafana documentation, Grafana data sources, Grafana panels and visualizations, Node Exporter Full dashboard (ID 1860), Prometheus overview.

Comments

Comments are powered by GitHub Discussions — sign in with a GitHub account to join the conversation.