Mengirimkan Notifikasi Alertmanager Telegram
Mengirimkan Notifikasi Alertmanager Telegram

Mengirimkan Notifikasi Alertmanager Ke Chat Telegram

Alertmanager telah menjadi tool standar untuk mengelola alert dari Prometheus. Salah satu kanal notifikasi yang semakin populer adalah Telegram, berkat kemudahan akses dan fitur grup yang efektif.

Artikel ini akan membahas cara mengirimkan notifikasi Alertmanager ke chat Telegram dengan mudah.

Mengapa Telegram untuk Notifikasi Alert?

Telegram menawarkan beberapa keunggulan sebagai kanal notifikasi monitoring:

  • Aksesibilitas tinggi, tersedia di berbagai platform (mobile, desktop, web)
  • Fitur grup yang powerful, Mendukung hingga 200.000 anggota
  • API yang mudah diintegrasikan
  • Notifikasi real-time dengan dukungan multimedia
  • Biaya nol untuk user basic

Install Alertmanager dan Configuration

Silahkan download prometheus alertmanager, lalu extract.

cd /opt

sudo wget https://github.com/prometheus/alertmanager/releases/download/v0.30.0/alertmanager-0.30.0.linux-amd64.tar.gz

sudo tar -zxvf alertmanager-0.30.0.linux-amd64.tar.gz

Masuk ke directory alertmanager, lalu jalankan perintah ls -la pastikan ada file alertmanager

cd alertmanager-0.30.0.linux-amd64

Buat directory alertmanager di /var/lib/

sudo mkdir /var/lib/alertmanager

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

Membuat Bot Telegram dan Group

Login pada aplikasi telegram Desktop, pada kolom pencarian ketikan “BotFather“, lalu klik dan Start.

Chat BotFather
Chat BotFather

Jalankan perintah /newbot, masukan nama bot contoh disini “Alerting Prometheus” dan username bot yang akan dibuat username_bot.

Simpan Token to Access HTTP API, untuk digunakan di configuration alertmanager.

Membuat Bot Father
Membuat Bot Father

Selanjutnya membuat group telegram dengan anggota bot yang sebelumnya kita buat, nama grup yang saya buat “Alerting Prometheus“.

Masukan bot yang sebelumnya dibuat dengan BotFather yaitu “Alerting Prometheus“dan “Getmyid_bot” fungsinya untuk melihat group id.

Membuat Group Telegram
Membuat Group Telegram

Saat menambahkan bot Getmyid_bot secara otomatis running bot Get My ID pada group telegram, informasi yang akan kita dapat Your ID dan Current Chat ID (Group ID). Lalu amankan group id pada notepad, yang akan digunakan pada configuration alertmanager.

Group ID Telegram
Group ID Telegram

Configuration Alertmanager

Backup file default configuration alertmanager dan buka dengan editor.

sudo cp alertmanager.yml alertmanager.yml.bak
sudo nano /opt/alertmanager-0.30.0.linux-amd64/alertmanager.yml

Hapus configuration default alertmanager, ganti dengan script dibawah. Masukan bot_token dari BotFather yang sebelumnya dibuat dan GroupID.

global:
# waktu sebuah alert dari “firing” ditandai sebagai “resolve”
resolve_timeout: 1m

route:
# wajib ada default receiver
receiver: default-telegram

# grouping
group_wait: 3s
group_interval: 20s
repeat_interval: 20s
group_by: [ alertname ]

routes:
– matchers:
# jika ada alert yang mempunyai label ini,
# maka akan mengirikan notifikasi ke receiver
– severity=”critical”
receiver: default-telegram

# konfigurasi reciver telegram bot
receivers:
– name: default-telegram
telegram_configs:
– bot_token: Token_BotFather
chat_id: –GroupID

Configuration Alertmanager
Configuration Alertmanager

Membuat Systemd Service Alertmanager

Buat user, hanya digunakan untuk menjalankan serivce grafana

sudo useradd –no-create-home –shell /bin/false alertmanager

Buat sebuah file service unit alertmanager

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

Masukan script dibawah

[Unit]
Description=Alert Manager
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=alertmanager
Group=alertmanager
ExecStart=/opt/alertmanager-0.30.0.linux-amd64/alertmanager \
–config.file=/opt/alertmanager-0.30.0.linux-amd64/alertmanager.yml \
–storage.path=/var/lib/alertmanager
Restart=always

[Install]
WantedBy=multi-user.target

Ubah user dan group pada directory alertmanager-0.30.0.linux-amd64 menjadi alertmanager

sudo chown -R alertmanager:alertmanager /opt/alertmanager-0.30.0.linux-amd64

Reload Systemd dan Start Alertmanager

Setelah membuat service alertmanager, selanjutnya muat ulang systemd, mengaktifkan dan menjalankan.

sudo systemctl daemon-reload
sudo systemctl enable alertmanager
sudo systemctl start alertmanager

Status Systemd Service Alertmanager
Status Systemd Service Alertmanager

Configuration Prometheus Rule

Buat file rule alertmanager pada directory prometheus.

sudo nano /opt/prometheus-3.8.1.linux-amd64/rule-cpu-50-percent.yml

Masukan script dibawah, artinya ketika cpu menyentuh 50% alertmanager akan mengirimkan notifikasi ke group telegram.

groups:
– name: semua server
rules:
– alert: CPU 50 persen
expr: ((sum by(instance) (irate(node_cpu_seconds_total{mode!=”idle”}[15s])) / sum by (instance)                  ((irate(node_cpu_seconds_total{}[15s])))) * 100) >= 50
for: 30s # kurun waktu untuk sebuah expresi dianggap valid
labels:
# label ini penting untuk mapping notifikasi di Alertmanager
severity: critical
annotations:
# berisi informasi dari sebuah alert
summary: CPU nyentuh 50% selama 30 detik terkahir gan!!!

Rule Alert CPU 50 Percent
Rule Alert CPU 50 Percent

Buka file configuration prometheus, tambahkan rule alerting untuk mengirimkan ke alertmanager. Secara default menggunakan port 9093.

# konfigurasi rule monitoring
rule_files:
– ‘rule-cpu-50-percent.yml’ # berupa file

# jika sebuah rule terpenuhi maka akan mengirimakan alert ke Alertmanager
alerting:
alertmanagers:
– static_configs:
– targets: [‘localhost:9093’]

Configuration Prometheus Rule Alertmanager
Configuration Prometheus Rule Alertmanager

Tambahkan script rule interval di configuration prometheus dan berjalan setiap 3 detik.

evaluation_interval: 3s # waktu interval evaluasi dari setiap rule monitoring

Script Interval Check Rule
Script Interval Check Rule

Jalankan ulang service prometheus

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl status prometheus

Akses dashboard Alertmanager pada browser http://IP_Public:9093, pastikan muncul.

Dashboard Alertmanager
Dashboard Alertmanager

Cek Rule yang sebelumnya kita buat rule-cpu-50-percent.yml, pastikan terbaca pada Prometheus menu Alerts. Secara default status INACTIVE.

Melihat Rule Alerts pada Prometheus
Melihat Rule Alerts pada Prometheus

Sebuah rule statusnya akan menjadi PENDING jika sesuai dengan kondisi yang ditentukan. Sedangkan sebuah rule status akan menjadi FIRING jika selama Waktu yang ditentukan di for element terpenuhi.

Status PENDING Alert Prometheus
Status PENDING Alert Prometheus
Status FIRING Alert Prometheus
Status FIRING Alert Prometheus

Pengujian Alertmanager dengan Stress Test CPU

Install terlebih dahulu tools stree test dengan perintah sudo apt install stress-ng, tunggu sampai proses selesai. Ada 2 perintah yang bisa digunakan yaitu single core dan multi sesuaikan dengan jumlah processor yang digunakan, untuk timeout bisa disesuaikan dengan configuration alertmanager resolve_timeout: 1m.

Multi Core dengan Durasi Stress CPU 1 Menit

stress-ng –cpu-load 55 –timeout 60

Custom Core dengan Durasi Stress CPU 1 Menit

stress-ng –cpu-load 55 –timeout 60 –cpu 0

Run Stress CPU Single Core
Run Stress CPU Single Core

Saat menjalankan tools stress-ng, CPU langsung spike 50% seperti contoh gambar dibawah.

CPU Spike 50 Percent
CPU Spike 50 Percent

Alert Telegram Dashboard Alertmanager

Alert Telegram Dashboard Alertmanager

Tips Rule Alert

Saat kita membuat rule monitoring di Prometheus, kita menggunakan >= (Lebih besar sama dengan), untuk menetukan nilai yang kita inginkan. Sebenarnya secara tidak langsung kita sudah menggunakan Comparison Binary Operator.

Comprasion Binary Operator
Comprasion Binary Operator

Alertmanager mengirimkan notifikasi ke group telegram “Alerting Prometheus

Notification Alertmanager di Telegram
Notification Alertmanager di Telegram

Mengintegrasikan Alertmanager dengan Telegram memberikan fleksibilitas dan aksesibilitas yang tinggi untuk tim operations.

Dengan konfigurasi yang tepat dan template yang informatif, notifikasi monitoring dapat menjadi lebih efektif dan mengurangi waktu respons terhadap insiden.

Setup ini tidak hanya meningkatkan visibilitas terhadap sistem, tetapi juga memungkinkan kolaborasi tim yang lebih baik melalui fitur grup Telegram.

Mulailah dengan konfigurasi dasar, lalu kembangkan sesuai kebutuhan spesifik lingkungan.