Monitoring vagrant menggunakan prometheus

Post a Comment

Pada sesi sebelumnya penulis sudah membahas cara menginstall vagrant dan konfigurasi, kali ini penulis akan mencapture proses dari vagrant ke software prometheus. Prometheus merupakan sebuah open-source sistem monitoring dan alerting toolkit awalnya di kembangkan oleh SoundCloud.

Service ini memiliki banyak metric (pengukuran) yang dibutuhkan untuk memantau system dan dapat dikombinasikan dengan Grafana untuk visualisasinya. Sedangkan Grafana merupakan software open source untuk analytics dan monitoring (Graphing) yang mendukung lebih dari 30 data source. Jadi gampangan nya prometheus yang mengambil data dan grafana yang menampilkan dalam bentuk grafik nya.

Beberapa fitur yang ada dalam prometheus :
1. Model data multi-dimensi dengan data seri waktu yang diidentifikasi berdasarkan nama metrik dan key/value pairs
2. PromQL, (bahasa kueri yang fleksibel)
3. Tidak bergantungan pada distribusi penyimpanan
4. Pengumpulan seri waktu yang terjadi melalui model pull HTTP
5. Pushing seri waktu didukung melalui gateway
6. Target (node) di tentukan melalui konfigurasi statis
7. Di dukung dashboard

Beberapa komponen yang ada di prometheus:
1. Terdapat server utama yang nantinya akan menyimpan data seri waktu
2. Gateway-pust yang mendukung short-lived
3. special-purpose exporters for services like HAProxy, StatsD, Graphite, dll.
4. alertmanager untuk menangani pemberitahuan
dll

Prometheus mengambil metrik dari instrumented jobs, baik secara langsung atau melalui push-gateway
hal ini menyimpan sebuah sample yang di ambil secara local dan di jalankan atas aturan data untuk di gabungkan dan merekam data yang ada

Kapan Menggunakanya:
Ini cocok di gunakan untuk monitoring secara terpusat

Instalasi Prometheus pada OpenSuse
Pertama kita buat user dulu untuk service prometheus (server) dan Node_Exporter (client)
useradd --no-create-home --shell /bin/false prometheus
useradd --no-create-home --shell /bin/false node_exporter


Lanjut membuat folder prometheus
mkdir /etc/prometheus
mkdir /var/lib/prometheus


Set user dan group ownership pada folder
groupadd prometheus
groupadd node_exporter
chown prometheus:prometheus /etc/prometheus
chown prometheus:prometheus /var/lib/prometheus


Download Prometheus dan extract filenya
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.17.1/prometheus-2.17.1.linux-amd64.tar.gz
tar xzvf prometheus-2.17.1.linux-amd64.tar.gz


Salin folder prometheus dan promtool
cp prometheus-2.17.1.linux-amd64/prometheus /usr/local/bin
cp prometheus-2.17.1.linux-amd64/promtool /usr/local/bin


Set user dan group ownership pada folder yang telah di salin
chown prometheus:prometheus /usr/local/bin/prometheus
chown prometheus:prometheus /usr/local/bin/promtool


Salin folder consoles dan consoles_libraries
cp -r prometheus-2.17.1.linux-amd64/consoles /etc/prometheus
cp -r prometheus-2.17.1.linux-amd64/console_libraries /etc/prometheus

Set user dan group ownership pada folder yang telah di salin
chown -R prometheus:prometheus /etc/prometheus/consoles
chown -R prometheus:prometheus /etc/prometheus/console_libraries

Konfigurasi pada prometheus
Buat file konfignya
nano /etc/prometheus/prometheus.yml
Isi file tersebut degan target IP address server.
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.100.108:9090']


Set user dan group ownership pada file tersebut
chown prometheus:prometheus /etc/prometheus/prometheus.yml

Selanjut nya buat file untuk service nya

nano /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



Aktifkan service prometheus nya
systemctl daemon-reload
systemctl enable prometheus
systemctl start prometheus
systemctl status prometheus


Langkah selanjut nya Download dan extract node exporter
curl -LO https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
tar xzvf node_exporter-0.18.1.linux-amd64.tar.gz

Salin file node_exporter dan Set user dan group ownership
cp node_exporter-0.18.1.linux-amd64/node_exporter /usr/local/bin
chown node_exporter:node_exporter /usr/local/bin/node_exporter


selanjut nya buat file untuk service nya
nano /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  

aktifkan service node_exporternya
systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter

systemctl status node_exporter

Terakhir konfigurasi prometheus untuk node_exporter nya
Tambahkan parameter job untuk node_exporter pada file prometheus.yml

  - job_name: 'node_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.100.108:9100']  bisa di tambahkan (,) jika node exporter lebih dari 1 ['192.168.100.108:9100, 192.168.121.178:9100']

setelah itu restart paket prometheus nya
systemctl restart prometheus
systemctl status prometheus


Jika teman-teman menggunakan web service nginx, jika tidak bisa akses tambahkan parameter berikut pada file nginx.conf
.....
    location / {
        proxy_pass http://localhost:9090;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        }
.......


konfirmasi apakah ada pesan eror nya atau tidak
sudo nginx -t

lalu restart nginx nya
systemctl restart nginx

Baru di akses http://Server-IP:9090, untuk melihat data matric nya bisa di kasih /metric

Browse http://Server-IP:9090/graph untuk menjalankan query metric dan memvisualisasikannya ke dalam bentuk grafik. Masukkan Expression, lalu klik tombol Execute untuk menjalankan query metric, dan klik tab Graph untuk menampilkan hasil query ke dalam bentuk grafik.


Berikut untuk contoh beberapa queri yang bisa di gunakan:
[total memory]
node_memory_MemTotal_bytes{instance="192.168.100.108:9100",job="node_exporter"}
[memory yang tersisa]
node_memory_MemAvailable_bytes{instance="192.168.100.108:9100",job="node_exporter"} 
[total cpu]
rate(node_cpu_seconds_total{job="node_exporter"}[1m])

jika ada yang mengganjal, gimana untuk setting dari vagrantnya, okee... jadi konsep nya itu si vagrant nya harus bisa terhubung utamanya untuk protocol icmp (ping) dan tcp, jika ada keterangan "no route to host" dan tidak ada firewall yang aktif, maka mohon untuk di tunggu,biasanya masih dalam proses penarikan data.

NB: untuk graph dari grafana bisa di lihat di laman berikut
Refrensi:
prometheus, digitalocean



Related Posts

Post a Comment