Smart Monitoring with Prometheus & Grafana
Grafana is an open-source analytics and visualization platform that connects to data sources, such as Prometheus, to create dashboards, alerts, and visualize real-time performance metrics.
Prometheus is an open-source monitoring and alerting toolkit that collects time-series metrics from targets like Node Exporter, stores them locally, supports PromQL for querying, and integrates with tools like Grafana for visualization
Node Exporter is a Prometheus exporter that exposes hardware and operating system metrics, including CPU usage, memory, disk and filesystem statistics, network I/O, and system load.
Prerequisite
Ensure that the Grafana server is up and running. If it's not, refer to this article
Now, set up Prometheus and Node Exporter on another node and visualize the data on the Grafana dashboard.
Create a Prometheus System User
Prometheus should run as a non-login system user:
sudo useradd --system --no-create-home --shell /bin/false PrometheusThen create a directory
sudo mkdir prometheusDownload and install the Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.47.1/prometheus-2.47.1.linux-amd64.tar.gzExtract Prometheus files, move them, and create directories:
tar -xvf prometheus-2.47.1.linux-amd64.tar.gz
cd prometheus-2.47.1.linux-amd64/
sudo mkdir -p /data /etc/prometheus
sudo mv prometheus promtool /usr/local/bin/
sudo mv consoles/ console_libraries/ /etc/prometheus/
sudo mv prometheus.yml /etc/prometheus/prometheus.ymlEnsure Prometheus owns its files:
sudo chown -R prometheus:prometheus /etc/prometheus/ /data/ Create a systemd unit configuration file for Prometheus:
vi /etc/systemd/system/prometheus.service[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
User=prometheus
Group=prometheus
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/data \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.listen-address=0.0.0.0:9090 \
--web.enable-lifecycle
[Install]
WantedBy=multi-user.targetReload systemd and restart the service:
sudo systemctl enable prometheus
sudo systemctl start Prometheus
sudo systemctl status PrometheusYou can access Prometheus in a web browser using your server’s IP and port 9090
http://your-server-ip:9090
Install Node Exporter
Create User
sudo useradd --system --no-create-home --shell /bin/false node_exporterCreate a directory
sudo mkdir node-exporterDownload and install the Node-Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gzExtract Prometheus files, move them, and create directories:
tar -xvf node_exporter-1.6.1.linux-amd64.tar.gz
sudo mv node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/Create a systemd unit configuration file for Node-exporter
vi /etc/systemd/system/node_exporter.service[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
User=node_exporter
Group=node_exporter
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/node_exporter --collector.logind
[Install]
WantedBy=multi-user.targetReload systemd and restart the service:
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
sudo systemctl status node_exporterYou can access Node exporter in a web browser using your server’s IP and port 9100
http://your-server-ip:9100
Prometheus Configuration:
vi /etc/prometheus/prometheus.ymlglobal:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']

systemctl restart prometheous To install Grafana, follow this link.
Now open the Grafana dashboard
http://your-grafana-server-ip:3000
Add Prometheus Data Source:
To visualize metrics, you need to add a data source. Follow these steps:
Click on the Add new data source

Now select the Prometheus

Set the name of your server, enter your worker's IP address with the corresponding port, and then click Save and Test.

Now, go back to the dashboard section and add a new dashboard.

For the node exporter ID, navigate to the node exporter website

We are using the ID:- 1860

To import a dashboard, fill in the details such as the server name, select the dashboard folder, enter the UID, and choose Prometheus as the data source type. Click on the import

After clicking on the final import.

Now you can see the data is visible.

Last updated