Ubuntu serverda logrotation
Serverlarımızda tutulan log dosyaları bir yerden sonra devasa boyutlara ulaşarak depolanması ve gerektiği zaman incelenmesi eziyet haline gelebiliyor. Bu yüzden log dosyalarımızı parçalara ayırıp bu parçaları sıkıştırarak saklamak, hem lazım olduğu zaman inceleme yapılmasını, hem de log dosyasının diskte tutulduğu alanı oldukça küçültüp sabit diskimizin rahat bir nefes almasını sağlayacaktır.
Bunu yapabilmek için Ubuntu'da logrotate adlı uygulamayı kullanıyoruz. Öncelikle sunucumuza yüklü değilse yüklememiz gerekiyor.
sudo apt-get install logrotate
Komutunu çalıştırdıktan sonra uygulamamız kurulacaktır. Doğrulamak için terminalde;
logrotate
yazabilirsiniz. Kurulduysa uygulama bilgilerini gösterecektir.
Gerekli ayarları yapmak için;
(sudo) vi /etc/logrotate.conf
komutu ile ayar dosyamızı açıyoruz. Uygulamanın en altına düzenlemek istediğimiz log dosyalarının adresini tanımlayıp ayar parametrelerini giriyoruz.
/home/deployer/apps/app_name/current/log/*.log {
weekly # Periyot
missingok # Dosyayı bulamaması durumundaki davranışı
rotate 52 # Kaç adet dosya tutacağının sayısı
compress # Sıkıştırma istenip istenmediğine göre eklenir
notifempty # Eğer log dosyası boş ise işlem yapmaz
copytruncate # Yedekledikten sonra orjinal log dosyasını silip yeni bir tane oluşturur
size 1024M # Log dosyası boyut sınırı
}
Bu parametreler zorunlu olmayıp ihtiyaca yönelik olarak eklenmektedir. Log dosyalarının çabuk genişlediği bir sistemde günlük rotasyon yapmak gerekirken, ihtiyaca göre ayda bir de yapabilirsiniz (daily, weekly, monthly). Hatta örnekteki gibi boyut sınırı da vererek eğer 1 GB'ı aşmadıysa rotasyonu yapmayacaktır. Ayrıca logrotator tutacağı dosya sayısını da sizden istemektedir. 10 verdiyseniz 10 adet yedeğe ulaştığı zaman en eski dosyayı silerek işlemine devam eder, bu yüzden ihtiyacı iyi düşünmeniz veya sıkıştırılmış log dosyalarını farklı bir dosyada yedeklemeniz yararınıza olacaktır. Bunları sağlamak için
postrotate
...
endscript
#veya
prerotate
...
endscript
şeklinde rotasyondan sonra çalışacak scriptler oluşturabilirsiniz.
Eğer yazdığınız scriptin hemen çalışmasını istiyorsanız
sudo logrotate -f /etc/logrotate.conf
komutunu kullanabilir, ayrıca
cat /var/lib/logrotate/status
komutu ile de zamanlanmış görevler içerisinde log rotationunuzun durumunu görebilirsiniz.
Logrotation ile ilgili daha detaylı bilgiyi man sayfasından bulabilirsiniz.
comments powered by Disqus