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
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
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.
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."
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