Di salah satu klien Excellent yang menggunakan Zimbra sebagai sistem email servernya, pernah mengalami kendala dimana konfigurasi logrotate nya tidak berjalan sehingga file zimbra.log dan zimbra-stats.log nya secara terus menerus aktif dan membesar hingga 12 GB karena menyimpan log dari tanggal 29 Oktober 2018 hingga sekarang 14 Februari 2019 dalam satu file tersebut.
root@proxy1:~# ls /var/log/zimbra* -ltrh -rw-r----- 1 syslog adm 0 Jun 10 2018 /var/log/zimbra.log-2018061007.backup -rw-r--r-- 1 syslog adm 1.6M Oct 26 07:58 /var/log/zimbra.log.4.gz -rw-r--r-- 1 syslog adm 1.3M Oct 27 08:03 /var/log/zimbra.log.3.gz -rw-r--r-- 1 syslog adm 1.6M Oct 28 08:00 /var/log/zimbra.log.2.gz -rw-r--r-- 1 syslog adm 1.2M Oct 29 07:39 /var/log/zimbra.log.1.gz -rw-r--r-- 1 syslog adm 1.1G Feb 14 09:48 /var/log/zimbra-stats.log -rw-r--r-- 1 syslog adm 12G Feb 14 09:48 /var/log/zimbra.log
Ketika dicoba di force untuk rotate menggunakan command logrotate -f /etc/logrotate.d/zimbra, muncul pesan error seperti berikut ini.
error: skipping "/var/log/zimbra.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation. error: skipping "/var/log/zimbra-stats.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
Untuk pesan error tersebut biasanya karena adanya permission yang tidak aman untuk hak penulisan pada file tersebut, dimana user selain root bisa mengubah file log tersebut.
# Eskalasi
Untuk eskalasinya bisa tambahkan baris su root root untuk memberi tahu logrotate agar menggunakan user/group apa yang digunakan untuk menjalankan rotasi log.
Edit file /etc/logrotate.d/zimbra, kemudian cari section log zimbra.log dan zimbra-stats.log, dan edit menjadi seperti berikut
/var/log/zimbra.log { su root root daily missingok notifempty create 0644 syslog adm postrotate /usr/sbin/service rsyslog restart >/dev/null || true su - zimbra -c "/opt/zimbra/bin/zmconfigdctl restart" > /dev/null 2>&1 || true endscript rotate 7 compress } /var/log/zimbra-stats.log { su root root daily missingok notifempty create 0644 syslog adm postrotate /usr/sbin/service rsyslog restart >/dev/null || true su - zimbra -c "/opt/zimbra/bin/zmconfigdctl restart" > /dev/null 2>&1 || true endscript rotate 0 }
Simpan file tersebut, lalu jalankan logrotate
/opt/zimbra/libexec/zmsyslogsetup service rsyslog restart logrotate -f /etc/logrotate.d/zimbra
Maka secara otomatis file log yang besar tadi akan langsung berotasi dan digantikan oleh file log yang baru, dan setiap malam logrotate juga melakukan rotasi log kembali dengan lancar tanpa ada kendala error yang sebelumnya.
Note : Cara diatas tidak hanya berlaku untuk rotate log Zimbra saja, tapi bisa juga digunakan untuk rotate log lainnya jika mengalami kendala yang sama.
Mungkin cukup sekian, semoga bermanfaat
Rizky Pratama. Tinggal di Bekasi, Jawa Barat. Seorang IT di salah satu perusahaan IT. Pengguna Mac, Linux dan Windows
Selain sebagai penulis di blog ini, saya juga penulis di blog saya yang lain, yaitu https://pratama.biz.id