2

Memanipulasi Log dengan Logrotate di Linux

log file adalah sebuah file yg mencatat sesuatu hasil/output dari sebuah aplikasi ( error, notice etc ) sehingga bisa mempermudah seorang teknisi ( system administrator ) untuk memperbaiki sebuah troubleshoot. contoh nya adalah sebuah web server apache/httpd mengalami error, maka error dari apache/httpd tersebut akan di catat sebuah log yg default nya di /var/log/httpd/error.log ( setiap aplikasi mempunyai path log yg berbeda-beda sesuai konfigurasi nya ). nah bagaimana jika log tersebut memakan space besar? atau kita menghabisi waktu dengan mem-backup manual log – log tersebut? sesuai judul, memanipulasi log dengan logrotate. dengan logrotate anda tak perlu susah – susah untuk mem-backup atau menghapus log secara manual dan berkala. dengan sebuah konfigurasi, logrotate akan mem-backup atau menghapus log secara otomatis. berikut fitur – fitur logrotate :

  • Merotasi log file jika ukuran log sudah mencapai batas yang sudah di tentukan
  • melanjutkan log yang sudah di log file baru dan membackup/meng-compress log file yang lama
  • menambah script shell untuk di execute jika log file setelah/sebelum di rotasi
  • menghapus log file yang sudah lama

 

1. Logrotate configuration files

sebelum masuk ke konfigurasi, dibawah ini adalah bagian – bagian dari konfigurasi logrotate :

  • /usr/sbin/logrotate – command logrotate
  • /etc/cron.daily/logrotate – shell script yang akan di execute log rotate setiap hari
  • /etc/logrotate.conf – konfigurasi global untuk semua log file
  • /etc/logrotate.d – setiap paket yang terinstall/aplikasi akan menaruh konfigurasi logrotate di direktori ini.
$ cat /etc/logrotate.d/httpd
/var/log/httpd/access_log {
    missingok
    notifempty
    size 30k
    yearly
    create 0700 root root
}

 

2. merotasi log berdasarkan besar ukuran file log

jika kamu ingin merotasi log file ketika ukuran nya mencapai 1KB :

$ cat logrotate.conf
/var/log/squid/access.log {
        size 1k
        create 755  foo foo
        rotate 4
}

Penjelasan :

  • size 1k : log file di rotasi jika mencapai ukuran yg sudah di tentukan ( 1KB )
  • create : permission untuk hasil file yg sudah di rotasi ( access.log.x )
  • rotate : maksimal file hasil rotasi log access.log.

jalankan perintah :

logrotate -s /etc/logrotate.conf

Hasil nya di /var/log/squid/access.log:

- access.log.4
- access.log.3
- access.log.2
- access.log.1
- access.log

 

3. meng-Compress hasil rotasi log file

dibawah ini contoh logrotate yang meng-compress hasil rotasi access.log dengan gzip.

$ cat logrotate.conf
/var/log/squid/access.log {
        size 1k
        copytruncate
        create 755 foo foo
        rotate 4
        compress
}

Maka hasilnya :

access.log.1.gz

 

4. dateext : rotasi log file dengan menambahkan ‘date’ pada nama log file yg dirotasi.

cat logrotate.conf
/var/log/squid/access.log {
        size 1k
        copytruncate
        create 755 foo foo
        dateext
        rotate 4
        compress
}

setelah konfigurasi diatas di masuk kan ke logrotate.conf, maka hasilnya :

access.log-20140510.gz

 

5. merotasi log file berdasarkan waktu :

rotasi setiap bulan :

$ cat logrotate.conf
/var/squid/access.log {
        monthly
        copytruncate
        rotate 4
        compress
}

Rotasi setiap pekan :

$ cat logrotate.conf
/var/log/squid/access.log {
        weekly
        copytruncate
        rotate 4
        compress
}

Rotasi setiap hari :

$ cat logrotate.conf
/var/log/squid/access.log {
        daily
        copytruncate
        rotate 4
        compress
}

 

6. menyisipkan script pada saat logrotate

anda bisa membuat script dan di eksekusi ketika logrotate telah selesai merotasi log.

$ cat logrotate.conf
/var/log/squid/access.log {
        size 1k
        copytruncate
        rotate 4
        compress
        postrotate
               /home/cubnetwork/script.sh
        endscript
}

 

7. maxage : menghapus log lama yang telah di rotasi sesuai waktu yg ditentukan

contoh dibawah ini akan menghapus log file yg telah di rotasi jika log file tersebut sudah berumur 50 hari.

$ cat logrotate.conf
/var/log/squid/access.log {
        size 1k
        copytruncate
        rotate 4
        compress
        maxage 50
}

8. compress rotasi log selain gzip

default nya log rotate menggunakan gzip untuk meng-compress log yang telah di rotasi, tp jika kalian ingin menggunakan utility compress yang lain bisa juga, contoh menggunakan bzip2 :

$ cat logrotate.conf
/var/log/squid/access.log {
        size 1k
        copytruncate
        create
        compress
        compresscmd /bin/bzip2
        compressext .bz2
        rotate 4
}

Puspo

gue orangnya santai. gasuka keributan. mending nyari duit daripada nyari ribut :)) Co-founder dari cubnetwork.

2 Comments

  1. klo prosedur nya log 1 – 3 hari masih di file yang sama,
    hari 4 – 30 ada di file yang berbeda.
    log lebih dari 30 hari akan di hapus.
    itu gmn gan ?

    • jadi maksudnya pada hari ke 4 nama file log akan berubah? seperti itu?

Leave a Reply