Salah satu direktori yang paling menarik (dan mungkin salah satu yang paling penting juga) dalam sistem Linux adalah /var/log
. Menurut Standar Hirarki Sistem File, aktivitas sebagian besar layanan yang berjalan di sistem ditulis ke file di dalam direktori ini atau salah satu subdirektorinya.
File seperti itu dikenal sebagai log dan merupakan kunci untuk memeriksa bagaimana sistem beroperasi (dan bagaimana perilakunya di masa lalu). Log juga merupakan sumber informasi pertama yang dicari oleh administrator dan teknisi saat memecahkan masalah.
Jika kita melihat isinya /var/log
pada suatu CentOS/RHEL/Fedora dan Debian/Ubuntu (untuk variasi) kita akan melihat file log dan subdirektori berikut.
Harap dicatat bahwa hasilnya mungkin agak berbeda dalam kasus Anda tergantung pada layanan yang berjalan di sistem Anda dan waktu mereka berjalan.
# ls /var/log.
# ls /var/log.
Dalam kedua kasus, kita dapat mengamati bahwa beberapa nama log berakhir seperti yang diharapkan di
"catatan", sementara yang lain diganti namanya menggunakan tanggal (misalnya, maillog-20160822 pada CentOS) atau dikompresi (pertimbangkan auth.log.2.gz dan mysql.log.1.gz pada Debian).Ini bukan perilaku default berdasarkan distribusi yang dipilih tetapi dapat diubah sesuka hati menggunakan arahan dalam file konfigurasi, seperti yang akan kita lihat di artikel ini.
Jika log disimpan selamanya, mereka pada akhirnya akan mengisi sistem file di mana /var/log tinggal. Untuk mencegahnya, administrator sistem dapat menggunakan utilitas bagus yang disebut logrotate untuk membersihkan log secara berkala.
Dalam beberapa kata, logrotate akan mengganti nama atau memampatkan log utama ketika suatu kondisi terpenuhi (lebih lanjut tentang itu dalam satu menit) sehingga acara berikutnya direkam pada file kosong.
Selain itu, itu akan menghapus "tua" file log dan akan menyimpan yang terbaru. Tentu saja, kita harus memutuskan apa "tua" berarti dan seberapa sering kita ingin logrotate membersihkan log untuk kita.
Untuk memasang logrotate, cukup gunakan pengelola paket Anda:
Di Debian dan Ubuntu # pembaruan aptitude && aptitude instal logrotate Di CentOS, RHEL dan Fedora # yum update && yum install logrotate.
Perlu diperhatikan bahwa file konfigurasi (/etc/logrotate.conf
) dapat menunjukkan bahwa pengaturan lain yang lebih spesifik dapat ditempatkan pada individu .conf
file di dalam /etc/logrotate.d.
Ini akan terjadi jika dan hanya jika baris berikut ada dan tidak dikomentari:
termasuk /etc/logrotate.d.
Kami akan tetap dengan pendekatan ini, karena ini akan membantu kami untuk menjaga segala sesuatunya tetap teratur, dan menggunakan Debian kotak untuk contoh berikut.
Menjadi alat yang sangat serbaguna, logrotate menyediakan banyak arahan untuk membantu kami mengonfigurasi kapan dan bagaimana log akan diputar, dan apa yang harus terjadi setelahnya.
Mari kita masukkan konten berikut ke dalam /etc/logrotate.d/apache2.conf (perhatikan bahwa kemungkinan besar Anda harus membuat file itu) dan periksa setiap baris untuk menunjukkan tujuannya:
apache2.conf
/var/log/Apache2/* { rotasi mingguan 3 ukuran 10M kompres delaycompress. }
Baris pertama menunjukkan bahwa arahan di dalam blok berlaku untuk semua log di dalamnya /var/log/apache2:
Mari kita jalankan dry-run untuk melihat apa yang akan dilakukan logrotate jika itu benar-benar dieksekusi sekarang. Menggunakan -D
opsi diikuti oleh file konfigurasi (Anda sebenarnya dapat menjalankan logrotate dengan menghilangkan opsi ini):
# logrotate -d /etc/logrotate.d/apache2.conf.
Hasilnya ditunjukkan di bawah ini:
Alih-alih mengompresi log, kita bisa mengganti namanya setelah tanggal ketika mereka diputar. Untuk melakukan itu, kita akan menggunakan teks tanggal
pengarahan. Jika format tanggal kami selain dari default yyyymmdd, kita dapat menentukannya menggunakan format tanggal.
Perhatikan bahwa kami bahkan dapat mencegah rotasi terjadi jika log kosong dengan notifempty. Selain itu, beri tahu logrotate untuk mengirimkan log yang diputar ke administrator sistem ([dilindungi email] dalam hal ini) untuk referensinya (ini akan membutuhkan a server email yang akan disiapkan, yang berada di luar cakupan artikel ini).
Jika Anda ingin mendapatkan email tentang logrotate, Anda dapat mengatur server email Postfix seperti yang ditunjukkan di sini: Instal Server Email Postfix
Kali ini kita akan menggunakan /etc/logrotate.d/squid.conf hanya berputar /var/log/squid/access.log:
squid.conf
/var/log/squid/access.log { bulanan buat 0644 root root rotate 5 size=1M dateformat dateext -%d%m%Y notifempty mail [dilindungi email]
}
Seperti yang bisa kita lihat pada gambar di bawah, log ini tidak perlu diputar. Namun, ketika kondisi ukuran terpenuhi (ukuran = 1M), log yang diputar akan diganti namanya access.log-25082020 (jika log diputar pada 25 Agustus 2020) dan log utama (akses.log) akan dibuat ulang dengan izin akses yang disetel ke 0644 dan dengan akar sebagai pemilik dan pemilik grup.
Akhirnya, ketika jumlah log akhirnya mencapai 6, log tertua akan dikirimkan ke [dilindungi email].
Sekarang anggaplah Anda ingin menjalankan perintah khusus saat rotasi berlangsung. Untuk melakukan itu, tempatkan baris dengan perintah seperti itu di antara arahan postrotate dan endscript.
Sebagai contoh, misalkan kita ingin mengirim email ke root ketika ada log di dalamnya /var/log/myservice akan diputar. Mari tambahkan garis merah ke /etc/logrotate.d/squid.conf:
squid.conf
/var/log/myservice/* { bulanan buat 0644 root root rotate 5 size=1M postrotate echo "Sebuah rotasi baru saja terjadi." | skrip akhir root email }
Terakhir, namun tidak kalah pentingnya, penting untuk dicatat bahwa opsi ada di /etc/logrotate.d/*.conf
menimpa yang ada di file konfigurasi utama jika terjadi konflik.
Secara default, instalasi logrotate membuat file crontab di dalamnya /etc/cron.daily bernama logrotate. Seperti halnya dengan file crontab lain di dalam direktori ini, itu akan dieksekusi setiap hari mulai dari 6:25 pagi jika anacron tidak diinstal.
Jika tidak, eksekusi akan dimulai sekitar 07:35. Untuk memverifikasi, perhatikan baris yang mengandung cron.daily baik /etc/crontab atau /etc/anacrontab.
Dalam sistem yang menghasilkan beberapa log, administrasi file tersebut dapat sangat disederhanakan menggunakan logrotate. Seperti yang telah kami jelaskan di artikel ini, itu akan secara otomatis memutar, mengompres, menghapus, dan mengirimkan log secara berkala atau ketika file mencapai ukuran tertentu.
Pastikan itu diatur untuk dijalankan sebagai pekerjaan cron dan logrotate akan membuat segalanya lebih mudah bagi Anda. Untuk lebih jelasnya, lihat halaman manual.
Apakah Anda memiliki pertanyaan atau saran tentang artikel ini? Jangan ragu untuk memberi tahu kami menggunakan formulir komentar di bawah.