Monitoring Server: Difference between revisions

From AbahDoku Wiki
No edit summary
m 59 revisions imported
 
(3 intermediate revisions by the same user not shown)
Line 255: Line 255:
Tambahkan repository ke dalam apt list ubuntu server
Tambahkan repository ke dalam apt list ubuntu server
  echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
  echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Update sebelum proses instalasi
sudo apt-get update
Lanjutkan ke proses install
Lanjutkan ke proses install
  sudo apt-get install grafana
  sudo apt-get install grafana
Line 306: Line 308:
Sebagai contoh disini penulis menggunakan Mikrotik SNMP dari web grafananya langsung. Masuk ke https://grafana.com/grafana/dashboards/15454-mikrotik-snmp/ kemudian copy ID-nya dengan cara meng-klik ID to Clipboard.
Sebagai contoh disini penulis menggunakan Mikrotik SNMP dari web grafananya langsung. Masuk ke https://grafana.com/grafana/dashboards/15454-mikrotik-snmp/ kemudian copy ID-nya dengan cara meng-klik ID to Clipboard.
Kembali ke garafana, masuk ke menu Dashborad kemuidan klik New -> Import kemudian paste ID yg sudah di copy lenjut klik Load.
Kembali ke garafana, masuk ke menu Dashborad kemuidan klik New -> Import kemudian paste ID yg sudah di copy lenjut klik Load.
Namanya di sesuaikan, folder pilih generar dan data source pilih prometheus kemudian klik import.
Namanya di sesuaikan, folder pilih general dan data source pilih prometheus kemudian klik import.
 
Pada contoh kali ini penulis akan membuat Dashboard untuk Memonitor Mesin Server yanbg menggunakan OS Linux Ubuntu Server 20.04 LTS. Adapun kode Dashobard yang akan penulis gunakan adalah 1860, caranya adalah :
Klik Toggle Menu -> Dashboards -> New -> Import ->
ketik kode Dashboard yang akan digunakan yaitu 1860 di kolom Import via grafana.com, kemudian klik Load, makan akan muncul menu berikutnya, isi Nama, Folder dan Prometheus Data Sourge, lalu klik Import, tunggu sampai proses import selesai.
Kemudain lik kembali Toggle Menu -> Dashboards, pilih nama Dashboard yang sudah dibuat.

Latest revision as of 22:47, 19 November 2024

Monitoring Server Ubuntu Server 20.04 LTS yang akan penulis gunakan adalah Grafana dan Prometheus.

Install Prometheus[edit]

Download Prometheus[edit]

Download package prometheus di url https://prometheus.io/download/, caranya copy link url package untuk linux di https://github.com/prometheus/prometheus/releases/download/v2.48.0-rc.0/prometheus-2.48.0-rc.0.linux-amd64.tar.gz. Masuk ke server kemudian paste setelah command wget, atau command lengkatnya adalah berikut ini :

wget https://github.com/prometheus/prometheus/releases/download/v2.48.0-rc.0/prometheus-2.48.0-rc.0.linux-amd64.tar.gz

tunggu proses downloadnya selesai

Menyiapkan Prometheus[edit]

Extract prometheus yang sudah di download dengan command berikut :

tar xvf prometheus-2.48.0-rc.0.linux-amd64.tar.gz

tunggu proses extract sampai selesai, jalan ls -l, maka akan keluhatan folder baru dengan nama prometheus-2.48.0-rc.0.linux-amd64. Masuk ke folder prometheus-2.48.0-rc.0.linux-amd64 :

cd prometheus-2.48.0-rc.0.linux-amd64

jalankan ls -l akan kelihatan 2 file eksekusi, namun tidak akan kita eksekusi langsung, melainkan akan kita eksekusi menggunakan service daemon agar dapat berjalan di background proses. Menyiapkan tempat penyimpanan data prometheus yang akan di buat secara terpisah di dalam /var/lib

sudo mkdir /var/lib/prometheus

Membuat user untuk prometheus[edit]

Langkah pertama jalankan command :

sudo groupadd --system prometheus

masukkan password user jika diminta

Buatkan user baru dengan nama prometheus dan asign ke dalam group promehteus dengan command berikut :

sudo useradd --system -s /sbin/nologin -g prometheus prometheus

Kemudian pindahkan folder promehteus dan promtool ke /usr/local/bin/ dengan command :

sudo mv prometheus promtool /usr/local/bin/

periksa hasilnya menggunakan which, maka akan terlihat kedua file tersebut sudah berpindah folder

which prometheus
which promtool

kita dapat juga melakukan pengecekan version prometheus :

prometheus --version

Membuat folder baru untuk menyimpan file konfigurasi[edit]

Cek menggunakan ls -l, akan terlihat 3 komponen yang akan di pindahkan ke folder baru, yaitu folder console_libraries, folder consoles dan file prometheus.yml. Folder baru tersebut akan di buat di dalam folder /etc :

sudo mkdir /etc/prometheus

Kemudian membuat folder atau otak penyimpanan data prometheus di dalam folder /var/lib/

sudo mkdir /var/lib/prometheus

Diperlukan permission untuk /var/lib/prometheus untuk proses baca/tulis. Cek dulu menggunakan :

ls -l /var/lib/

dapat dilihat ownier prometheus itu masih punya root, untuk itu perlu dibuat chown sesuai user dan group prometheus yang sudah dibuat di atas dengan command berikut :

sudo chown -R user:group /var/lib/prometheus/

jika sesuai user dan group daiata adalah :

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

Cek lagi dengan :

ls -l /var/lib/

akan terlihat kepemilikan prometheus sudah berubah dari user root ke prometheus. Selanjutnya memindahkan folder console_libraries, folder consoles dan file prometheus.yml ke folder /etc/prometheus dengan cara :

sudo mv console_libraries/ consoles/ prometheus.yml /etc/prometheus/

cek lagi di folder asal, maka 3 kompnen di atas sduah tidak terlihat karena sudah berpindah folder.

ls -l

Pindah ke /etc/promehteus

cd /etc/prometheus

Edit file promehteus.yml

sudo nano prometheus.yml

isinya menjadi

global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

Membuat backgroud service prometheus[edit]

Kita buatkan file servicenya :

sudo nano /etc/systemd/system/prometheus.service

sehingga isinya secara sederhana seperti berikut ini :

#Prometheus Service

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
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/comnsole_libraries

[Install]
WantedBy=multi-user.target

Karena ada konfigurasi baru maka prometheus perlu di reload

 sudo systemctl daemon-reload

Kemudaian cek status prometheus

sudo systemctl status prometheus.service

Disini statusnya masih dalam keadaan inactive

● prometheus.service - Prometheus
     Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: https://prometheus.io/docs/introductions/overview/

Agar stausnya active dan servicenya enable maka jalankan command berikut :

sudo systemctl enable --now prometheus.service

hasilnya :

Created symlink /etc/systemd/system/multi-user.target.wants/prometheus.service → /etc/systemd/system/prometheus.service.

Cek sekali lagi :

sudo systemctl status prometheus

hasilmya sudah running :

● prometheus.service - Prometheus
     Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-10-23 08:36:04 UTC; 2s ago
       Docs: https://prometheus.io/docs/introductions/overview/
   Main PID: 5597 (prometheus)
      Tasks: 5 (limit: 2252)
     Memory: 50.9M
     CGroup: /system.slice/prometheus.service
             └─5597 /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/promethe>

Oct 23 08:36:04 pcbuntu systemd[1]: Started Prometheus.

Selanjutnya cek dan validasi sesuai port default di 9090 degan cara :

sudo lsof -n -i | grep prometheus

menghasilkan :

prometheu 2872      prometheus    7u  IPv6  36798      0t0  TCP *:9090 (LISTEN)
prometheu 2872      prometheus   11u  IPv4  37901      0t0  TCP 127.0.0.1:56360->127.0.0.1:9090 (ESTABLISHED)
prometheu 2872      prometheus   12u  IPv6  37902      0t0  TCP 127.0.0.1:9090->127.0.0.1:56360 (ESTABLISHED)

Dapat dilihat port server yang akan dimonitor sudah aktif, selanjutnya coba akses ip_server:9090. Sebelumnya cek dulu ip server menggunakan :

hostname -I

misal hasilnya :

10.10.10.7

Dapat di akses menggunakan browser 10.10.10.7:9090 maka akan terbuka halaman Prometheus namun msh belum dilengkap metric-metric untuk memonitor system server, seperti cpu, memory, hardisk dan sebagainya. Sampai pada tahap ini perispan Prometheus sudah selesai.

Install node_exporter[edit]

Download node-exporter[edit]

Download package node-exporter caranya sama dengan cara prometheus. Maasuk ke url https://prometheus.io/download/#node_exporter kemudian copy link url https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz, paste setelah command wget, atau command lengkapnya adalah berikut ini :

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

tunggu proses downloadnya selesai. Jalankan command untuk menampilkan package yang sudah di download :

ls -l

Menyiapkan node_exporter[edit]

Extract node-exporter yang sudah di download dengan command berikut :

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

tunggu proses extract sampai selesai, jalan ls -l, maka akan keluhatan folder baru dengan nama node_exporter-1.6.1.linux-amd64. Masuk ke folder node_exporter-1.6.1.linux-amd64 :

cd node_exporter-1.6.1.linux-amd64

jalankan ls -l akan kelihatan 1 file package yaitu node_exporter. Seperti halnya prometheus, binari package node_exporter tidak akan kita eksekusi langsung, melainkan akan kita eksekusi menggunakan service daemon agar dapat berjalan di background proses. Langkah pertama adalah memindahkan node_exportr ke folder /usr/local/bin/

sudo mv node_exporter /usr/local/bin/

Dapat dilihat hasil pemindahannya

which node_exporter

hasilnya

/usr/local/bin/node_exporter

Dapat juga dilihat vesinya menggunakan

node_exporter --version

hasilnya

node_exporter, version 1.6.1 (branch: HEAD, revision: 4a1b77600c1873a8233f3ffb55afcedbb63b8d84)
  build user:       root@586879db11e5
  build date:       20230717-12:10:52
  go version:       go1.20.6
  platform:         linux/amd64
  tags:             netgo osusergo static_build

Membuat backgroud service prometheus[edit]

Kita buatkan file servicenya :

sudo nano /etc/systemd/system/node-exporter.service

sehingga isinya secara sederhana seperti berikut ini :

[Unit]
Description=Prometheus exporter for machine metrics

[Service]
Restart=always
User=prometheus
ExecStart=/usr/local/bin/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

Karena ada konfigurasi baru maka node_exporter perlu di reload

 sudo systemctl daemon-reload

Kemudaian cek status node-exporter.service

sudo systemctl status node-exporter.service

Disini statusnya masih dalam keadaan inactive

● node-exporter.service - Prometheus exporter for machine metrics
     Loaded: loaded (/etc/systemd/system/node-exporter.service; disabled; vendor preset: enabled)
     Active: inactive (dead)

Agar stausnya active dan servicenya enable maka jalankan command berikut :

sudo systemctl enable --now node-exporter.service

hasilnya :

Created symlink /etc/systemd/system/multi-user.target.wants/node-exporter.service → /etc/systemd/system/node-exporter.service.

Cek sekali lagi statusnya :

sudo systemctl status node-exporter.service

hasilnya sduah running :

● node-exporter.service - Prometheus exporter for machine metrics
     Loaded: loaded (/etc/systemd/system/node-exporter.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-10-24 01:06:54 UTC; 1min 14s ago
   Main PID: 903200 (node_exporter)
      Tasks: 5 (limit: 38003)
     Memory: 3.0M
     CGroup: /system.slice/node-exporter.service
             └─903200 /usr/local/bin/node_exporter

Oct 24 01:06:55 pcbuntu node_exporter[903200]: ts=2023-10-24T01:06:55.004Z caller=node_exporter.go:117 level=info 
collector=thermal_zone
Oct 24 01:06:55 pcbuntu node_exporter[903200]: ts=2023-10-24T01:06:55.004Z caller=node_exporter.go:117 level=info collector=time
Oct 24 01:06:55 pcbuntu node_exporter[903200]: ts=2023-10-24T01:06:55.004Z caller=node_exporter.go:117 level=info collector=timex
Oct 24 01:06:55 pcbuntu node_exporter[903200]: ts=2023-10-24T01:06:55.004Z caller=node_exporter.go:117 level=info 
collector=udp_queues
Oct 24 01:06:55 pcbuntu node_exporter[903200]: ts=2023-10-24T01:06:55.004Z caller=node_exporter.go:117 level=info collector=uname
Oct 24 01:06:55 pcbuntu node_exporter[903200]: ts=2023-10-24T01:06:55.004Z caller=node_exporter.go:117 level=info collector=vmstat
Oct 24 01:06:55 pcbuntu node_exporter[903200]: ts=2023-10-24T01:06:55.004Z caller=node_exporter.go:117 level=info collector=xfs
Oct 24 01:06:55 pcbuntu node_exporter[903200]: ts=2023-10-24T01:06:55.004Z caller=node_exporter.go:117 level=info collector=zfs
Oct 24 01:06:55 pcbuntu node_exporter[903200]: ts=2023-10-24T01:06:55.005Z caller=tls_config.go:274 level=info msg="Listening on" 
address=[::]:9100
Oct 24 01:06:55 pcbuntu node_exporter[903200]: ts=2023-10-24T01:06:55.005Z caller=tls_config.go:277 level=info msg="TLS is 
disabled." http2=false address=[::]>
lines 1-19/19 (END)

Selanjutnya cek dan validasi sesuai ip dan port default untuk node_exporter di 9100 degan cara :

sudo lsof -n -i | grep node

hasilnya :

node_expo 903200      prometheus    3u  IPv6 984686      0t0  TCP *:9100 (LISTEN)

Sebelumnya cek dulu ip server menggunakan :

hostname -I

misal hasilnya :

10.10.10.7

Dapat di akses menggunakan browser 10.10.10.7:9100/metrics maka akan terbuka halaman metrics dari node_exporter Sampai disini konfigurasi node_exporter sudah selesai, namun belum terintegrasi ke Prometheus.

Integrasi node_exporter ke prometheus[edit]

Tambahkan job baru pada prometheus.yml.

sudo nano /etc/prometheus/prometheus.yml

hasilnya akan seperti ni setelah ditambahkan

global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: "node-exporter"
    static_configs:
      - targets: ["localhost:9100"]

Restart Prometheus :

sudo systemctl restart prometheus

Cek Status Prometheus :

sudo systemctl status prometheus

Jika statusnya sudah running, berarti tidak ada masalah dengan konfigurasi yang dibuat. Jika di akses ip_server:9090/target melalui browser, maka akan terlihat 2 job yang tampil, pertama (default) prometheus dan yg kedua node-exporter dan semuanya statusnya sudah UP.

Install Grafana[edit]

Via broser buka https://grafana.com/docs/grafana/latest/, pilih Installing Grafana | Install on Linux, copy paste command berikut :

sudo apt-get install -y apt-transport-https

kemudian

sudo apt-get install -y software-properties-common wget

Import GPG Key

sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

Tambahkan repository ke dalam apt list ubuntu server

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

Update sebelum proses instalasi

sudo apt-get update

Lanjutkan ke proses install

sudo apt-get install grafana

Ketik Y jika ada pertanyaan untuk melanjutkan Jika proses download sudah selesai, cek status grafana apakah sudah running atau belum.

sudo systemctl status grafana-server.service

hasilnya belum active dan msh disable

● grafana-server.service - Grafana instance
     Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: http://docs.grafana.org

Aktifkan grafana :

sudo systemctl enable --now grafana-server.service

hasilnya :

Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /lib/systemd/system/grafana-server.service.

Cek kembali status grafana :

sudo systemctl status grafana-server.service

hasilnya sudah running dan sudah enable

● grafana-server.service - Grafana instance
     Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-10-24 02:10:12 UTC; 49s ago
       Docs: http://docs.grafana.org
   Main PID: 940926 (grafana)
      Tasks: 19 (limit: 38003)
     Memory: 32.1M
     CGroup: /system.slice/grafana-server.service
             └─940926 /usr/share/grafana/bin/grafana server --config=/etc/grafana/grafana.ini --pidfile=/run/grafana/grafana-server.pid --packaging=deb cfg:defau>

Cek dulu port yang digunakan grafana :

sudo lsof -n -P -i | grep grafana

hasilnya :

grafana   940926         grafana   11u  IPv6 1021149      0t0  TCP *:3000 (LISTEN)

Cek hostname :

hostname -I

hasilnya

10.10.10.7

Akses ip_server:3000 via browser maka akan ditampilkan loginpage grafana, masukkan username dan password default grafana

Konfigurasi Grafana[edit]

Untuk login pertama kali ke Grafana gunakan user dan password default admin/admin. Setelah login akan diminta untuk buat password baru, kita bisa skip untuk mengabaikan jika belum ingin membuat password baru. Hal pertama yang perlu di lakukan adalah melakukan setup grafana dengan masuk Toogle Menu -> Connections -> Data Source -> Add Data Source. Karena kita menggunakan data source dari Prometheus, maka kita pilih Prometheus (klik), isi beberapa confgurasi sesuaikan dengan server yang akan di monitor.

Nama : prometheus (misal)
Prometheus server URL : http://localhost:9090 (ini kebetulan monitoring di mesin yang sama)

Lanjut Save & Test jika tidak ada konfigurasi lain yang perlu di isi. Secara default masih belum ada dashboard apapun di dalam Grafana, namun dapat dibuat dashborad secara custom dengan menambahkan panel baru jika sudah memahami prompt ql atau query dari prompt ql.

Import Grafana Dashboard Template[edit]

Sebagai contoh disini penulis menggunakan Mikrotik SNMP dari web grafananya langsung. Masuk ke https://grafana.com/grafana/dashboards/15454-mikrotik-snmp/ kemudian copy ID-nya dengan cara meng-klik ID to Clipboard. Kembali ke garafana, masuk ke menu Dashborad kemuidan klik New -> Import kemudian paste ID yg sudah di copy lenjut klik Load. Namanya di sesuaikan, folder pilih general dan data source pilih prometheus kemudian klik import.

Pada contoh kali ini penulis akan membuat Dashboard untuk Memonitor Mesin Server yanbg menggunakan OS Linux Ubuntu Server 20.04 LTS. Adapun kode Dashobard yang akan penulis gunakan adalah 1860, caranya adalah : Klik Toggle Menu -> Dashboards -> New -> Import -> ketik kode Dashboard yang akan digunakan yaitu 1860 di kolom Import via grafana.com, kemudian klik Load, makan akan muncul menu berikutnya, isi Nama, Folder dan Prometheus Data Sourge, lalu klik Import, tunggu sampai proses import selesai. Kemudain lik kembali Toggle Menu -> Dashboards, pilih nama Dashboard yang sudah dibuat.