← Semua artikel
Tutorial Linux09 Nov 2026ariel6 menit baca

Logrotate Linux: Rotasi Log dan Uji Konfigurasi

Panduan logrotate Linux dari instalasi, konfigurasi dan dry-run hingga rotasi, verifikasi file, risiko copytruncate, dan troubleshooting.
Deretan rack server sebagai ilustrasi pengelolaan log layanan Linux

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.

Rack server untuk ilustrasi pengelolaan file log di Linux
Foto ilustrasi infrastruktur oleh Kevin Ache / Unsplash; bukan dokumentasi pengujian.

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.

ILUSTRASI KONSEPTUAL / ALUR PROSES
Aplikasi menulis app.loglogrotate memeriksa size/jadwalArsip .1.gz dan log aktif
Diagram penjelas, bukan screenshot pengujian nyata.

Lingkungan dan prasyarat

  • Contoh untuk Ubuntu/Debian dengan shell Bash dan utilitas logrotate, gzip, mkdir, printf, dan ls.
  • 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 postrotate yang 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

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.

END OF NOTE.Jelajahi artikel lain ↗

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *