Server yang tiba-tiba tidak merespons sering meninggalkan petunjuk sebelum gangguan terlihat oleh pengguna. Layanan mungkin gagal memulai, ...

Server yang tiba-tiba tidak merespons sering meninggalkan petunjuk sebelum gangguan terlihat oleh pengguna. Layanan mungkin gagal memulai, kehabisan dependensi, atau terus melakukan restart. Di Linux yang menggunakan systemd, dua alat yang tersedia luas untuk menelusuri petunjuk tersebut adalah systemctl dan journalctl. Keduanya membantu kita memeriksa keadaan layanan serta membaca catatan lokal tanpa langsung mengubah konfigurasi.
Artikel ini membahas alur diagnosis yang hati-hati, mulai dari status unit hingga penyaringan log berdasarkan waktu dan prioritas. Contoh memakai layanan hipotetis example.service pada lab lokal; ganti namanya dengan unit yang memang ingin diperiksa. Perintah dan keluaran dapat berbeda menurut distribusi, versi systemd, izin pengguna, serta konfigurasi penyimpanan jurnal. Contoh di sini bersifat panduan, bukan bukti bahwa suatu server tertentu telah diperiksa.
Memahami observabilitas dan jurnal systemd
Observabilitas adalah kemampuan memahami keadaan internal sistem melalui informasi yang dapat diamati. Log adalah salah satu sumber informasi itu, tetapi bukan keseluruhan observabilitas. Metrik dapat menunjukkan perubahan penggunaan sumber daya, sementara trace membantu mengikuti permintaan yang melewati beberapa komponen. Jurnal lokal berguna terutama untuk menjawab apa yang dicatat sebuah proses dan kapan catatan itu muncul.
systemd mengelola unit seperti layanan, socket, dan timer. Komponen systemd-journald mengumpulkan berbagai pesan, termasuk pesan yang dikirim layanan, catatan kernel, dan pesan sistem lainnya. journalctl menampilkan dan menyaring catatan tersebut; systemctl berinteraksi dengan manajer systemd untuk melihat atau mengelola unit.
Penting membedakan laporan status saat ini dari riwayat. Status aktif tidak menjamin layanan bekerja benar bagi pengguna, dan pesan kegagalan lama tidak otomatis berarti gangguan masih berlangsung. Gabungkan waktu kejadian, status unit, serta pemeriksaan aplikasi yang relevan sebelum menarik kesimpulan. Untuk sintaks lengkap, rujuk dokumentasi resmi journalctl dan systemctl; halaman versi terbaru mungkin memuat opsi yang belum tersedia di sistem lama.
Menyiapkan pemeriksaan yang aman
Tentukan konteks dan izin
Sebelum membuka jurnal, catat gejala yang dilaporkan, perkiraan waktu kejadian beserta zona waktunya, nama host, dan layanan yang terlibat. Jika waktu di laporan pengguna menggunakan zona lain, konversikan dengan hati-hati. Perbedaan waktu dapat membuat pesan yang relevan tampak tidak berkaitan. Periksa juga apakah Anda sedang masuk ke host dan lingkungan yang benar, terutama ketika nama staging dan produksi mirip.
Akses jurnal bergantung pada distribusi dan kebijakan setempat. Pengguna biasa mungkin hanya melihat sebagian catatan, sedangkan akses ke jurnal sistem sering membutuhkan hak tambahan. Jika hasil kosong, jangan langsung menyimpulkan tidak ada kejadian: periksa pesan kesalahan izin dan kebijakan akses. Gunakan hak istimewa hanya bila memang diperlukan dan diizinkan; jangan mengubah keanggotaan grup atau konfigurasi akses secara spontan.
Mulai dari perintah baca-saja
Alur awal sebaiknya tidak melakukan restart, menghapus jurnal, atau mengubah konfigurasi. Tindakan tersebut dapat menghilangkan konteks atau memperluas dampak gangguan. Perintah berikut hanya meminta informasi status dan daftar unit layanan yang gagal:
systemctl status example.service --no-pager
systemctl --failed --type=service --no-pager
Pada tampilan status, perhatikan nama unit, keadaan Active, waktu perubahan status, proses utama, serta pesan terbaru yang tersedia. Status dapat menampilkan kode keluar proses, tetapi artinya tetap perlu ditafsirkan bersama dokumentasi aplikasi dan pesan yang berdekatan. Daftar unit gagal merupakan titik awal, bukan inventaris semua masalah: layanan yang aktif pun bisa melayani permintaan secara keliru.
Menelusuri log unit dan rentang waktu
Fokus pada layanan yang relevan
Setelah memastikan nama unit, gunakan filter -u untuk mempersempit jurnal ke layanan tersebut. Opsi -b membatasi tampilan pada boot saat ini, sedangkan -n membatasi jumlah baris terbaru. Opsi --no-pager berguna ketika keluaran ingin ditampilkan langsung, meskipun untuk hasil yang sangat panjang pager justru dapat mempermudah navigasi.
journalctl -u example.service -b -n 100 --no-pager
journalctl -u example.service --since "2026-11-13 09:00:00" --until "2026-11-13 10:00:00" --no-pager
Rentang waktu pada contoh adalah ilustrasi lab, bukan waktu insiden nyata. Gunakan waktu yang sesuai dengan kejadian dan perhatikan zona waktu yang dipakai host. Saat menyusun kronologi, cari pesan sebelum dan sesudah kegagalan: peristiwa pemicu sering muncul beberapa baris lebih awal daripada pesan terakhir yang mencolok. Jika batas rentang terlalu sempit, konteks itu dapat terlewat.
Jangan mengasumsikan semua keluaran aplikasi masuk ke jurnal. Sebagian aplikasi menulis berkas log sendiri atau mengirim log ke sistem terpusat. Konfigurasi unit juga memengaruhi arah keluaran. Jika jurnal unit tampak minim, periksa dokumentasi dan konfigurasi layanan secara baca-saja sebelum memutuskan sumber log lain yang relevan.
Bedakan boot saat ini dan sebelumnya
Gangguan yang berakhir dengan reboot memerlukan konteks boot terdahulu. Daftar boot yang tersedia dapat membantu memilih periode yang tepat. Ketersediaannya bergantung pada retensi dan apakah jurnal disimpan secara persisten. Jika boot lama tidak tercantum, jangan menyimpulkan bahwa mesin tidak pernah di-restart; catat keterbatasan bukti tersebut.
journalctl --list-boots --no-pager
journalctl -b -1 -u example.service -n 100 --no-pager
Indeks -1 merujuk boot sebelumnya relatif terhadap daftar yang tersedia. Pastikan waktunya sesuai sebelum mengaitkannya dengan insiden. Membandingkan kejadian lintas boot dapat membantu menemukan pola, misalnya layanan selalu gagal setelah mesin menyala, tetapi pola tersebut masih memerlukan verifikasi terhadap konfigurasi dan dependensi.
Membaca prioritas dan mengikuti kejadian
Gunakan prioritas sebagai petunjuk
Jurnal menyediakan tingkat prioritas pesan. Filter prioritas membantu menyaring banyaknya informasi, tetapi tingkat keparahan yang dicatat aplikasi tidak selalu mencerminkan dampak sebenarnya. Pesan informasional di sekitar kesalahan mungkin justru menjelaskan konfigurasi atau urutan kejadian yang penting. Karena itu, jangan hanya menyimpan hasil filter error dan membuang konteks lainnya.
journalctl -p err -b --no-pager
journalctl -u example.service -f
Perintah pertama menampilkan pesan prioritas error dan yang lebih mendesak untuk boot saat ini. Perintah kedua mengikuti pesan baru dari unit terkait; hentikan tampilan interaktif dengan Ctrl+C. Mengikuti log berguna ketika gejala dapat direproduksi secara aman di lab, tetapi menunggu tanpa kejadian baru tidak membuktikan bahwa layanan sehat. Pastikan aktivitas reproduksi memang diizinkan dan tidak menambah beban yang tidak perlu.
Catat pesan yang berulang, nama proses, waktu, dan konteks sebelum kejadian. Hindari mengambil kesimpulan hanya dari kata seperti failed: satu percobaan koneksi yang gagal mungkin diikuti pemulihan, sedangkan pesan tanpa kata tersebut dapat menjelaskan penyebab utamanya. Cocokkan juga waktu dengan pemantauan aplikasi, jika tersedia.
Memeriksa dependensi dan kapasitas jurnal
Unit yang gagal bisa menjadi gejala dari komponen lain. Sebagai contoh, layanan aplikasi mungkin menunggu jaringan atau unit lain yang belum siap. Hubungan dependensi systemd memberi petunjuk tentang urutan dan keterkaitan unit, tetapi tidak menggantikan pemeriksaan konektivitas maupun kesehatan aplikasi. Lihat definisi yang benar-benar diterapkan dan daftar dependensi tanpa mengeditnya.
systemctl cat example.service
systemctl list-dependencies example.service --no-pager
journalctl --disk-usage
systemctl cat dapat menampilkan unit dan drop-in yang diterapkan; perlakukan keluarannya sebagai informasi sensitif bila konfigurasi memuat nilai rahasia. Daftar dependensi menjelaskan hubungan unit, bukan bukti bahwa setiap layanan dependensi berfungsi sebagaimana mestinya. Periksa unit yang relevan satu per satu dan hindari menyebarkan konfigurasi lengkap tanpa penyuntingan data sensitif.
Perintah penggunaan disk jurnal memberikan gambaran ruang yang dipakai berkas jurnal saat itu. Angka tersebut bukan ukuran kesehatan sistem secara keseluruhan dan tidak dengan sendirinya menunjukkan bahwa log harus dihapus. Kebijakan retensi, ruang disk yang tersedia, kebutuhan audit, dan prosedur organisasi harus dipertimbangkan sebelum perubahan apa pun. Jangan menjalankan pembersihan jurnal sebagai langkah diagnosis otomatis.
Ketika jurnal yang diharapkan tidak ditemukan, pertimbangkan beberapa kemungkinan: pesan belum pernah dikirim ke jurnal, unit yang dipilih keliru, akses dibatasi, atau catatan lama sudah tidak tersedia. Perbedaan antara penyimpanan volatil dan persisten juga dapat memengaruhi riwayat setelah reboot. Jangan mengubah pengaturan penyimpanan hanya untuk membuat contoh ini bekerja; dokumentasikan kondisi yang ditemukan dan minta persetujuan untuk perubahan konfigurasi bila diperlukan.
Dalam laporan, salin hanya beberapa baris yang benar-benar mendukung temuan dan sertakan waktu serta nama unit jika aman untuk dibagikan. Sensor data pribadi dan rahasia tanpa menghilangkan konteks penting. Bila beberapa orang menangani insiden, catatan tersebut membantu membedakan kejadian yang telah diamati dari dugaan yang belum diperiksa, sekaligus mencegah pengulangan tindakan yang berisiko.
Contoh alur lab dan batas kesimpulan
Bayangkan sebuah lab lokal yang menggunakan systemd dan memiliki example.service. Penguji menerima laporan bahwa layanan tidak tersedia sekitar pukul 09.00. Pertama, ia memverifikasi host dan zona waktu, lalu mencatat status unit serta unit gagal. Kedua, ia membaca jurnal unit dalam rentang waktu yang mencakup beberapa menit sebelum dan sesudah laporan. Jika ada reboot, ia memeriksa daftar boot dan memilih periode yang sesuai.
Misalkan jurnal menunjukkan proses berhenti setelah gagal membaca berkas konfigurasi. Itu menjadi hipotesis untuk pemeriksaan berikutnya: apakah berkas ada, dapat dibaca oleh akun layanan, dan sesuai dengan dokumentasi aplikasi. Pesan tersebut belum membuktikan penyebab akar tanpa memeriksa konteks dan perubahan terkait. Di lingkungan nyata, pemeriksaan akses dan perbaikan harus mengikuti otorisasi, prosedur perubahan, serta pertimbangan keamanan data.
Setelah tindakan korektif yang disetujui, validasi perlu melibatkan status layanan, log baru, dan uji fungsi dari sudut pandang pengguna atau klien yang relevan. Simpan kronologi ringkas: gejala, rentang waktu, perintah baca-saja yang digunakan, temuan, hipotesis, dan hasil verifikasi. Tandai mana fakta yang terlihat dalam log dan mana dugaan yang masih perlu diuji.
Batas artikel: skenario ini bersifat ilustratif dan perintahnya belum diuji pada server atau distribusi tertentu untuk artikel ini. Nama unit, izin, format keluaran, retensi, dan opsi yang tersedia dapat berbeda. Tidak ada klaim bahwa layanan contoh pernah berjalan atau bahwa suatu perbaikan telah berhasil. Dengan memulai dari pembacaan yang terarah dan menjaga konteks, administrator dapat membuat diagnosis lebih dapat ditelusuri tanpa terburu-buru mengubah keadaan sistem.
COMMENTS