Borg tidak hidup sendirian. Episode ini menjelajah ekosistemnya: BorgWeb sebagai GUI untuk mengelola repository, borgmatic sebagai lapisan konfigurasi, borg mount untuk akses FUSE, integrasi dengan monitoring klasik (Nagios/Zabbix) lewat wrapper, dan ekspor metrik ke Prometheus dengan textfile collector.

Borg adalah CLI yang hebat — tetapi dunia operasional jarang berhenti di CLI. Tim butuh GUI untuk operator non-teknis, integrasi dengan monitoring yang sudah ada, dan metrik untuk dashboard. Episode 19 memetakan ekosistem di sekitar Borg: dari BorgWeb yang ramah pengguna, borgmatic sebagai lapisan konfigurasi, hingga jembatan ke Nagios/Zabbix dan Prometheus.
BorgWeb adalah antarmuka web (berbasis Python) untuk mengelola repository Borg. Ia memberi operator visual: melihat daftar archive, menjelajah isi, dan melakukan restore tanpa mengetik perintah.
pip install borgwebBorgWeb berjalan sebagai service HTTP dan dikonfigurasi untuk mengakses repository tertentu (misal repo lokal di host yang sama, atau repo remote yang dibuka lewat mount). Kasus penggunaannya nyata: helpdesk yang perlu mengembalikan satu file tanpa akses shell.
Borgmatic yang kita bangun di episode 9 adalah bagian terpenting ekosistem: ia mengubah kebijakan backup menjadi file YAML yang bisa di-version control, dan mengeksekusi create → prune → compact → check dalam urutan yang benar. Tidak ada alasan menjalankan backup manual ketika borgmatic bisa menjadikannya deklaratif.
borg mount (episode 5) adalah jembatan antara Borg dan tool lain. Archive yang di-mount tampak sebagai direktori biasa — bisa dibrowse NFS, dibackup tool lain, atau dipindai AV. Pola yang sering dipakai di produksi: mount archive terbaru, lalu verifikasi isinya dengan tool standar sebelum restore penuh.
Nagios dan Zabbix tidak berbicara Borg — mereka butuh plugin yang mencetak exit code dan teks. Pola standarnya: wrapper script menjalankan operasi Borg, lalu mencetak output sesuai format plugin.
#!/usr/bin/env bash
set -euo pipefail
export BORG_REPO=/backup/borg
export BORG_PASSCOMMAND='cat /root/.borg-passphrase'
if borg list --last 1 > /dev/null 2>&1; then
echo "OK - backup borg berjalan normal"
exit 0
else
echo "CRITICAL - repository borg bermasalah"
exit 2
fiLetakkan di /usr/lib/nagios/plugins/check_borg dan daftarkan sebagai command. Zabbix memakai pola serupa: user parameter atau external script yang mengembalikan nilai (jumlah archive, ukuran repo, waktu archive terakhir).
borg check terakhir.Prometheus node_exporter punya fitur textfile collector: file teks di direktori tertentu dibaca dan dipublish sebagai metrik. Ini cara termurah untuk mengekspor status borgmatic ke Prometheus.
#!/usr/bin/env bash
set -euo pipefail
OUT=/var/lib/node_exporter/textfile_collector/borg.prom
TMP="$OUT.$$"
if borgmatic --verbosity 0 --stats 2>/dev/null; then
STATUS=1
else
STATUS=0
fi
cat > "$TMP" <<EOF
# HELP borg_backup_success Apakah backup borgmatic terakhir sukses
# TYPE borg_backup_success gauge
borg_backup_success $STATUS
EOF
mv "$TMP" "$OUT"Setelah exporter berjalan, metrik borg_backup_success muncul di endpoint node_exporter dan bisa ditarik Grafana/Alertmanager.
Tip
Pola textfile collector memisahkan dua hal yang sering tertukar: eksekusi (jadwal backup) dan ekspos (metrik). Script di atas bisa dipanggil dari cron setelah backup selesai — jangan ekspor metrik dari dalam loop backup itu sendiri agar tidak saling memblokir.
borg_backup_success hanya berarti jika dievaluasi bersama time() - last_success. Sebuah host yang mati total "sukses" tanpa metrik terbaru.borg mount (FUSE) menjembatani Borg dengan tool lain.Di episode 20 kita membangun kesadaran: monitoring & alerting — memantau metrik borgmatic, memicu alert saat backup gagal atau terlambat, dan mengirim notifikasi Email/Slack/Telegram lewat hooks borgmatic dan layanan seperti Healthchecks.