Alertmanager

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:
    • Email
    • 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]

  1. Prometheus punya rule alert (alert.rules)
  2. Jika rule terpenuhi, Prometheus mengirim alert ke Alertmanager
  3. Alertmanager menangani alert:
    • Grouping
    • Silencing
    • Routing
  4. 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

ChannelKeterangan
๐Ÿ“ง EmailBuilt-in, perlu SMTP config
๐Ÿ’ฌ TelegramGunakan bot Telegram dan chat_id
๐Ÿ“ฑ ntfy.shSangat ringan, cocok untuk self-hosted alert
๐Ÿ“ฃ WebhookKirim ke API endpoint (bisa custom app)
๐Ÿงต SlackPakai incoming webhook URL
๐ŸŸฃ DiscordSama seperti Slack
๐Ÿ“ž Opsgenie / PagerDutyUntuk environment produksi yang kritis

๐Ÿง  Fitur-fitur Kuat Alertmanager

FiturPenjelasan
โœ… GroupingGabungkan alert yang mirip (misal: semua alert dari satu host)
โœ… DeduplicationHindari notifikasi spam jika alert sama dikirim berkali-kali
โœ… SilencingTemporer matikan alert berdasarkan match tertentu (contoh: maintenance)
โœ… RoutingKirim alert berbeda ke channel berbeda (misal: MySQL ke Telegram, CPU ke ntfy)
โœ… TemplatingFormat alert dengan informasi lengkap & dinamis

๐Ÿ› ๏ธ Contoh Praktis

Use case di homelab kamu:

AlertTujuanMedia
CPU > 90% selama 2 menitKirim notifikasiTelegram
Mikrotik downNotifikasi cepatntfy.sh (karena ringan & push langsung ke HP)
Disk usage > 90%WarningEmail

๐Ÿš€ 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 dan alertmanager.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