Backup yang berjalan diam-diam adalah berita buruk bila gagal diam-diam. Episode ini mengajarkan monitoring borgmatic: memantau metrik dan log, membuat alert saat backup gagal atau terlambat, serta mengirim notifikasi ke Email/Slack/Telegram melalui hooks borgmatic dan integrasi seperti Healthchecks, ntfy, dan Prometheus.

Di episode 19 kita mengekspor metrik. Tapi metrik tanpa alert hanyalah grafik yang cantik — saat backup gagal di tengah malam, kalian ingin tahu, bukan sekadar melihat angka besok pagi. Episode 20 menutup lingkaran: memonitor borgmatic secara aktif, memicu alert pada dua kondisi paling penting (gagal dan terlambat), dan mengirimkannya ke kanal yang kalian benar-benar baca.
Dua sinyal paling berharga dari backup:
Keduanya bisa diambil dari log borgmatic (--verbosity 1) atau dari metrik yang kita ekspor di episode 19. Untuk Prometheus, tambahkan metrik timestamp:
# HELP borg_backup_last_success_seconds Waktu backup sukses terakhir (unix)
# TYPE borg_backup_last_success_seconds gauge
borg_backup_last_success_seconds 1785300000Alert "backup terlambat" hanyalah aturan: time() - borg_backup_last_success_seconds > 36h.
Cara paling langsung: hook on_error borgmatic dijalankan persis saat backup gagal.
hooks:
before_backup:
- echo "Backup dimulai $(date)"
after_backup:
- echo "Backup selesai $(date)"
on_error:
- curl -fsS -X POST "https://ntfy.sh/backup-alerts" \
-d "Backup GAGAL di $(hostname)"ntfy adalah push notification gratis berbasis pub/sub — tanpa akun untuk penggunaan sederhana. Ganti dengan mail, curl ke Slack webhook, atau apa pun yang dimengerti tim kalian.
Email cukup satu baris hook: echo "Backup gagal di $(hostname)" | mail -s "[BACKUP] Gagal" backup@example.com. Slack lewat webhook Incoming:
hooks:
on_error:
- curl -fsS -X POST -H 'Content-type: application/json' \
--data '{"text":"Backup gagal di '"$(hostname)"'"}' \
https://hooks.slack.com/services/T000/B000/XXXXTelegram — bot API:
hooks:
on_error:
- curl -fsS "https://api.telegram.org/bot<TOKEN>/sendMessage" \
-d chat_id=<CHAT_ID> -d "text=Backup gagal di $(hostname)"Warning
Jangan hardcode token Slack/Telegram di config.yaml yang masuk git. Ambil dari environment (${TELEGRAM_TOKEN} didukung borgmatic) atau dari file yang dibaca hook. Kredensial yang bocor di repo = alarm yang bisa dimanipulasi penyerang.
on_error hanya memicu saat proses gagal. Kalau host mati total, cron tidak jalan, atau jaringan putus — tidak ada yang men-trigger on_error, dan tidak ada yang tahu. Backup yang terlambat butuh mekanisme pengawas eksternal.
Layanan seperti Healthchecks.io memecahkan masalah ini: borgmatic mengirim ping setiap backup selesai; jika ping tidak tiba dalam jadwal (misal 36 jam), Healthchecks mengirim alert. Ini deteksi "tidak ada yang terjadi" — bukan hanya "terjadi kesalahan".
monitoring:
healthchecks:
ping_url: https://hc-ping.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxDengan baris ini saja, borgmatic otomatis ping sukses setelah backup selesai dan ping gagal saat error. Alert keterlambatan dikonfigurasi di dashboard Healthchecks (misal "alert jika tidak ada ping dalam 36 jam").
Borgmatic juga punya integrasi siap pakai lain: cronitor, pagerduty, pushover, ntfy, dan apprise.
Untuk menghindari layanan pihak ketiga, implementasi sendiri sederhana:
borg_backup_last_success_seconds.+--------------------+--------------------+----------------------+
| Kondisi | Sinyal | Kanal |
+--------------------+--------------------+----------------------+
| Backup gagal | on_error hook | Slack/Telegram/Email |
| Backup terlambat | Healthchecks miss | Slack/Telegram/Email |
| Check gagal | borg check exit | Slack/Telegram/Email |
| Disk penuh | node_exporter | Prometheus alert |
| Login SSH mencurigakan | auth.log | SIEM/fail2ban |
+--------------------+--------------------+----------------------+Prinsip kuncinya: alert harus bisa ditindaklanjuti. Terlalu banyak alert = noise yang diabaikan; terlalu sedikit = blind spot. Mulai dari dua alert inti (gagal + terlambat), lalu perluas berdasarkan insiden nyata.
on_error hook memicu alert saat backup gagal.Di episode 21 kita menengok ke depan: roadmap & community — apa yang sedang dikerjakan proyek (Borg 2.0 stabil yang dinanti, fokus keamanan & performa), dan di mana kalian bisa berkontribusi dan bertanya: GitHub, dokumentasi, IRC/Matrix, dan Bountysource.