File log membantu kita memahami apa yang terjadi saat aplikasi error, tetapi log yang terus tumbuh bisa memenuhi disk dan menyebabkan layanan lain ikut gagal. Linux menyediakan logrotate untuk merotasi, membatasi retensi, dan mengompresi log berbentuk file. Tutorial ini membuat simulasi yang aman di direktori sementara, tanpa menyentuh log produksi.
Hasil yang akan dicapai: pembaca dapat memeriksa apakah logrotate terpasang, memahami directive penting, menguji konfigurasi tanpa perubahan, memaksa rotasi hanya pada file lab, serta memastikan log aktif tetap dapat ditulis.

Apa itu logrotate, dan apa yang bukan tugasnya?
logrotate mengelola file log: mengganti nama atau menyalin isi log, menyimpan sejumlah arsip, dan menghapus arsip sesuai kebijakan retensi. Ia tidak membaca dan mengolah semua log Linux secara otomatis. Log yang hanya tersimpan pada systemd-journald dikelola dengan kebijakan journal sendiri; layanan container juga dapat memiliki mekanisme logging berbeda.
Lingkungan dan prasyarat
- Contoh untuk Ubuntu/Debian dengan shell Bash dan utilitas
logrotate,gzip,mkdir,printf, danls. - Akun biasa cukup untuk simulasi pada direktori milik sendiri. Hak administrator hanya diperlukan saat mengatur file log layanan atau paket sistem.
- File uji diletakkan di direktori sementara baru; jangan mengganti path dengan log produksi sampai konfigurasi divalidasi.
cat /etc/os-release
command -v logrotate
logrotate --version
# Jika logrotate belum tersedia pada Ubuntu/Debian:
# sudo apt update && sudo apt install logrotate
Kenapa dicek dahulu? Tidak semua image container atau instalasi minimal memasang logrotate. Pada sistem lain, nama paket dan mekanisme jadwal bisa berbeda.
Langkah 1 — Membuat log aplikasi tiruan
Buat folder lab yang unik menggunakan mktemp -d. Simpan path dalam variabel LAB. Semua percobaan berikut dijalankan dalam shell yang sama supaya variabel tetap ada.
LAB="$(mktemp -d)"
mkdir -p "$LAB/logs"
printf 'first event\n' > "$LAB/logs/app.log"
printf 'Lab: %s\n' "$LAB"
ls -l "$LAB/logs"
Path yang dicetak biasanya berada di bawah /tmp. Ini data percobaan yang aman dibuang setelah diverifikasi, bukan lokasi yang direkomendasikan untuk log produksi.
Langkah 2 — Menulis kebijakan rotasi
cat > "$LAB/logrotate.conf" <<EOF
$LAB/logs/app.log {
size 1k
rotate 3
missingok
notifempty
compress
copytruncate
}
EOF
cat "$LAB/logrotate.conf"
size 1k meminta rotasi bila ukuran mencapai ambang sekitar 1 KiB pada saat logrotate dijalankan. rotate 3 menyimpan hingga tiga arsip, missingok tidak menganggap log yang belum ada sebagai error, notifempty melewati file kosong, dan compress mengompresi arsip lama. copytruncate menyalin lalu memotong log asli agar proses yang masih membuka file tersebut dapat terus menulisnya; ada risiko kehilangan sebagian data pada jeda copy dan truncate. Untuk layanan yang mendukung reopen log, metode rename/create ditambah signal atau postrotate biasanya lebih disukai.
Langkah 3 — Uji konfigurasi tanpa perubahan
logrotate -d -s "$LAB/state" "$LAB/logrotate.conf"
Opsi -d adalah mode debug: ia memeriksa kebijakan dan melaporkan tindakan yang akan dilakukan, tetapi tidak mengubah file log maupun state. Jika log kecil belum mencapai ukuran minimum, pesan does not need rotating adalah hasil yang normal. Jangan menganggap ini kegagalan.
Langkah 4 — Rotasi paksa hanya untuk folder lab
logrotate -f -s "$LAB/state" "$LAB/logrotate.conf"
ls -lah "$LAB/logs"
printf 'new event\n' >> "$LAB/logs/app.log"
cat "$LAB/logs/app.log"
gzip -cd "$LAB/logs/app.log.1.gz"
Opsi -f mengabaikan kebutuhan rotasi normal; di sini aman karena targetnya file lab. Setelah selesai, pembaca seharusnya melihat app.log aktif dan arsip app.log.1.gz. Isi arsip memperlihatkan first event, sedangkan file aktif menerima new event. Jika hasil berbeda, periksa nama file, izin, versi logrotate, dan error output terminal. Jangan menjalankan -f sembarangan pada semua konfigurasi server.
Hasil pengujian yang benar-benar dilakukan
Lab terbatas, 9 November 2026: instruksi inti diuji pada Debian GNU/Linux 13, logrotate 3.22.0, dengan file sementara. Dry-run menyatakan file 1 KiB yang belum memenuhi ukuran tidak perlu dirotasi. Setelah -f, proses menghasilkan arsip app.log.1.gz dan file aktif tetap dapat menerima baris baru. Ini hasil uji satu lingkungan, bukan bukti seluruh versi Linux dan mekanisme cron/systemd sudah diuji.
Cara menjadwalkan rotasi pada server sungguhan
Pada Ubuntu/Debian, konfigurasi umum berada di /etc/logrotate.conf dan /etc/logrotate.d/. Pemeriksaan dapat dilakukan secara read-only:
ls -l /etc/logrotate.conf /etc/logrotate.d/
systemctl list-timers --all | grep -i logrotate || true
systemctl status logrotate.timer --no-pager
Beberapa mesin memakai timer systemd, yang lain cron. size tidak berarti pemeriksaan berlangsung setiap kali file bertambah; logrotate baru bertindak saat prosesnya dijalankan oleh scheduler. Sebelum menaruh aturan pada /etc/logrotate.d, evaluasi kebijakan bawaan paket terkait agar tidak ada dua konfigurasi yang mengelola log sama.
Troubleshooting umum
- command not found: periksa paket atau PATH dan gunakan repositori resmi distribusi.
- Arsip tidak muncul: belum melewati ambang ukuran, file kosong, scheduler belum berjalan, atau file tidak ditemukan.
- Permission denied: pastikan user yang menjalankan logrotate berhak membaca dan menulis direktori log; jangan menyelesaikan semua masalah dengan chmod 777.
- Proses aplikasi berhenti mencatat: aplikasi mungkin masih menulis ke inode lama setelah rename. Gunakan fitur reopen log aplikasi atau kebijakan
postrotateyang diuji untuk aplikasi tersebut. - Log hilang saat copytruncate: dokumentasikan keterbatasan dan pertimbangkan metode rotasi yang tidak memerlukan copytruncate.
Pembersihan lab dan batas keamanan
Setelah memeriksa path LAB, hapus direktori sementara hanya jika benar-benar dirancang untuk eksperimen ini. Perintah di bawah sengaja meminta konfirmasi manual melalui pemeriksaan path sebelum penghapusan; tidak perlu dilakukan pada sistem produksi.
printf 'Periksa folder lab ini dahulu: %s\n' "$LAB"
# Setelah yakin path benar, hapus secara manual:
# rm -r -- "$LAB"
Kesimpulan
Rotasi log yang aman dimulai dengan mengetahui siapa yang menulis file, kapan logrotate berjalan, berapa lama arsip disimpan, dan bagaimana membuktikan aplikasi masih menulis ke log aktif. Uji debug dan simulasi file kecil jauh lebih aman daripada langsung menjalankan rotasi paksa pada log server utama.
Rujukan resmi dan bacaan lanjutan
- Manual logrotate(8): opsi, state file, rotasi, dan copytruncate.
- Strategi backup otomatis Linux menggunakan Rclone dan cron.
- Perintah Linux esensial untuk memeriksa storage dan proses.
Status editorial: Lab Tested — contoh inti dijalankan pada Debian 13/logrotate 3.22.0; jadwal produksi, sistem operasi lain, dan aplikasi pihak ketiga belum diuji dalam artikel ini.
Catatan editorial: Diagram bersifat konseptual kecuali diberi label sebagai hasil uji. Verifikasi konfigurasi di perangkat lu sendiri sebelum dipakai pada sistem produksi.




Tinggalkan Balasan