Ketika sistem rusak, godaan pertama adalah mencoba-coba perbaikan secara acak: me-restart service, menghapus file, menyalakan-matikan koneksi. Diagnosis yang baik menolak godaan itu dan bekerja seperti saringan bertingkat — mulai dari pemeriksaan yang murah dan jangkauannya luas, sempitkan ke area yang terbukti bermasalah, lalu ambil keputusan dari bukti perintah, bukan dari firasat. Chapter ini merangkum proses itu menjadi tabel gejala → kemungkinan → perintah diagnosis untuk lima area yang paling sering rusak: boot, jaringan, disk, service, dan performa. Chapter-chapter troubleshooting detail per topik tetap menjadi rujukan mendalam — tabel-tabel di sini adalah pintu masuknya.
Quick Win — Lima Pemeriksaan Pembuka #
Sebelum menyelam ke tabel per area, ada lima pemeriksaan yang murah, cepat, dan menutupi mayoritas kejadian sehari-hari. Jalankan kelimanya berurutan; sering kali salah satunya langsung menunjuk akar masalah.
uptime— sejak kapan mesin menyala dan seberapa berat beban rata-ratanyadf -h— partisi mana yang penuh, termasuk partisi kecil seperti/bootfree -h— berapa memori yang benar-benar tersisa setelah cacheip addr— apakah tiap interface punya alamat IP yang masuk akalsystemctl --failed— service mana yang statusnya gagal
Jika salah satu pemeriksaan menunjukkan kejanggalan, tabel-tabel berikut mengarahkan langkah berikutnya. Jika kelimanya bersih, masalah biasanya lebih spesifik — dan tabel tetap menjadi titik berangkat yang tepat.
Area Boot dan Startup #
Masalah boot paling menegangkan karena terminal yang biasa dipakai membedah malah ikut tidak bisa dibuka. Kabar baiknya, jurnal systemd merekam seluruh kejadian boot sehingga kita bisa membaca post-mortem dari recovery mode. Format kueri lengkapnya ada di halaman manual journalctl(1) .
| Gejala | Kemungkinan | Perintah diagnosis |
|---|---|---|
| Layar hitam setelah menu GRUB | Driver GPU gagal; X atau Wayland tidak naik | journalctl -b -p err |
| Boot berhenti di pesan error | Filesystem rusak atau modul gagal dimuat | journalctl -b, dmesg |
| Sangat lambat sampai layar login | Service startup terlalu berat | systemd-analyze blame |
| Restart berulang sebelum login | Kernel panic atau initramfs rusak | Recovery mode, lalu journalctl -b -1 |
Booting ke recovery mode dari menu GRUB hampir selalu menjadi langkah pertama yang aman: filesystem di-mount, shell tersedia, dan jurnal boot gagal tinggal dibaca. Pembahasan tuntasnya ada di chapter Boot Failures .
Area Jaringan #
Diagnosis jaringan paling efektif bila berurutan dari lapisan bawah: link dulu, IP kemudian, DNS terakhir. Tabel berikut menyusun kemungkinan mengikuti urutan itu, sehingga kita berhenti di lapisan yang benar.
| Gejala | Kemungkinan | Perintah diagnosis |
|---|---|---|
| Interface tidak punya alamat IP | DHCP gagal, kabel lepas, WiFi mati | ip addr |
| Ada IP tetapi gateway tidak bisa di-ping | Routing bermasalah atau kabel rusak | ip route, ping 192.0.2.1 |
| Ping IP berhasil, nama domain gagal | DNS server salah atau tidak terjangkau | dig example.com, cat /etc/resolv.conf |
| Port layanan tidak bisa diakses dari luar | Layanan mati, bind ke alamat salah, atau firewall memblokir | ss -tlnp, lalu cek aturan firewall |
Aturan praktisnya: jangan menyalahkan aplikasi sebelum ip addr dan ping diperiksa. Banyak laporan “server down” berakhir di kabel yang longgar atau interface yang tidak mendapat IP. Rujukan perintah dan port lengkapnya ada di chapter Referensi Networking
.
Area Disk dan Filesystem #
Disk penuh adalah masalah paling umum di server berumur panjang, dan gejalanya sering menyamar: aplikasi lambat, log berhenti tumbuh, cron gagal diam-diam. Karena itu df -h selalu masuk lima pemeriksaan pembuka.
| Gejala | Kemungkinan | Perintah diagnosis |
|---|---|---|
| Tulis file gagal, pesan “No space left on device” | Partisi penuh, atau inode habis | df -h, df -i |
| Disk penuh tetapi file besar tidak ketemu | File sudah dihapus tetapi proses masih memegang | lsof +L1, restart service pemiliknya |
| Penulisan mendadak muncul error I/O | Media rusak atau kabel longgar | dmesg, smartctl -a /dev/sda |
| Semua operasi tulis gagal read-only | Filesystem di-remount setelah error | `mount |
Kasus kedua pada tabel adalah jebakan favorit: df menunjukkan penuh, du tidak menemukan penyebab, padahal proses yang masih berjalan memegang file yang sudah dihapus. Menemukan proses pemiliknya lalu me-restart-nya melepaskan ruang tersebut.
Area Service #
Service yang gagal punya keunggulan diagnostik dibanding area lain: systemd mencatat statusnya dan journalctl menyimpan jejak lengkapnya. Dua sumber itu biasanya cukup untuk menemukan akar masalah dalam beberapa menit.
| Gejala | Kemungkinan | Perintah diagnosis |
|---|---|---|
systemctl status menunjukkan failed | Konfigurasi salah atau dependensi gagal | journalctl -u nama -e |
| Service jalan tetapi port kosong | Bind ke alamat atau port yang salah, atau firewall | ss -tlnp, curl -v localhost:8080 |
| Service mati lagi beberapa detik setelah start | OOM killer atau crash loop aplikasi | journalctl -u nama, `dmesg |
| Perubahan file unit tidak berpengaruh | Ada file override, atau lupa daemon-reload | systemctl cat nama, systemctl daemon-reload |
Pembahasan mendalam ada di chapter Troubleshooting Services dan Service Failures .
Area Performa #
Masalah performa jarang berbentuk “mati total” — lebih sering “pelan sejak kemarin”. Karena itu kuncinya adalah perbandingan: angka hari ini versus angka normal mesin tersebut, dan tabel berikut memilih metrik yang paling cepat membedakan keduanya.
| Gejala | Kemungkinan | Perintah diagnosis |
|---|---|---|
| Load average tinggi | CPU jenuh atau banyak menunggu I/O | uptime, vmstat 1 (kolom wa) |
| Memori terus menyusut | Aplikasi bocor memori | free -h, `ps aux –sort=-%mem |
| Swap sibuk terus menerus (thrashing) | RAM terlalu kecil untuk beban | free -h, vmstat 1 (kolom si dan so) |
| Satu proses memakan satu core penuh | Aplikasi mengalami busy loop | `ps aux –sort=-%cpu |
Pola yang berulang di seluruh tabel performa: satu perintah menunjukkan gejala umum (uptime, free -h), perintah kedua menunjukkan pelakunya (ps aux --sort=...). Analisis lengkapnya ada di chapter Performance Bottlenecks
.
Skrip Triage Mini #
Proses “gejala → area → langkah pertama” bisa kita latih dalam satu skrip kecil. Skrip berikut menerima satu gejala dan mencetak area plus langkah pertamanya. Pernyataan case menjadikan pemetaannya deterministik: gejala yang sama selalu menghasilkan arahan yang sama, dan cabang * menangkap gejala di luar peta dengan mengarahkannya kembali ke pemeriksaan pembuka.
cat > triage.sh <<'BATEK'
#!/usr/bin/env bash
# triage.sh — terjemahkan gejala menjadi area dan langkah pertama
gejala="$1"
case "$gejala" in
"tidak bisa boot")
area="boot"; langkah="masuk recovery mode dari GRUB, lalu journalctl -b -p err" ;;
"tidak ada jaringan")
area="jaringan"; langkah="cek ip addr, lalu ping gateway untuk memisah link dan DNS" ;;
"disk penuh")
area="disk"; langkah="jalankan df -h dan temukan partisi yang penuh" ;;
"service mati")
area="service"; langkah="jalankan systemctl status nama-service" ;;
"server lambat")
area="performa"; langkah="bandingkan uptime dan free -h dengan kondisi normal" ;;
*)
area="-"; langkah="gejala belum dikenali, mulai dari lima quick win" ;;
esac
printf 'gejala : %s\narea : %s\nlangkah : %s\n' "$gejala" "$area" "$langkah"
BATEK
bash triage.sh "tidak ada jaringan"
echo "----"
bash triage.sh "layar berkedip"Output yang Dihasilkan:
gejala : tidak ada jaringan
area : jaringan
langkah : cek ip addr, lalu ping gateway untuk memisah link dan DNS
----
gejala : layar berkedip
area : -
langkah : gejala belum dikenali, mulai dari lima quick winMari kita bedah baris per barisnya:
- Baris 1–20 (heredoc
cat > triage.sh): menulis skrip triage. Setiap cabangcasememasangkan satu pola gejala dengan dua variabel —areadanlangkah— sehingga menambah gejala baru cukup menyalin satu pola dan mengisi dua nilai. - Baris 21 (
bash triage.sh "tidak ada jaringan"): mencocokkan pola jaringan;printfmencetak gejala, area, dan langkah dalam format rata yang tetap. - Baris 23 (
bash triage.sh "layar berkedip"): gejala tidak cocok dengan satu cabang pun, sehingga cabang*yang aktif dan hasilnya mengarah kembali ke lima pemeriksaan pembuka.
Skrip ini jelas bukan pengganti penilaian manusia — tetapi polanya nyata: mesin yang selalu menampilkan langkah pertama yang sama untuk gejala yang sama membuat tim tidak berdebat soal prosedur saat kepanikan. Kembangkan daftar cabangnya sesuai jenis insiden yang paling sering terjadi di lingkungan Anda.
Tabel-tabel di chapter ini merangkum keputusan diagnosis; chapter berikutnya merangkum perintahnya dalam bentuk paling padat: enam lembar contekan yang dirancang untuk di-screenshot dan ditempel di sebelah keyboard.