Server yang sehat adalah hasil kebiasaan, bukan keberuntungan: pemeriksaan kecil yang dijalankan rutin akan menangkap masalah saat masih murah — sebelum disk penuh, sebelum backup diam-diam gagal berbulan-bulan, sebelum koneksi bocor pelan-pelan. Chapter penutup section ini merangkum seluruh chapter sebelumnya menjadi tiga daftar periksa bernama: harian, mingguan, dan bulanan, lalu ditutup dengan pola runbook untuk skenario yang berulang. Angka-angkanya nyata dari server latihan kita, dan setiap baris menunjuk chapter tempat topiknya dibahas tuntas.

Peta materi chapter ini:

  • Daftar periksa harian, mingguan, dan bulanan.
  • Skrip pemeriksaan pagi dari mongosh.
  • Pola runbook untuk skenario umum.

Pemeriksaan Harian #

Harian menitikberatkan deteksi dini: semuanya read-only, cepat, dan bisa dijalankan sambil menyesap kopi. Satu blok mongosh sudah menampung empat pemeriksaan pertama sekaligus:

js
const ss = db.serverStatus()
[ db.hello().isWritablePrimary, ss.uptime, ss.connections.current, ss.connections.available ]

Output yang Dihasilkan:

text
[ true, 26016, 5, 404 ]

Empat jawaban itu: primary siap menerima tulisan (true), proses sudah hidup 26.016 detik tanpa restart, ada 5 koneksi terbuka, dan masih tersedia 404 slot. Nilai uptime dan koneksi berubah antar pemeriksaan — yang dibaca adalah trennya dari hari ke hari. Daftar lengkapnya:

#PemeriksaanCara cepatRujukan
1Primary menerima tulisandb.hello().isWritablePrimaryStatus Replica Set
2Tidak ada restart mendadakss.uptime — bandingkan dengan kemarinProses Server Database
3Koneksi wajar, tidak bocorss.connections — tren naik terus?Resource Utilization
4Tidak ada error/fatal barugrep -c '"s":"E"' mongod.logDatabase Logs
5Backup semalam suksesstatus job backup + log verifikasiBackup dan Recovery
6Metrik tidak anomalidasbor serverStatus deret waktuMonitoring Performa

Baris 4 dan 5 biasanya otomatis lewat alerting — daftar harian tetap memastikannya karena alert yang gagal kirim adalah kegagalan yang paling jarang disadari.

Pemeriksaan Mingguan #

Mingguan memberi waktu untuk menelaah tren yang tidak terlihat dalam satu hari:

#PemeriksaanFokusRujukan
7Tren slow queryOperasi baru yang lolos ambang 100 msSlow Query Analysis
8Index tak terpakai$indexStats — index dengan ops: 0Index Usage Analysis
9Jendela oplog cukuprs.printReplicationInfo() vs rencana maintenance terpanjangStatus Replica Set
10Konfigurasi tidak bergesergetCmdLineOpts dibandingkan dengan berkas resmiKonfigurasi Server
11Patch keamanan tersediacek rilis patch major Anda (mis. 9.0.x)Upgrade MongoDB
12Review log warningbaca semua "s":"W" sepekanDatabase Logs

Dua baris pertama sering menemukan akar masalah minggu depan: query yang berubah pelan biasanya mulai dari index yang tidak lagi cocok dengan pola akses terbaru.

Pemeriksaan Bulanan #

Bulanan mendedikasikan waktu untuk pekerjaan yang butuh jendela dan persiapan. Mulai dari angka kapasitas:

js
use latihan_ops
db.dropDatabase()
db.ping.insertOne({ ok: true })

Output yang Dihasilkan:

text
switched to db latihan_ops
{ ok: 1, dropped: 'latihan_ops' }
{
  acknowledged: true,
  insertedId: ObjectId('6ad3d8326bb4dd9c2b1e6a76')
}

Lalu hitung rasio pemakaian disk tempat dbPath berada:

js
const d = db.stats()
[ d.db, d.objects, (100 * d.fsUsedSize / d.fsTotalSize).toFixed(1) ]

Output yang Dihasilkan:

text
[ 'latihan_ops', Long('1'), '25.3' ]

Disk terpakai 25,3% — zona aman. Patokan umum: di bawah 70% aman, 70–85% saatnya merencanakan penambahan kapasitas atau pembersihan (compact, review TTL), di atas 85% tindakan segera karena WiredTiger butuh ruang gerak untuk checkpoint dan journal. Lanjutan daftar bulanan:

#PemeriksaanFokusRujukan
13Kapasitas disk dan tren dataSizeproyeksi kapan menyentuh 70%Storage Management
14validate collection kritisintegritas data dan indexDatabase Maintenance
15Evaluasi compactfile bytes available for reuse yang membesarDatabase Maintenance
16Audit user dan roleakun tidak terpakai, privilege berlebihDatabase Users, Least Privilege
17Uji pemulihan backup nyatarestore ke lingkungan terpisah, ukur waktunyaRestore Testing
18Rencana upgrade driver/serverjadwal dan prasyaratnyaUpgrade MongoDB
19Review ulimit dan cachekonfigurasi masih cocok dengan beban kiniProses Server Database

Menyusun Runbook #

Checklist menjawab “apa yang diperiksa”; runbook menjawab “apa yang dilakukan ketika pemeriksaan itu gagal”. Format yang terbukti praktis: satu skenario per halaman, berisi gejala, langkah diagnosis, perintah, dan kriteria eskalasi. Kerangka lima skenario paling sering:

SkenarioLangkah pertamaRujukan
Disk menyentuh 85%Cek fsUsedSize vs storageSize — pilih compact atau tambah kapasitasStorage Management
Koneksi menipiscurrentOp → temukan pemilik koneksi → perbaiki pool aplikasiMonitoring Server, Connection Pooling
Secondary tertinggalBaca optimeDate tiap anggota → cari hambatan jaringan/diskStatus Replica Set, Replication Lag
Proses mati mendadakBaca log shutdown → nyalakan → pantau recovery journalDatabase Logs, Proses Server Database
Query tiba-tiba lambatcurrentOp + explain → index hilang atau data tumbuh?Slow Query Analysis

Rangkuman #

  • Harian: primary siap, uptime stabil, koneksi wajar, log bersih, backup sukses — semuanya read-only dan cepat.
  • Mingguan: tren slow query, index tak terpakai, jendela oplog, drift konfigurasi, patch keamanan.
  • Bulanan: kapasitas disk (patokan 70/85%), validate, evaluasi compact, audit user, uji restore nyata, rencana upgrade.
  • Runbook melengkapi checklist dengan langkah tindakan per skenario — dan wajib diuji berkala agar tetap bisa dipercaya.