Anda Sysadmin Linux pemula ? begitu juga dengan saya. Kali ini kita akan belajar bagaimana mengelola log dari server agar tidak sampai menyita banyak ruang penyimpanan di server yang anda kelola.
Log sangat berguna, terutama saat kita ingin mencari akar dari sebuah error. Log memiliki informasi tentang semua aktivitas services atau keseluruhan dari sebuah server.
Kita memiliki semua jenis log untuk server dan juga log terpisah untuk layanan, seperti server web atau MySQL, dll.
Log harus dikelola dengan baik karena akan terus bertambah besar seiring berjalannya waktu, yang tidak hanya membuat sulit untuk menganalisisnya tetapi mereka juga menyita ruang penyimpanan pada system server. Jika dibiarkan tidak dikendalikan maka log dapat tumbuh menjadi puluhan bahkan ratusan GB. Untuk membantu mengelola log, kita dapat menggunakan tools logrotate di Linux.
Seperti namanya, logrotate digunakan untuk mengelola & memutar log berdasarkan ukuran, tanggal, bulan dll. Dengan tool logrotate, kita dapat mengarsipkan log lama, menghapusnya setelah sejumlah log telah tercapai & dapat memulai log baru file baru. Sistem biasanya menjalankan logrotate sekali sehari dan memeriksa konfigurasi yang dapat disesuaikan berdasarkan per-direktori atau per-log.
Pada tutorial ini, kita akan belajar menginstal logrotate di berbagai distribusi Linux seperti RHEL / CentOS.
Instalasi
Pada sebagian besar distribusi Linux, logrotate diinstal secara default. Di Centos logrotate juga seharusnya telah dating dengan default Install, jika centos anda belum terdapat logrotate , maka kita bisa menginstall nya dengan command :
“ sudo yum install logrotate –y “
Konfigurasi
File konfigurasi utama untuk logrotate terletak di “ /etc/logrotate.conf “ tetapi kami juga dapat membuat konfigurasi untuk setiap layanan secara terpisah di folder “ /etc/logrotate.d/ “. Pastikan “ include /etc/logrotate.d “ tidak command out di “ /etc/logrotate.conf “
— Log Rotate Apache —
Mari kita buat 1 file baru dengan nama apache2.conf di folder “/etc/lograte.d/“ dengan command
“ sudo vi /etc/logrotate.d/apache2.conf “ dan isi file tersebut dengan :
#— begin —
/var/log/apache2/* {
weekly
rotate 3
size 50M
compress
delaycompress
mail hadi.utomo@xxx.co.id
}
#— end —
Baris pertama menunjukkan bahwa arahan di dalam blok berlaku untuk semua log di dalam folder /var/log/apache2
weekly berarti kita akan merotasi log setiap minggu. Nilai-nilai lain yang bisa di pilih adalah daily dan monthly.
rotate 3 menunjukkan bahwa hanya 3 log yang diputar harus disimpan. Dengan demikian, file terlama akan dihapus pada proses menjalankan berikutnya.
size = 50M menetapkan ukuran minimum untuk rotasi untuk 50MB. Dengan kata lain, setiap log tidak akan dirotasi sampai mencapai ukuran 50MB.
kompres dan delaykompres digunakan untuk memberi tahu bahwa semua log yang akan dirotasi, kecuali log terbaru, harus dikompres.
Mail digunakan agar log di email ke system admin , sehingga system admin tetap memiliki record log jika telah lewat masa rotasinya dan terhapus oleh system
Setelah configurasi di save, untuk melihat apa yang akan configurasi kita sudah benar, kita bisa mencoba eksekusi logrotate sekarang.
“ sudo logrotate -d /etc/logrotate.d/apache2.conf “
Secara default, instalasi logrotate akan membuat file crontab di dalam “ /etc/cron.daily “ bernama logrotate.
Seperti halnya dengan file crontab lain di dalam direktori ini, itu akan dieksekusi setiap hari mulai pukul 6:25 pagi jika anacron tidak diinstal, kita bisa menyesuaikan jadwal sesuai ke inginan kita cukup dengan mengubah config schedulernya. Untuk log default seperti syslog , kita bisa membuat log menjadi rotasi juga dengan mengedit
“ /etc/logrotate.d/syslog “ dan melakukan penyesuaian seperti berikut.
#– begin —
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
daily
rotate 7
compress
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
#– end —
#logrotation mysql
#– begin —
/var/log/mysqld.log {
create 640 mysql mysql
notifempty
weekly
rotate 3
missingok
compress
postrotate
# just if mysqld is really running
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
endscript
}
#– end —
#– logrotation proxy squid —
#– begin —
/var/log/squid/access.log {
monthly
create 0644 squid squid
rotate 5
size=10M
dateext
dateformat -%d%m%Y
notifempty
mail hadi.utomo@xxx.co.id
}
#– end —