Back to Blog

Monitoring Linux Server dengan menggunakan Prometheus, Node Exporter dan Grafana

Monitoring
Grafana
Prometheus
Node Exporter
Ubuntu

Grafana Prometheus logo.

Pada artikel ini akan menjelaskan bagaimana installasi aplikasi monitoring open-source Prometheus dengan Node Exporter dan Grafana untuk monitoring Sistem Operasi Linux

Pada lab ini, author menggunakan dua virtual machine dengan sistem opreasi linux Ubuntu Server 22.

  • Virtual machine pertama sebagai tempat installasi Node Exporter
  • Virtual machine kedua sebagai tempat installasi Prometheus dan Grafana

Step-by-Step Guidance

  1. Installasi dan konfigurasi Node Exporter pada Virtual Machine pertama
  2. Installasi dan konfigurasi Prometheus pada Virtual Machine kedua
  3. Installasi, integrasi serta memvisualisasikan data metrik di Grafana pada Virtual Machine kedua
Step 1 — Installasi dan konfigurasi Node Exporter pada Virtual Machine pertama

Node Exporter adalah sebuah aplikasi atau komponen dalam sistem monitoring Prometheus. Tugas utamanya adalah mengumpulkan data metrik atau informasi kinerja dari setiap host (node) yang sedang dimonitoring. Metrik yang dikumpulkan mencakup informasi tentang penggunaan CPU, penggunaan memori, disk I/O, statistik jaringan, dan lain sebagainya. Data metrik ini kemudian dikirim ke Prometheus untuk analisis dan pemantauan secara real-time.

Dengan bantuan Node Exporter, Prometheus dapat memantau dan menganalisis performa sistem secara keseluruhan. Informasi ini membantu dalam mengidentifikasi masalah, mengawasi tingkat pembebanan, dan membuat aturan peringatan (alert) untuk memberitahu jika terjadi situasi kritis pada infrastruktur.

Dengan singkatnya, Node Exporter berfungsi sebagai perantara yang mengumpulkan data kinerja dari berbagai host, dan Prometheus menggunakan data tersebut untuk memantau dan mengelola sistem secara efektif.

Tahap ini dilakukan pada Virtual Machine pertama dengan contoh ip 192.168.1.7 dan vms-01

Update terlebih dahulu Sistem Operasi Ubuntu

apt-get update -y; apt-get upgrade -y

Lalu kita membuat user node_exporter

sudo useradd --no-create-home --shell /bin/false node_exporter

Breakdown

  • Command ini digunakan untuk membuat pengguna baru dengan nama ‘node_exporter’.
  • sudo: Menjalankan perintah dengan hak akses superuser (root) untuk dapat membuat pengguna baru.
  • useradd: Perintah untuk menambahkan pengguna baru.
  • --no-create-home: Opsi ini mengindikasikan bahwa tidak perlu membuat direktori home (home directory) untuk pengguna baru.
  • --shell /bin/false: Opsi ini menentukan shell untuk pengguna ‘node_exporter’. Dalam hal ini, kita menggunakan /bin/false, yang berarti pengguna ‘node_exporter’ tidak dapat melakukan login sama sekali. Pengguna ini juga biasanya digunakan untuk layanan sistem seperti Node Exporter.
  • node_exporter: Nama pengguna yang akan dibuat.

Selanjutnya kita perlu mengunduh service node_exporter pada website officialnya. Kita pilih yang node_exporter-1.6.1.linux-amd64.tar.gz dan Copy Link Address

node_exporter download

Lalu kita download node_exporter-1.6.1.linux-amd64.tar.gz menggunakan command wget pada virtual machine

wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz -P /mnt

Breakdown

  • wget: Ini adalah perintah untuk mengunduh file dari internet menggunakan protokol HTTP, HTTPS, atau FTP.
  • https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz: Ini adalah URL dari file yang akan diunduh. File tersebut adalah arsip tar.gz dari Node Exporter versi 1.6.1 untuk arsitektur AMD64 (biasanya untuk sistem 64-bit).
  • -P /mnt: Opsi -P digunakan untuk menentukan direktori penyimpanan file yang diunduh. Dalam hal ini, /mnt adalah direktori tujuan di mana arsip akan disimpan.

Selanjutnya masuk kedalam direktori /mnt

cd /mnt

Cek kembali apakah file node_exporter-1.6.1.linux-amd64.tar.gz sudah terunduh atau belum. Jika sudah, ekstrak file tersebut dengan perintah berikut

tar -zxvf node_exporter-1.6.1.linux-amd64.tar.gz

Breakdown

  • tar: Ini adalah perintah untuk mengelola arsip file di sistem Linux.
  • zxvf: Opsi-opsi yang digunakan dalam perintah tar:
  • z: Opsi ini menunjukkan bahwa arsip tersebut telah dikompresi dengan gzip.
  • x: Opsi ini digunakan untuk mengekstrak (extract) isi dari arsip.
  • v: Opsi ini menampilkan output secara verbose, sehingga Anda bisa melihat daftar file yang diekstrak.
  • f: Opsi ini menandakan bahwa kita akan mengekstrak file dari arsip berikutnya di baris perintah.

hasil tar pada vms-01

Pada folder node_exporter-1.6.1.linux-amd64 terdapat file node_exporter, file tersebut adalah service yang nanti akan kita jalankan.

Selanjutnya copy file node_exporter kedalam direktori /usr/local/bin

cp /mnt/node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin

Lalu jangan lupa untuk mengganti user dan group menjadi node_exporter

chown node_exporter:node_exporter /usr/local/bin/node_exporter

Hasilnya akan seperti gambar dibawah

hasil change owner

Terakhir, kita membuat agar bisa dipanggil dengan systemctl. Pertama buat file baru bernama node_exporter.service pada direktori /etc/systemd/system

nano /etc/systemd/system/node_exporter.service

Selanjutnya isi dengan line berikut lalu simpan file tersebut

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

Jika sudah tersimpan, jalankan perintah berikut untuk reload service daemonnya

systemctl daemon-reload

Lalu kita start service node_exporter dengan perintah

systemctl start node_exporter

Lalu kita set enable service node_exporter

systemctl enable node_exporter

Selanjutnya apakah service tersebut sudah berjalan atau belum dengan perintah

systemctl status node_exporter

status node_exporter

Kita juga bisa cek apakah service node_exporter bisa diakses atau tidak lewat browser dengan cara akses http://<IP_ADDRESS>:9100

node_exporter dashboard

Kita juga dapat melihat data metriknya dengan klik kalimat Metrics

node_exporter-metrics

Step 2 — Installasi Prometheus pada Virtual Machine kedua

Prometheus adalah sistem monitoring yang mengumpulkan dan menyimpan data metrik dari berbagai sumber, seperti aplikasi dan server. Fungsinya adalah memantau kinerja dan kesehatan sistem secara real-time, menganalisis data, dan memberikan peringatan tentang masalah yang terjadi. Grafana sering digunakan bersama Prometheus untuk visualisasi data metrik dalam bentuk dashboard yang interaktif dan informatif.

Tahap ini dilakukan pada Virtual Machine kedua dengan contoh ip 192.168.1.8 dan hostname vms-02

Update terlebih dahulu sistem operasi Ubuntu

apt-get update -y; apt-get upgrade -y

Lalu kita membuat user prometheus

sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus

Breakdown

  • Command ini digunakan untuk membuat pengguna baru dengan nama ‘prometheus’.
  • sudo: Menjalankan perintah dengan hak akses superuser (root) untuk dapat membuat pengguna baru.
  • useradd: Perintah untuk menambahkan pengguna baru.
  • --no-create-home: Opsi ini mengindikasikan bahwa tidak perlu membuat direktori home (home directory) untuk pengguna baru. Hal ini biasanya digunakan untuk pengguna sistem yang tidak memerlukan login interaktif.
  • --shell /usr/sbin/nologin: Opsi ini menentukan shell (program yang digunakan untuk berinteraksi dengan sistem) untuk pengguna ‘prometheus’. Dalam kasus ini, kita menggunakan /usr sbin/nologin, yang berarti pengguna ‘prometheus’ tidak dapat melakukan login interaktif. Ini berguna untuk pengguna sistem yang hanya digunakan untuk menjalankan layanan tertentu, seperti Prometheus.
  • prometheus: Nama pengguna yang akan dibuat.

Selanjutnya kita perlu mengunduh service prometheus pada website officialnya. Kita pilih yang prometheus-2.46.0.linux-amd64.tar.gz dan Copy Link Address

dowload prometheus

Lalu kita download prometheus-2.46.0.linux-amd64.tar.gz menggunakan command wget pada virtual machine

wget https://github.com/prometheus/prometheus/releases/download/v2.46.0/prometheus-2.46.0.linux-amd64.tar.gz -P /mnt

Breakdown

  • wget: Ini adalah perintah untuk mengunduh file dari internet menggunakan protokol HTTP, HTTPS, atau FTP.
  • https://github.com/prometheus/prometheus/releases/download/v2.46.0/prometheus-2.46.0.linux-amd64.tar.gz: Ini adalah URL dari file yang akan diunduh. File tersebut adalah arsip tar.gz dari Prometheus versi 2.46.0 untuk arsitektur AMD64 (biasanya untuk sistem 64-bit).
  • -P /mnt: Opsi -P digunakan untuk menentukan direktori penyimpanan file yang diunduh. Dalam hal ini, /mnt adalah direktori tujuan di mana arsip akan disimpan.

Selanjutnya masuk kedalam direktori /mnt

Cek kembali apakah file prometheus-2.46.0.linux-amd64.tar.gz sudah terunduh atau belum. Jika sudah, ekstrak file tersebut dengan perintah berikut

tar -zxvf prometheus-2.46.0.linux-amd64.tar.gz

Breakdown

  • tar: Ini adalah perintah untuk mengelola arsip file di sistem Linux.
  • zxvf: Opsi-opsi yang digunakan dalam perintah tar:
  • z: Opsi ini menunjukkan bahwa arsip tersebut telah dikompresi dengan gzip.
  • x: Opsi ini digunakan untuk mengekstrak (extract) isi dari arsip.
  • v: Opsi ini menampilkan output secara verbose, sehingga Anda bisa melihat daftar file yang diekstrak.
  • f: Opsi ini menandakan bahwa kita akan mengekstrak file dari arsip berikutnya di baris perintah.

Pada folder prometheus-2.46.0.linux-amd64 terdapat file prometheus dan promtool, file tersebut adalah service yang nanti akan kita jalankan.

Selanjutnya copy file prometheus dan promtool kedalam direktori /usr/local/bin

cp /mnt/prometheus-2.46.0.linux-amd64/prometheus /usr/local/bin/
cp /mnt/prometheus-2.46.0.linux-amd64/promtool /usr/local/bin/

Lalu jangan lupa untuk mengganti user dan group menjadi prometheus

chown prometheus:prometheus /usr/local/bin/prom*

Hasilnya akan seperti gambar dibawah

hasil change permission pada vms-02

Lalu kita copy folder consoles dan console_libraries dan file prometheus.yml yang ada pada direktori /mnt/prometheus-2.46.0.linux-amd64/ kedalam direktori /etc/prometheus

Kita buat terlebih dahulu direktori /etc/prometheus

mkdir /etc/prometheus

Lalu kita copy foldernya dan filenya

cp /mnt/prometheus-2.46.0.linux-amd64/console* /etc/prometheus/ -Rf
cp /mnt/prometheus-2.46.0.linux-amd64/prometheus.yml /etc/prometheus

Serta kita rubah user dan groupnya menjadi prometheus

chown prometheus.prometheus /etc/prometheus/ -Rf

hasil change permission pada vms-02

Step 2.1 — Konfigurasi Prometheus pada Virtual Machine kedua

Edit file prometheus.yml pada direktori /etc/prometheus. Tambahkan parameter [- job_name] dengan nama “node_exporter” dan tambahkan ‘targets’ ke vms-01 dengan ip address 192.168.1.7 dan port 9100, atau bisa lihat contoh dibawah ini

...

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

### Konfigurasi Baru ####
  - job_name: "node_exporter"
    static_configs:
      - targets: ["192.168.1.7:9100"]

...

Terakhir, kita membuat agar bisa dipanggil dengan systemctl. Pertama buat file baru bernama prometheus.service pada direktori /etc/systemd/system

nano /etc/systemd/system/prometheus.service

Selanjutnya isi dengan line berikut lalu simpan file tersebut

[Unit]
  Description=Prometheus Monitoring
  Wants=network-online.target
  After=network-online.target

[Service]
  User=prometheus
  Group=prometheus
  Type=simple
  ExecStart=/usr/local/bin/prometheus \
  --config.file /etc/prometheus/prometheus.yml \
  --storage.tsdb.path /etc/prometheus/data/ \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries
  ExecReload=/bin/kill -HUP $MAINPID

[Install]
  WantedBy=multi-user.target

Jika sudah tersimpan, jalankan perintah berikut untuk reload service daemonnya

systemctl daemon-reload

Lalu kita start service prometheus dengan perintah

systemctl start prometheus

Lalu kita set enable service prometheus

systemctl enable prometheus

status prometheus

Kita juga bisa cek apakah service prometheus bisa diakses atau tidak lewat browser dengan cara akses http://<IP_ADDRESS>:9090

prometheus dashboard

Pilih Status > Targets untuk melihat state server yang sudah kita konfigurasi pada file prometheus.yml

prometheus state

Bisa dilihat bahwa state server vms-01 sudah up yang berarti sudah terkoneksi dengan baik

Kita juga bisa melihat grafik untuk uji coba dengan cara pilih menu Graph dan pilih tab Graph (sebelah Table)

Lalu ketik perintah berikut untuk melihat memori yang kosong pada server target yang kita akan monitoring yaitu server vms-01 dengan ip address 192.168.1.7

node_memory_MemFree_bytes

Hasil dari query node_memory_MemFree_bytes pada server vms-01

Step 3 — Installasi Grafana pada Virtual Machine kedua

Sebelumnya kita telah berhasil menginstall serta mengkonfigurasi Node Exporter dan Prometheus, sekarang step terakhir untuk integrasi dan memvisualisasikan dengan Grafana

Grafana adalah platform open-source untuk visualisasi dan analisis data. Fungsinya adalah membuat dashboard interaktif yang menampilkan data dari berbagai sumber, seperti database time-series (seperti Prometheus), sistem monitoring, aplikasi, dan banyak lagi. Grafana memungkinkan pengguna untuk membuat grafik, tabel, dan papan informasi (dashboard) yang informatif dan mudah dipahami, membantu dalam memantau kinerja sistem, mendeteksi masalah, dan mengambil keputusan berdasarkan data yang terkumpul.

Bedanya Prometheus dan Grafana apa? Prometheus adalah sistem monitoring yang mengumpulkan dan menyimpan data metrik, sedangkan Grafana adalah platform visualisasi yang digunakan untuk membuat dashboard interaktif untuk mempresentasikan data metrik dengan cara yang mudah dipahami

Tahap ini dilakukan pada Virtual Machine kedua dengan contoh ip 192.168.1.8 dan hostname vms-02

To install required packages and download the Grafana repository signing key, run the following commands:

Pertama kita jalankan perintah berikut untuk menginstall require packages serta menyiapkan repository signing key yang dibutuhkan oleh Grafana

apt-get install -y apt-transport-https
apt-get install -y software-properties-common wget
wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key

Jalankan perintah berikut untuk repositori yang versi ‘stabil’

echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Update kembali untuk membaca repository package yang telah kita siapkan sebelumnya

apt-get update -y

Lalu install Grafana

apt-get install grafana -y

Lalu kita start service grafana dengan perintah

systemctl start grafana-server

Lalu kita set enable service grafana

systemctl enable grafana-server

Selanjutnya apakah service tersebut sudah berjalan atau belum dengan perintah

systemctl status grafana-server

status grafana-server

Lalu kita buka Grafana melalui web browser dengan cara http://<IP_ADDRESS>:3000

grafana login dashboard

Masukan user dan password default Username: admin Password: admin

Setelah memasukan username dan password default nantinya akan ada halaman untuk mengganti password default, untuk step ini boleh dilewati saja

tampilan grafana dashboard

Step 3.1 — Integrasi serta memvisualisasikan data metrik dari Prometheus dengan Grafana pada Virtual Machine kedua

Setelah kita melewati semua step, pada step akhir ini bertujuan untuk integrasi data source Prometheus serta membuat visual grafik dengan Grafana

Pertama kita membuat data source terlebih dahulu dengn cara buka toogle menu pada bagian kiri dashboard, lalu pilih ‘Connections’ > ’Data sources’

menambah data source

Pilih tombol ‘Add data source’

grafana data source dashboard

Lalu pilih Prometheus

menambah data source type

Pada bagian ‘Prometheus server URL’ arahkan ke server yang sebelumnya kita install Prometheus yaitu server vms-02 atau IP Address 192.168.1.8. Isi dengan http://192.168.1.8:9090

select prometheus for grafana

Setelah itu scroll sampai menemukan tombol ‘Save & test’. Jika berhasil akan seperti gambar dibawah ini

penambahan data source prometheus pada grafana berhasil

Lalu kita pilih kembali ‘Connections’ > ’Data sources’ pada menu toggle, nantinya akan ada satu data source bernama Prometheus

checking grafana data source

Buka menu toggle lalu Klik pada ‘Dashboard’

membuat Dashboard pada grafana

Pilih tombol ‘New’ pada sebelah kanan dashboard

membuat Dashboard pada grafana-1

Pilih import pada dropdown tombol ‘New’

membuat Dashboard pada grafana-1

Pada import dasboard isi dibagian ‘Import via grafana.com’

import grafana dashboard

Pada kasus ini kita menggunakan dashboard yang sudah disediakan oleh orang lain, kalian bisa mengeceknya dengan membuka website official dashboard dari grafana

Sebagai contoh, kita akan menggunakan dashboard dari link berikut https://grafana.com/grafana/dashboards/10180-kds-linux-hosts/

Klik ‘Copy ID to clipboard’ atau copy dari ID: 10180

contoh grafana dashboard

Lalu kita paste kedalam kolom ‘Import via grafana.com’ dan ketik tombol ‘Load’

load grafana dashboard

Pada tahap ini yang perlu dilakukan hanyalah pilih bagian Prometheus seperti gambar dibawah, untuk ‘Name’ dan ‘Folder’ bisa disesuaikan. Setelah sudah, klik tombol ‘import’

select prometheus for grafana dashboard

Jika berhasil nantinya akan menampilkan seperti gambar dibawah

grafana dashboard berhasil dibuat

Jika ada status ‘N/A’ biasanya butuh waktu untuk menjadi normal.