Menjadikan backup rsync terukur dan terpantau: menulis log yang informatif, memetakan exit codes, notifikasi email saat gagal, integrasi alerting Zabbix/Prometheus lewat cron wrapper, rsyslog untuk daemon mode, serta kebiasaan review backup logs berkala.

Backup yang berjalan tanpa terpantau adalah ilusi keamanan. Kalian baru tahu backup rusak ketika butuh restore — dan saat itu sudah terlambat. Episode 20 menutup celah ini: bagaimana membuat backup rsync terukur, tercatat, dan ter-alert sehingga kegagalan terdeteksi dalam hitungan menit, bukan bulan. Kita bedah lima lapisan: log, exit codes, notifikasi, integrasi alerting, dan audit berkala — semuanya bisa dibangun dengan alat yang sudah ada di server kalian.
Log yang baik punya tiga sifat: bermarka waktu, menyimpan konteks, dan menyimpan ringkasan. Skrip di episode 10 sudah menulis marka; tingkatkan dengan ringkasan statistik:
#!/bin/bash
LOG=/var/log/rsync.log
{
echo "=== $(date '+%F %T') rsync mulai ==="
rsync -avh --stats --delete /home/data/ /backup/daily/
echo "=== exit=$? selesai $(date '+%F %T') ==="
} >> "$LOG" 2>&1Format satu blok per run (=== mulai === … === selesai ===) memudahkan parsing. Untuk log yang mudah dianalisis, pertimbangkan format satu baris per run — ideal untuk query dan chart, dan kita manfaatkan di bagian Prometheus di bawah:
echo "$(date '+%F %T') rc=$RC sent=$SENT recv=$RECV speedup=$SPEEDUP" >> "$LOG"Sudah dipetakan di episode 10: 0 sukses, 23 partial transfer, 24 file vanished, 255 error koneksi. Kunci penggunaannya di script:
RC=$?
if [ $RC -eq 0 ]; then
STATUS="OK"
elif [ $RC -eq 23 ] || [ $RC -eq 24 ]; then
STATUS="PARTIAL" # ada file gagal/vanish — harus diperiksa
else
STATUS="FAILED"
fiPerlakukan 23/24 sebagai warning yang harus dilihat, bukan sukses: sebagian data mungkin tidak tersinkron. STATUS ini yang akan kalian kirim ke notifikasi dan alerting.
Notifikasi paling sederhana — email saat bukan 0 (pola episode 10):
if [ "$STATUS" != "OK" ]; then
tail -30 "$LOG" | mail -s "Rsync $STATUS (rc=$RC) - $(hostname)" admin@example.com
fiUntuk tim modern, ganti mail dengan webhook — Slack/Telegram/Mattermost cukup dengan curl:
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
-d chat_id="$CHAT_ID" -d text="Rsync $STATUS rc=$RC di $(hostname)"Note
Terlalu banyak notifikasi = notifikasi mati rasa. Alert hanya untuk non-OK — pilih saluran yang benar-benar kalian lihat, karena email yang tidak pernah dibaca sama buruknya dengan tidak ada notifikasi. Run yang sukses cukup dicatat di log.
Bentuk paling fleksibel: cron wrapper yang menjalankan backup, menulis status, dan mengeksposnya ke sistem monitoring. Pola Prometheus textfile collector (via node_exporter):
#!/bin/bash
LOG=/var/log/rsync.log
rsync -avh --delete /home/data/ /backup/daily/ >> "$LOG" 2>&1
RC=$?
printf 'rsync_backup_last_status %s\n' "$RC" > /var/lib/node_exporter/rsync.prom
printf 'rsync_backup_last_run %s\n' "$(date +%s)" >> /var/lib/node_exporter/rsync.promnode_exporter mem-publish file .prom sebagai metrik; Prometheus meng-scrape-nya setiap interval; Alertmanager mengirim alert saat rsync_backup_last_status ≠ 0 selama lebih dari N menit. Diagram alurnya:
cron → skrip rsync → exit code → textfile .prom → node_exporter
→ Prometheus (rule) → Alertmanager → email/Slack/PagerDutyUntuk Zabbix, polanya sama dengan cara yang berbeda: zabbix_sender mengirim status langsung ke server, atau item eksternal membaca log. Yang terpenting adalah prinsipnya, bukan toolnya: exit code backup harus menjadi metrik yang di-scrape.
Saat memakai rsyncd (mode daemon), ia bisa menulis log ke syslog — dikelola oleh rsyslog — bukan hanya ke file sendiri. Konfigurasi /etc/rsyncd.conf:
use syslog = yes
log format = %h %o %f %bSetiap koneksi daemon kini masuk ke syslog dengan format host, operasi, file, dan byte. Di sisi rsyslog, arahkan facility tertentu ke file atau forward ke server log pusat:
daemon.* /var/log/rsyncd.logPengiriman ke log server pusat (misal @logserver:514) membuat audit daemon terpusat — berguna untuk memantau siapa yang menarik dari module, dan untuk investigasi jika ada akses mencurigakan.
Alat terbaik sekalipun tidak berarti tanpa manusia yang meninjaunya. Bangun kebiasaan audit:
grep 'rc=' /var/log/rsync.log | awk '{print $1, $2, $5}'Review berkala (mingguan/bulanan) dengan pertanyaan:
0 yang luput dari alert?PARTIAL berulang (file yang selalu gagal — tanda masalah permanen)?Tip
Jadikan review backup sebagai agenda rutin (mingguan) dan masukkan "restore drill" berkala: coba pulihkan satu file acak dari snapshot seminggu lalu. Backup hanya terbukti bekerja saat restore-nya terbukti berhasil.
Pada episode 20 ini, kalian telah menjadikan backup rsync terukur dan terpantau.
Inti yang harus dibawa pulang:
0 OK, 23/24 partial (waspada), lainnya failed.rsyncd bisa log ke rsyslog; audit review dan restore drill berkala wajib.Di episode 21 selanjutnya, kita lihat ke depan: roadmap & community — fokus keamanan berkelanjutan, maintenance rilis 3.4.x, tidak ada fitur besar yang direncanakan, pengelolaan lewat lists.samba.org, GitHub repo, dan mailing list rsync. Sampai jumpa di episode 21!