Forum Bash & Scripting Sunucu Loglarını Otomatik Temizleyen ve Arşivleyen...
Bash & Scripting

Sunucu Loglarını Otomatik Temizleyen ve Arşivleyen Bash Scripti

Furkan Demir
4 ay önce • 177 görüntülenme

Linux Sistemlerde Disk Dolma Sorununu Cronjob ve Bash İle Çözmek

Sistem yöneticilerinin en sık karşılaştığı krizlerden biri gece yarısı "/ (root) partition is full" uyarısıyla uyanmaktır. Uygulamaların yazdığı (özellikle hata anlarında büyüyen) devasa log dosyaları veya ISP altyapılarında biriken Radius detay kayıtları diski doldurduğunda veritabanı çöker ve sistem kilitlenir.

Logrotate vs Özel Bash Scriptleri

Linux ile gelen logrotate aracı aslında bu işi standart servisler (Nginx, Syslog) için çok iyi yapar. Ancak spesifik uygulamalarınız, Docker konteyner çıktılarınız veya kendi yazılımlarınızın logları için esnek bir bash scripti yazıp bunu Cronjob ile zamanlamak hayat kurtarır.

Otomasyon Scripti Mantığı

Aşağıdaki temel adımlar bir bash script dosyasına (log_cleanup.sh) yazılarak her gece 03:00'da çalıştırılabilir:

Bulma (Find): `find /var/log/myapp -type f -name "*.log" -mtime +7` komutuyla 7 günden daha eski log dosyaları tespit edilir.

Sıkıştırma (Archive): Bulunan GB'larca büyüklükteki metin dosyaları `tar -czvf` ile ziplenerek disk alanından %90 tasarruf sağlanır.

Uzak Yedekleme (Off-Site): Sıkıştırılan dosyalar güvenlik amacıyla `rsync` veya `s3cmd` kullanılarak uzak bir FTP sunucusuna veya AWS S3 bucket'ına aktarılır.

Silme: Aktarım başarılı olduktan sonra (exit code kontrolü yapılarak) sunucu üzerindeki asıl log dosyaları `rm` komutuyla silinerek diski ferahlatır.

Hazırladığınız sistem betiklerinde (Scripting) Bash yerine Python kullanmayı tercih ettiğiniz spesifik durumlar (örneğin JSON parse etmek gerektiğinde) nelerdir?

Beğen 0
Bilgi İşlem Uzmanı 1

Log silme scriptine tar komutu ile arşive alıp AWS S3'e veya FTP'ye yedekleme adımı da eklenebilir. Böylece geçmişe dönük veriler kaybolmaz.

Beğen 4

Cevap yazmak için giriş yapmalısınız.

Giriş Yap