How to Monitor RHEL Servers Using Grafana and Prometheus

Modern infrastructure demands real-time visibility into server performance. Whether you’re a System Administrator, DevOps Engineer, or SRE, monitoring Linux servers is critical for ensuring performance, reliability, and uptime.

In this blog, you’ll learn how to monitor a RHEL VM using Prometheus Node Exporter and Grafana, starting from scratch and ending with powerful dashboards and visualizations.

What Is Prometheus and Grafana?

Prometheus

Prometheus is an open-source monitoring and alerting system designed for reliability and scalability. It collects metrics using a pull-based model.

Grafana

Grafana is an open-source analytics and visualization platform that transforms metrics into beautiful dashboards.

Node Exporter

Node Exporter exposes hardware and OS-level metrics such as CPU, memory, disk, and network usage from Linux servers.

Why Use Prometheus + Grafana for Linux Monitoring?

1.Agent-based metric collection
2.Real-time performance monitoring
3.Powerful dashboards
4.Production-ready & scalable
5.Widely used in Kubernetes & cloud platforms

Monitoring Architecture Overview

Data Flow
RHEL VM → Node Exporter → Prometheus → Grafana
System Requirements
ComponentRequirement
OSRHEL 8 / RHEL 9
RAMMinimum 2 GB
CPU1 Core
Ports9100, 9090, 3000
Userroot or sudo
Step 1: Prepare RHEL VM
sudo dnf update -y
sudo dnf install wget curl vim -y

Disable firewall (lab only):

sudo systemctl stop firewalld
sudo systemctl disable firewalld
Step 2: Install Node Exporter on RHEL

Download Node Exporter:

cd /opt
sudo wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz

Extract:

sudo tar -xvf node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64 node_exporter
Create Node Exporter Service
sudo nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target

[Service]
User=root
ExecStart=/opt/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target

Start service:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter

Verify:

curl http://localhost:9100/metrics
Step 3: Install Prometheus

Download Prometheus:

cd /opt
sudo wget https://github.com/prometheus/prometheus/releases/download/v2.50.0/prometheus-2.50.0.linux-amd64.tar.gz

Extract:

sudo tar -xvf prometheus-2.50.0.linux-amd64.tar.gz
sudo mv prometheus-2.50.0.linux-amd64 prometheus

Configure Prometheus

sudo nano /opt/prometheus/prometheus.yml
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "rhel-node"
    static_configs:
      - targets: ["localhost:9100"]

Create Prometheus Service

sudo nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring
After=network.target

[Service]
User=root
ExecStart=/opt/prometheus/prometheus \
  --config.file=/opt/prometheus/prometheus.yml \
  --storage.tsdb.path=/opt/prometheus/data

[Install]
WantedBy=multi-user.target

Start Prometheus:

sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus

Access Prometheus:

http://<server-ip>:9090

Step 4: Install Grafana

Install Grafana repository:

sudo dnf install -y https://dl.grafana.com/oss/release/grafana-10.2.3-1.x86_64.rpm

Start Grafana:

sudo systemctl enable grafana-server
sudo systemctl start grafana-server

Access Grafana:

http://<server-ip>:3000

Default login:

Username: admin
Password: admin
Step 5: Add Prometheus Data Source in Grafana

Steps:

  1. Grafana → ⚙ Settings → Data Sources
  2. Add Prometheus
  3. URL: http://localhost:9090
  4. Save & Test
Step 6: Import Node Exporter Dashboard

Steps:

  1. Grafana → Dashboards → Import
  2. Dashboard ID: 1860
  3. Select Prometheus → Import
Key Metrics You Can Monitor

✔ CPU usage & load
✔ Memory utilization
✔ Disk read/write & space
✔ Network traffic
✔ System uptime
✔ File system health

Optional: Enable Alerts in Grafana

You can configure alerts for:

  • High CPU usage (>80%)
  • Low disk space (<10%)
  • Memory saturation
  • Server down

Grafana supports:

  • Email alerts
  • Slack alerts
  • Webhook alerts
Production Best Practices

✔ Run Prometheus on a dedicated server
✔ Enable firewall rules instead of disabling
✔ Use HTTPS & authentication
✔ Add Alertmanager
✔ Use long-term storage (Thanos / Cortex)

Common Issues and Fixes
IssueSolution
No data in GrafanaCheck Prometheus targets
Node Exporter downCheck port 9100
High memory usageReduce scrape interval
Dashboard emptySelect correct data source

Conclusion

Using Prometheus Node Exporter and Grafana, you can build a powerful Linux server monitoring system for RHEL VMs. This setup is lightweight, scalable, and production-proven, making it ideal for on-prem, cloud, and hybrid environments.