pada server-server baik berbasis *nix atau pun juga windows log adalah sebuah benda yang dibutuhkan untuk melakukan pengecekan terhadap apa-apa yang terjadi pada mesin tersebut, terlebih bila mengalami serangan dari pihak-pihak yang tak bertanggung jawab.

namun log juga bisa menjadi senjata makan tuan bila log tersebut tidak dirotasi dan juga dihapus, sehingga menyebabkan masalah misal pada web server atau mail server dimana kondisi log memakan space hardisk.

sebagai contoh kasus misalkan pada sebuah web server log dari httpd-access.log dan juga http-error.log akan cepat sekali memenuhi direktori /var/log/httpd jika dibiarkan begitu terus maka dapak terburuk server akan down karena space penuh dan website tidak dapat diakses. begitu juga untuk log pada mail server production yang umumnya sangat besar dan banyak karena lalu-lintas email yang padat, karena log itu memakan space maka yang terjadi biasanya email menjadi bounce (mental) tidak bisa dikirim dan diterima.

untuk itu harus ada perputaran dan juga penghapusan log pada waktu-waktu tertentu agar hal-hal di atas tadi tidak terjadi

berikut ini saya akan share script yang saya gunakan untuk merotasi dan menghapus log pada server, kerja dari script ini akan di padukan dengan crond, sehingga dapat berjalan secara berkala dan terjadwal.

script log rotate

#!/bin/sh

tgl=`date`
tglskr=`date +%Y/%m/%d`
blnskr=`date +%Y/%m`
VAR_ROOT=/var/log/httpd/
NEW_LOGFILE=/var/log/httpd/error_log`date +%Y%m%d`

cd $VAR_ROOT
cp error_log $NEW_LOGFILE
cat /dev/null > error_log
gzip $NEW_LOGFILE

script di atas dapat disesuaikan kondisinya dengan log yang ingin dirotate dan posisinya di direktori mana, jika sudah terapkan dengan menggunakan cron misal ingin menjalankan script ini per hari pada jam 23:59 maka konfigurasi cron adalah sebagai berikut

59 23 * * * sh /opt/script/rotate

dan berikut ini adalah script untuk menghapus log

#!/bin/sh

find /var/log/httpd/* -mtime +5 -exec rm {} \;

untuk script hapus log bagian +5 dapat diganti sesuai dengan keinginan, untuk script yang saya gunakan ini akan mendelete semua log dan hanya disisakan 5 log terbaru.
dan jika dipadukan dengan cron untuk menjalankan script ini dimana akan diekseskusi sebulan sekali adalah sebagai berikut

00 23 * */1 * sh /opt/script/hapuslog

sepertinya itu dulu yang dapat saya share untuk saat ini, semoga dapat bermanfaat

Advertisements