Untuk monitoring resource server ataupun service, Prometheus salah satu tool yang bisa diandalkan. Cara pengunaannya mudah dan hanya satu binary. Prometheus tidak memiliki fitur mengirim alert, untuk itu kita akan menggunakan Alerting untuk mengirim notifikasi bila terjadi anomali di system yang dimonitor dengan Prometheus.

Target alert/notifikasi bisa email, webhook, Microsoft Teams, Telegram dll. Untuk kali ini kita akan membahas untuk mengirim alert ke Telegram

Contoh alert dikirim ke telegram

Port default Prometheus: 9090
Port default Alertmanager: 9093

Buat Bot Telegram

Chat dengan https://t.me/BotFather, ketik /newbot, lalu ikuti langkah demi langkah, sampai anda mendapatkan pesan berhasil
bot father telegram

Buat group baru, chat dengan bot tersebut atau tambahkan bot tersebut di group yang sudah ada. Saya lebih memilih untuk menggunakan group chat, karena bisa menambahkan tim kedalam group chat tersebut.

didalam group chat tersebut, tambahkan chat, agar bisa kita melihat ID dari group chat tersebut. Lalu buka https://api.telegram.org/bot11111111111:XXXXXXXXXXXXXXXXXXXXXXXXXXXX/getUpdates, ganti 11111111111:XXXXXXXXXXXXXXXXXXXXXXXXXXXX dengan token yang didapat dari BotFather, token tersebut memang memiliki : tanda titik dua.
telegram bot response

Install Prometheus

Disini kita akan menginstall Prometheus di Linux

wget https://github.com/prometheus/prometheus/releases/download/v3.4.1/prometheus-3.4.1.linux-amd64.tar.gz

ekstrak file tersebut, lalu pindahkan ke /opt/prometheus

tar zxvf prometheus-3.4.1.linux-amd64.tar.gz
sudo mv prometheus-3.4.1.linux-amd64 /opt/prometheus

Agar lebih aman, buat user khusus untuk Prometheus

sudo useradd -M -U prometheus

berikan akses ke folder /opt/prometheus ke user prometheus

sudo chown prometheus:prometheus -R /opt/prometheus

untuk melakukan verifikasi dan testing, kita bisa langsung menjalankan prometheus dari terminal

/opt/prometheus/prometheus

Buat file rule /opt/prometheus/alert-rules.yml

groups:
- name: servermetrics
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "Instance {{ $labels.instance }} down"
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."

Tampilan Web UI Prometheus
prometheus alert discovery

Opsional
pada file /opt/prometheus/prometheus.yml, tambahkan dibawah

  - job_name: "windows11"
    static_configs:
      - targets: ["192.168.88.39:9182"]
        labels:
          app: "windows-11-vm"

Systemd Unit untuk Prometheus

Cara yang lebih mudah untuk mengelola service prometheus adalah dengan menggunakan systemd, buat file /etc/systemd/system/prometheus.service yang berisi

[Unit]
Description=Prometheus Server
After=network-online.target
 
[Service]
User=prometheus
Group=prometheus
Restart=on-failure
ExecStart=/opt/prometheus/prometheus \
  --config.file=/opt/prometheus/prometheus.yml \
  --storage.tsdb.path=/opt/prometheus/data \
  --storage.tsdb.retention.time=90d
 
[Install]
WantedBy=multi-user.target

jalankan service systemd

sudo systemctl start prometheus

Bila ada perubahan pada unit file systemd tersebut, jangan lupa untuk reload daemon

sudo systemctl daemon-reload

Beberapa perintah systemctl yang bisa digunakan

# menjalankan service prometheus
sudo systemctl start prometheus
# otomatis mejalankan service prometheus setelah reboot
sudo systemctl enable prometheus
# menghentikan service prometheus
sudo systemctl stop prometheus
# cek status service prometheus
sudo systemctl status prometheus

Cara untuk trouble shooting Prometheus

sudo journalctl -u prometheus -f

Install Alertmanager

Disini kita akan menginstall Alertmanager di Linux

wget https://github.com/prometheus/alertmanager/releases/download/v0.28.1/alertmanager-0.28.1.linux-amd64.tar.gz

ekstrak file tersebut, lalu pindahkan ke /opt/alertmanager

tar zxvf alertmanager-0.28.1.linux-amd64.tar.gz
sudo mv alertmanager-0.28.1.linux-amd64 /opt/alertmanager

Alertmanager ini akan dijalankan oleh user yang sama dengan Prometheus, berikan akses ke folder /opt/alertmanager ke user prometheus

sudo chown prometheus:prometheus -R /opt/alertmanager

edit file /opt/alertmanager/alertmanager.yml tambahkan item baru untuk telegram didalam receivers:
kira-kita menjadi

receivers:
  - name: 'web.hook'
    webhook_configs:
      - url: 'http://127.0.0.1:5001/'
  - name: 'telegram'
    telegram_configs:
    - bot_token: '11111111111111111:XXXXXXX'
      chat_id: -48650000

chat_id memiliki nilai negative (minus) menandakan itu adalah channel, bila personal chat angkanya positif. Khusus untuk chat pribadi/personal, kita harus memulai chat tersebut dahulu ke bot, karena bot tidak bisa langsung PM orang lain.

Systemd Unit untuk Alertmanager

Cara yang lebih mudah untuk mengelola service prometheus adalah dengan menggunakan systemd, buat file /etc/systemd/system/alertmanager.service yang berisi

[Unit]
Description=Alertmanager Prometheus
After=network-online.target
 
[Service]
User=prometheus
Group=prometheus
Restart=on-failure
ExecStart=/opt/alertmanager/alertmanager \
  --config.file=/opt/alertmanager/alertmanager.yml \
  --storage.path="/opt/alertmanager/data"
 
[Install]
WantedBy=multi-user.target

jalankan service systemd

sudo systemctl start alertmanager

Bila ada perubahan pada unit file systemd tersebut, jangan lupa untuk reload daemon

sudo systemctl daemon-reload

Beberapa perintah systemctl yang bisa digunakan

# menjalankan service alertmanager
sudo systemctl start alertmanager
# otomatis mejalankan service alertmanager setelah reboot
sudo systemctl enable alertmanager
# menghentikan service alertmanager
sudo systemctl stop alertmanager
# cek status service alertmanager
sudo systemctl status alertmanager

Cara untuk trouble shooting alertmanager

sudo journalctl -u alertmanager -f

Leave a comment

Your email address will not be published. Required fields are marked *