Belajar Jenkins - High Availability (HA), Backup & Disaster Recovery
Episode 18 of 21

Belajar Jenkins - High Availability (HA), Backup & Disaster Recovery

Di episode ini kita membahas strategi backup JENKINS_HOME menggunakan plugin ThinBackup atau snapshot filesystem, lengkap dengan prosedur disaster recovery dari nol memakai JCasC dan data backup. Kita juga mengekspor metrik kesehatan controller ke Prometheus dan memvisualisasikannya di Grafana.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Di episode 17 kita membangun notifikasi yang membuat build selalu "berbicara". Sekarang kita urus hal paling tidak menyenangkan tapi paling krusial: apa yang terjadi kalau controller Jenkins mati? Konfigurasi job, credential, dan history build yang tersimpan di JENKINS_HOME bisa hilang seketika. Tanpa backup, semua itu harus di-configure ulang manual — memakan waktu berjam-jam dan rawan kehilangan konfigurasi penting.

Di episode ini kita membahas tiga hal:

  1. Strategi backup direktori JENKINS_HOME dengan ThinBackup atau snapshot filesystem.
  2. Prosedur disaster recovery (DR) dari nol menggunakan JCasC plus data backup.
  3. Monitoring kesehatan infrastructure Jenkins dengan Prometheus dan Grafana.

Mengapa JENKINS_HOME adalah Harta Karun

Semua data penting Jenkins berada di satu direktori JENKINS_HOME:

  • Job dan pipeline definition.
  • Konfigurasi global (credentials, security, plugin settings).
  • History build dan artifact.
  • Credentials — walau tersimpan terenkripsi dengan kunci khusus Jenkins.

Kehilangan direktori ini sama dengan kehilangan seluruh otomasi tim. Karena itu backup bukan opsional, melainkan wajib.

Strategi Backup dengan ThinBackup Plugin

Plugin ThinBackup mem-backup konfigurasi dan job Jenkins secara berkala ke direktori terpisah. Beberapa fiturnya: backup otomatis terjadwal, rotasi jumlah backup, dan restore langsung dari UI.

Langkah konfigurasi di Manage Jenkins lalu ThinBackup:

  1. Isi Backup directory — sebaiknya di disk terpisah atau mount yang terpasang ke storage eksternal (misal NFS atau cloud volume).
  2. Aktifkan Backup schedule memakai cron Jenkins, contoh H 2 * * * untuk pukul 2 pagi.
  3. Atur Max number of backup copies untuk rotasi agar disk tidak penuh.
  4. Centang opsi backup plugins list agar daftar plugin ikut tersimpan.

Warning

Direktori backup tidak boleh berada di dalam JENKINS_HOME. Kalau disk controller rusak, backup ikut hilang. Letakkan di penyimpanan yang berbeda, idealnya di region berbeda.

Untuk jaminan lebih, kombinasikan dengan snapshot filesystem. Di cloud, snapshot volume dari instance controller, misalnya EBS snapshot atau disk image VM. Di server bare-metal, gunakan LVM snapshot atau rsync berkala.

Disaster Recovery Plan

DR plan adalah prosedur tertulis untuk memulihkan controller dari nol. Karena Jenkins sudah didefinisikan secara deklaratif lewat JCasC (episode 13), pemulihan menjadi sangat cepat. Urutannya:

  1. Siapkan infrastruktur — jalankan image jenkins/jenkins:lts-jdk17 baru dengan JCasC yang sama dari repository konfigurasi.
  2. Instal plugin — ikuti daftar plugin yang di-backup (file plugins.txt) agar versi plugin sama.
  3. Restore data — salin isi backup JENKINS_HOME (jobs, config, credentials) ke direktori controller baru.
  4. Restart — controller membaca konfigurasi dan credential dari data yang direstore.
  5. Verifikasi — cek job tersedia, credential valid, dan agent terhubung.

Perintah singkat untuk restore manual:

Restore JENKINS_HOME dari backup
sudo systemctl stop jenkins
sudo rm -rf /var/lib/jenkins
sudo tar -xzf jenkins-backup-20260803.tar.gz -C /var/lib/jenkins
sudo chown -R jenkins:jenkins /var/lib/jenkins
sudo systemctl start jenkins

Tip

Uji DR secara berkala (misal kuartalan): spin up controller percobaan dari backup terbaru lalu jalankan satu job dummy. Backup yang tidak pernah diuji bukanlah backup — itu sekadar arsip.

Monitoring dengan Prometheus Metrics Plugin

Backup menolong saat bencana, tapi masalah biasanya muncul pelan-pelan: executor kehabisan slot, antrian menumpuk, memory JVM bocor. Plugin Prometheus Metrics mengekspos metrik controller di endpoint /prometheus, yang kemudian di-scrape oleh Prometheus.

Konfigurasi scrape di file prometheus.yml:

prometheus.yml - scrape Jenkins
scrape_configs:
  - job_name: 'jenkins-controller'
    metrics_path: '/prometheus'
    scheme: https
    static_configs:
      - targets:
          - 'jenkins.example.com'
    basic_auth:
      username: 'metrics-user'
      password: 'metrics-password'
    tls_config:
      insecure_skip_verify: true

Note

Matikan opsi anonymous read di bagian security, lalu batasi akses ke endpoint /prometheus untuk user monitoring saja. Ini mencegah metrik yang berisi nama job bocor ke publik.

Metrik Kunci yang Dipantau

MetrikArtiIndikasi Masalah
jenkins_queue_size_valueJumlah item menunggu di antrianExecutor penuh, agent kurang
jenkins_executor_count_valueTotal executor yang terpakaiKapasitas build hampir habis
jenkins_jvm_memory_used_bytesMemory heap JVM terpakaiPotensi OOM atau memory leak
jenkins_builds_runningBuild yang sedang berjalanAktivitas abnormal

Metrik ini divisualisasikan di Grafana menggunakan dashboard community Jenkins. Setelah datasource Prometheus ditambahkan di Grafana, dashboard menampilkan grafik queue size, executor usage, dan JVM memory sekaligus, lengkap dengan alert rule.

Contoh rule alert untuk antrian menumpuk:

Alert rule antrian penuh
groups:
  - name: jenkins.rules
    rules:
      - alert: JenkinsQueueHigh
        expr: jenkins_queue_size_value > 20
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: Antrian build menumpuk di Jenkins

Dengan kombinasi queue size, executor usage, dan JVM memory, kita bisa memutuskan kapan menambah agent atau menaikkan heap JVM — sebelum controller benar-benar tersendat.

Penutup

Di episode ini kita membahas HA, backup, dan DR:

  • JENKINS_HOME menyimpan seluruh aset konfigurasi, job, dan credential sehingga wajib di-backup.
  • ThinBackup menjadwalkan backup otomatis, dan snapshot filesystem menambah lapisan perlindungan.
  • DR dari nol memakai JCasC plus restore data backup, dengan pengujian berkala.
  • Prometheus Metrics plugin mengekspos queue size, executor usage, dan JVM memory yang divisualisasikan di Grafana.

Kontroller yang sehat adalah fondasi pipeline yang andal. Di episode 19 kita masuk mode detektif: troubleshooting dan debugging pipeline — mulai dari analisis log, fitur Replay, Snippet Generator, sampai menangani OOM dan agent yang terputus. Sampai jumpa!