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
- Installasi dan konfigurasi Node Exporter pada Virtual Machine pertama
- Installasi dan konfigurasi Prometheus pada Virtual Machine kedua
- 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
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.
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
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
Kita juga bisa cek apakah service node_exporter bisa diakses atau tidak lewat browser dengan cara akses http://<IP_ADDRESS>:9100
Kita juga dapat melihat data metriknya dengan klik kalimat 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
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
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
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
Kita juga bisa cek apakah service prometheus bisa diakses atau tidak lewat browser dengan cara akses http://<IP_ADDRESS>:9090
Pilih Status > Targets untuk melihat state server yang sudah kita konfigurasi pada file prometheus.yml
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
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
Lalu kita buka Grafana melalui web browser dengan cara http://<IP_ADDRESS>:3000
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
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’
Pilih tombol ‘Add data source’
Lalu pilih Prometheus
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
Setelah itu scroll sampai menemukan tombol ‘Save & test’. Jika berhasil akan seperti gambar dibawah ini
Lalu kita pilih kembali ‘Connections’ > ’Data sources’ pada menu toggle, nantinya akan ada satu data source bernama Prometheus
Buka menu toggle lalu Klik pada ‘Dashboard’
Pilih tombol ‘New’ pada sebelah kanan dashboard
Pilih import pada dropdown tombol ‘New’
Pada import dasboard isi dibagian ‘Import via grafana.com’
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
Lalu kita paste kedalam kolom ‘Import via grafana.com’ dan ketik tombol ‘Load’
Pada tahap ini yang perlu dilakukan hanyalah pilih bagian Prometheus seperti gambar dibawah, untuk ‘Name’ dan ‘Folder’ bisa disesuaikan. Setelah sudah, klik tombol ‘import’
Jika berhasil nantinya akan menampilkan seperti gambar dibawah
Jika ada status ‘N/A’ biasanya butuh waktu untuk menjadi normal.