Installasi Prometheus dan Setup Node Exporter

Siapkan 2 server:

  1. Server Prometheus
  2. Server yang di monitoring

Disini saya menggunakan Ubuntu Server 20.04 LTS, perintah installasi di bawah ini semua menggunakan user root

Alamat IP Server saya:

Server PrometheusServer Target
10.23.2.11110.23.2.110

Prometheus bisa di download di website resminya https://prometheus.io/download/

Prometheus hasil download dari website berbentuk binary dimana bisa dijalankan secara langsung, namun ada beberapa kekurangan jika kita menjalankannya secara langsung:

  1. Prometheus berjalan di depan layar(foreground)
  2. Prometheus tidak otomatis aktif ketika system booting

Oleh karena itu kita akan melakukan installasi Prometheus dan membuat service systemdnya agar bisa berjalan secara otomatis

Download Prometheus dengan menggunakan wget dari server

wget https://github.com/prometheus/prometheus/releases/download/v2.43.0/prometheus-2.43.0.linux-amd64.tar.gz

Setelah itu lakukan ekstrak pada file tersebut

tar -xvf prometheus-2.43.0.linux-amd64.tar.gz

Hasil ekstrak dari file tersebut berupa folder, di dalamnya berisi: aplikasi prometheus (executable), konfigurasi file, command line utility

$ ls prometheus-2.43.0.linux-amd64
console_libraries  consoles  data  LICENSE  NOTICE  prometheus  prometheus.yml  promtool

Selanjutnya kita membuat user khusus untuk service prometheus

useradd -M -s /sbin/nologin prometheus

Salin file executable ke dalam direktori /usr/local/bin

cd prometheus-2.43.0.linux-amd64
cp prometheus /usr/local/bin/
cp promtool /usr/local/bin

Ubah kepemilikan file tersebut tersebut

chown prometheus:prometheus /usr/local/bin/prometheus
chown prometheus:prometheus /usr/local/bin/promtool

Lalu buat folder konfigurasi prometheus dan tempat menyimpan datanya

mkdir /etc/prometheus
mkdir /var/lib/prometheus

Salin file konfigurasi ke folder /etc/prometheus

cp -r console_libraries/ /etc/prometheus/
cp prometheus.yml /etc/prometheus/

Ubah kepemilikan folder tersebut

chown -R prometheus:prometheus /etc/prometheus
chown -R  prometheus:prometheus /var/lib/prometheus

Buat service systemd baru

vim /etc/systemd/system/prometheus.service
.....
[Unit] 
Description=Prometheus 
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 /var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target
.....

Setelah membuat file systemd service kita perlu melakukan daemon-reload

systemctl daemon-reload

Lalu jalankan service prometheus

systemctl start prometheus

Cek status prometheus

$ systemctl status prometheus
● prometheus.service - Prometheus
     Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-04-03 14:54:46 UTC; 56s ago
   Main PID: 19197 (prometheus)
      Tasks: 8 (limit: 4612)
     Memory: 19.2M
     CGroup: /system.slice/prometheus.service
             └─19197 /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/li>

Apr 03 14:54:46 prometheus prometheus[19197]: ts=2023-04-03T14:54:46.213Z caller=head.go:658 level=info component=tsdb >
Apr 03 14:54:46 prometheus prometheus[19197]: ts=2023-04-03T14:54:46.213Z caller=head.go:664 level=info component=tsdb >
Apr 03 14:54:46 prometheus prometheus[19197]: ts=2023-04-03T14:54:46.218Z caller=head.go:735 level=info component=tsdb >
Apr 03 14:54:46 prometheus prometheus[19197]: ts=2023-04-03T14:54:46.218Z caller=head.go:772 level=info component=tsdb >
Apr 03 14:54:46 prometheus prometheus[19197]: ts=2023-04-03T14:54:46.225Z caller=main.go:1026 level=info fs_type=EXT4_S>
Apr 03 14:54:46 prometheus prometheus[19197]: ts=2023-04-03T14:54:46.225Z caller=main.go:1029 level=info msg="TSDB star>
Apr 03 14:54:46 prometheus prometheus[19197]: ts=2023-04-03T14:54:46.225Z caller=main.go:1209 level=info msg="Loading c>
Apr 03 14:54:46 prometheus prometheus[19197]: ts=2023-04-03T14:54:46.240Z caller=main.go:1246 level=info msg="Completed>
Apr 03 14:54:46 prometheus prometheus[19197]: ts=2023-04-03T14:54:46.241Z caller=manager.go:974 level=info component="r>
Apr 03 14:54:46 prometheus prometheus[19197]: ts=2023-04-03T14:54:46.241Z caller=main.go:990 level=info msg="Server is >

Enable service prometheus agar dijalankan ketika booting up

systemctl enable prometheus

Prometheus server berhasil di install, selanjutnya kita akan setup exporter

Untuk exporternya kita gunakan node_exporter yang biasanya digunakan untuk monitoring server

Untuk mendownload exporter ada di halaman yang sama https://prometheus.io/download/

Download di server yang mau di monitoring

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz

Ekstrak file hasil download

tar -xvf node_exporter-1.5.0.linux-amd64.tar.gz

Nanti di folder hasil ekstrak terdapat file binary executable dengan nama node_exporter, salin file binary tersebut ke direktori /usr/local/bin

cp node_exporter-1.5.0.linux-amd64/node_exporter /usr/local/bin/

Buat user untuk service systemd, lalu ubah permission file binary tadi

useradd -M -s /sbin/nologin node_exporter
chown node_exporter:node_exporter /usr/local/bin/node_exporter

Buat file systemd service untuk node_exporter

vim /etc/systemd/system/node_exporter.service
.....
[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
.....

Lakukan daemon-reload dan jalankan service node_exporter

systemctl daemon-reload && systemctl start node_exporter

Cek status node_exporter pastikan sudah running

$ systemctl status node_exporter
● node_exporter.service - Node Exporter
     Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-04-03 15:12:56 UTC; 5s ago
   Main PID: 134291 (node_exporter)
      Tasks: 4 (limit: 4612)
     Memory: 2.8M
     CGroup: /system.slice/node_exporter.service
             └─134291 /usr/local/bin/node_exporter

Apr 03 15:12:56 jenkins node_exporter[134291]: ts=2023-04-03T15:12:56.307Z caller=node_exporter.go:117 level=info colle>
Apr 03 15:12:56 jenkins node_exporter[134291]: ts=2023-04-03T15:12:56.307Z caller=node_exporter.go:117 level=info colle>
Apr 03 15:12:56 jenkins node_exporter[134291]: ts=2023-04-03T15:12:56.307Z caller=node_exporter.go:117 level=info colle>
Apr 03 15:12:56 jenkins node_exporter[134291]: ts=2023-04-03T15:12:56.307Z caller=node_exporter.go:117 level=info colle>
Apr 03 15:12:56 jenkins node_exporter[134291]: ts=2023-04-03T15:12:56.307Z caller=node_exporter.go:117 level=info colle>
Apr 03 15:12:56 jenkins node_exporter[134291]: ts=2023-04-03T15:12:56.307Z caller=node_exporter.go:117 level=info colle>
Apr 03 15:12:56 jenkins node_exporter[134291]: ts=2023-04-03T15:12:56.307Z caller=node_exporter.go:117 level=info colle>
Apr 03 15:12:56 jenkins node_exporter[134291]: ts=2023-04-03T15:12:56.307Z caller=node_exporter.go:117 level=info colle>
Apr 03 15:12:56 jenkins node_exporter[134291]: ts=2023-04-03T15:12:56.317Z caller=tls_config.go:232 level=info msg="Lis>
Apr 03 15:12:56 jenkins node_exporter[134291]: ts=2023-04-03T15:12:56.317Z caller=tls_config.go:235 level=info msg="TLS>

node_exporter berhasil di install, selanjutnya kita konfigurasi prometheus agar bisa mengambil data dari server tersebut

Jalankan perintah dibawah ini di server prometheus!!

Tambahkan job baru untuk monitoring server tersebut, contohnya namanya node-jenkins(bebas) di dalam target isi IP dari server tersebut

vim /etc/prometheus/prometheus.yml
.....
- job_name: "node-jenkins"
  static_configs:
      - targets: ["10.23.2.110:9100"]
.....

Pastikan menambah konfigurasi job_name dibawah konfigurasi scrape_configs, jika ingin mengubah spesifik interval pengambilan data bisa tambahkan parameter scrape_interval dan scrape_timeout, contoh:

- job_name: "node-jenkins"
  scrape_interval: 15s 
  scrape_timeout: 5s 
  static_configs:
    - targets: ["10.23.2.110:9100"]

! 1 Job name bisa memiliki banyak target

Lakukan restart prometheus server

systemctl restart prometheus

Akses prometheus server dari Web-UI

http://ipserverprometheus:9090

Setelah terbuka, pilih menu Status > Targets

Cek apakah jobs yang kita tambahkan tadi sudah ada

Artikel kali ini sampai itu dulu, di artikel selanjutnya kita akan mencoba untuk membuat autentikasi agar koneksi dari server prometheus ke node yang di monitoring lebih aman, stay tune 🙂

Leave a Comment