Simple Log Management

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 —

Leave a Reply

Your email address will not be published. Required fields are marked *