Selamlar arkadaşlar bu yazımda sizlere Ubuntu üzerinde LogRotate yaparak oluşturulan logların belirli aralıklarla sıkıştırılması (Compress), belirlediğiniz günden eski olan logların silinmesi (Remove) gibi işlemleri yaptığımız rotasyon sürecinden bahsedeceğim.

LogRotate dosyalarını iki şekilde oluşturmak mümkündür. Bunlardan ilki ;
/etc/logrotate.conf dosyasıdır. Bu dosya içerisinde ayarlamalarınızı yapabilir ve Rotasyonu oluşturabilirsiniz.

İkinci seçenek olarak ise /etc/logrotate.d/ klasörü altında oluşturacağınız dosyalardır. Burada direk nano [program_adı] diyerek dosya oluşturursunuz ve içerisine rotasyonunuzu yazabilirsiniz. Bu dosyalara yazılan bilgiler logrotate.conf dosyasında yazılan Default değerleri geçersiz kılıyor.
Şimdi size bir örnek üzerinden örnek vererek açıklamalar yapacağım :

ilk satırımızla /opt/log/*.txt ile /opt/log/ path’inde bulunan dosyaların sonunda .txt yazanlarına işlem yapacağımızı belirtiyorum.
Su root adm : ile bu işlemi admin yetkisi ile yapacağımı belirtiyorum.
Rotate : 7 ile 7 adet log dosyasının saklanacağını belirtiyorum. Bu sayede 8.log geldiğinde ilk sıradaki log’u silecek ve elimizde sürekli olarak 7 adet log’umuz kalacak.
Daily : ile günlük olarak rotate işlemi yapacağımızı belirtiyoruz. Bu alana Weekly, Monthly ve Yearly olarakda değerler girebilirsiniz. Yearly yazdığınızda yılbaşını baz alarak çalışacaktır.
Compress : seçeneği ile defaultta gzip ile sıkıştırma işlemi yapılır. Uzantısının değişmesini isterseniz compressext [.uzantı] şeklinde yazmalısınız. Compresscmd [calisması_istenen_path] ile de farklı bir sıkıştırma programının /bin/… şeklindeki yolunu yazarak değişiklik yapabilirsiniz.
Missingok : seçeneği ile log dosyalarından biri olmasa dahi hata vermeden diğer dosyalarda işlem yapmaya devam edecektir. Bu seçeneği yazmazsanız dosyayı bulamaz ve işlemleri yapmaz.
Notifempty : seçeneği ile log dosyasının içeriği boş ise rotate yapmayacaktır.
Size : ile ise verilen boyuttan büyük olduğunda rotate işlemi başlayacaktır. KB için K, MB için M ve GB için ise G kısaltmaları kullanılır.
Bunlar dosyamızda yazan seçenekler ek olarak farklı seçenekleride mevcuttur. Bunlardan bahsedeceğim şimdide :
create : log dosyaları işlem gördükten sonra aynı isimle tekrardan oluşturulmasını sağlar. Create mode owner group şeklinde bir kullanımı vardır. ÖR : create 0664 root root şeklindedir belirtmezseniz orjinal dosyanın özelliklerini alır. Nocreate yazarsanız ise dosya oluşturmaz.
Dateext : Seçeneğimiz dosyalarımızı Yıl-Ay-Gün şeklinde tutacaktır.
Dateformat : Seçeneğinde ise formatı sizin belirlemenize olan sağlar. ÖR : dateformat .%Y-%m/%d çıktısı dosyamız.txt.2022-08/15 olacaktır.
Olddir : Seçeneği sayesinde istenilen dizine log rotate edebiliriz. ÖR : olddir /etc/log/burada_olsun
prerotate/endscript : Seçeneği ile Rotate işlemi başlamadan önce belirttiğiniz komutları çalıştıracaktır.
postrotate/endscript : Seçeneği ile Rotate işleminden sonra kodlar çalıştırılabilir.
Ör :
postrotate
systemctl restart zabbix-agent
endscript
İki seçenek içinde bu örneği baz alabilirsiniz.
Mail [mail@adresiniz] : seçeneği ile yazılan maile işlem sonrası mail atılmasını sağlayabilirsiniz.
Copytruncate : Bu seçenek sayesinde Rotate işlemi sırasında işlem yapılan dosyayı korur ve boşaltır. Ancak bilgileri sıkıştırarak aynı ad ile farklı bir dosyada oluşturur.
NOT : burada kullanımları olmayan ve adında ör : copytruncate gibi tek yazım olan seçenekleri sadece yazıyorsunuz. Nedense yazmak istedim aklınızın karışmasını istemem.
LogRotate Manuel Tetikleme İşlemleri :

/etc/logrotate.d yoluna gidin ve daha sonra logrotate -d [dosyanızın_adı] şeklinde manuel olarak Debug modunda Rotate işleminizi başlatın.
-d : Debug
-f : Force
-v : Verbose
Bu seçenekleri yan yana yazarakta kullanabilirsiniz. ÖR : logrotate -fv semih
LogRotate çalışmasını etkileyen dosyalar :
*Hourly, daily, weekly ve monthly gibi seçeneklerin çalışabilmesi için /etc/cron.* path’nin içerisinde logrotate dosyası bulunması gerekmektedir. Aksi halde dosyalarda belirtseniz bile işlemler çalışmayacaktır.
cp /etc/cron.monthly/logrotate /etc/cron.hourly
daha sonra hourly olarak /etc/logrotate.d/ altında bir dosya oluşturabilirsiniz ve hourly seçeneğiyle Rotate işlemlerini başlatabilirsiniz.
Yazım bu kadar arkadaşlar umarım yararlı olmuştur. Şimdiden herkese kolaylıklar dilerim.