Alertmanager

๐จ Apa Itu Alertmanager?
Alertmanager adalah komponen pendamping Prometheus yang bertugas untuk:
- Menerima alert dari Prometheus
- Mengelola pengelompokan (grouping) dan pengendalian duplikat (deduplication)
- Mengirim notifikasi ke berbagai media seperti:
- Slack / Discord
- Telegram
- ntfy.sh
- Webhook
- dan lainnya
๐ง Prometheus โ Alertmanager โ Notifikasi
๐ Cara Kerja Secara Umum
graph TD
A[Prometheus] -->|Alert| B[Alertmanager]
B --> C1[Email]
B --> C2[Telegram]
B --> C3[ntfy]
B --> C4[Webhook]
- Prometheus punya rule alert (
alert.rules
) - Jika rule terpenuhi, Prometheus mengirim alert ke Alertmanager
- Alertmanager menangani alert:
- Grouping
- Silencing
- Routing
- Alertmanager mengirim notifikasi ke channel sesuai konfigurasi
โ๏ธ Struktur File Konfigurasi alertmanager.yml
global:
]
smtp_smarthost: 'smtp.example.com:587'
smtp_from: '[email protected]'
smtp_auth_username: '[email protected]'
smtp_auth_password: 'secret'
route:
receiver: 'default'
receivers:
- name: 'default'
email_configs:
- to: '[email protected]'
- name: 'telegram'
telegram_configs:
- bot_token: '123456789:ABCDEF...'
chat_id: 123456789
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'instance'
๐ Integrasi dengan Prometheus
prometheus.yml
:
yamlCopyEditalerting:
]
alertmanagers:
- static_configs:
- targets: ['localhost:9093'
Port default Alertmanager: 9093
๐ก Contoh Alert Rule (di Prometheus)
groups:
"
- name: system_alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by (instance)(rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) > 90
for: 1m
labels:
severity: critical
annotations:
summary: "CPU usage high on {{ $labels.instance }} description: "CPU usage is above 90% for 1 minute."
Jika kondisi expr terpenuhi selama 1 menit, Prometheus akan kirim ke Alertmanager.
๐ฌ Channel Notifikasi yang Didukung
Channel | Keterangan |
---|---|
๐ง Email | Built-in, perlu SMTP config |
๐ฌ Telegram | Gunakan bot Telegram dan chat_id |
๐ฑ ntfy.sh | Sangat ringan, cocok untuk self-hosted alert |
๐ฃ Webhook | Kirim ke API endpoint (bisa custom app) |
๐งต Slack | Pakai incoming webhook URL |
๐ฃ Discord | Sama seperti Slack |
๐ Opsgenie / PagerDuty | Untuk environment produksi yang kritis |
๐ง Fitur-fitur Kuat Alertmanager
Fitur | Penjelasan |
---|---|
โ Grouping | Gabungkan alert yang mirip (misal: semua alert dari satu host) |
โ Deduplication | Hindari notifikasi spam jika alert sama dikirim berkali-kali |
โ Silencing | Temporer matikan alert berdasarkan match tertentu (contoh: maintenance) |
โ Routing | Kirim alert berbeda ke channel berbeda (misal: MySQL ke Telegram, CPU ke ntfy) |
โ Templating | Format alert dengan informasi lengkap & dinamis |
๐ ๏ธ Contoh Praktis
Use case di homelab kamu:
Alert | Tujuan | Media |
---|---|---|
CPU > 90% selama 2 menit | Kirim notifikasi | Telegram |
Mikrotik down | Notifikasi cepat | ntfy.sh (karena ringan & push langsung ke HP) |
Disk usage > 90% | Warning |
๐ Jalankan Alertmanager dengan Docker Compose
version: '3'
services:
alertmanager:
image: prom/alertmanager
ports:
- "9093:9093"
volumes:
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
restart: always
๐ Tips & Best Practice
- Simpan
alert.rules.yml
danalertmanager.yml
terpisah, dan version-controlled (Git) - Gunakan label seperti
severity
,env
,job
untuk routing yang fleksibel - Uji alert dengan
amtool alert add
(tool bawaan Alertmanager CLI) - Gunakan ntfy untuk push ke HP jika alert ringan
- Gunakan Telegram untuk critical alert
- Bisa digabung dengan Grafana Alerting juga