Tüm Sistemler Çalışıyor
Network Durumu
Ana Sayfa Blog Sunucu Log Rotasyonu (logrotate) Nasıl Yapılır? 7 Adımda Detaylı Kılavuz 2026

Sunucu Log Rotasyonu (logrotate) Nasıl Yapılır? 7 Adımda Detaylı Kılavuz 2026

Sunucu Log Rotasyonu (logrotate) Nasıl Yapılır? 7 Adımda Detaylı Kılavuz 2026

Log Rotasyonu Nedir ve Neden Önemlidir?

Log Rotasyonu Nedir ve Neden Önemlidir? - Sunucu Log Rotasyonu (logrotate) Ayarları
Log Rotasyonu Nedir ve Neden Önemlidir?

Sunucularda çalışan uygulamalar, web servisleri ve sistem hizmetleri sürekli olarak log dosyaları üretir. Bu dosyalar hataları, erişim kayıtlarını ve performans istatistiklerini saklar. Ancak log dosyaları zamanla büyür, disk alanını tüketir ve disk dolması nedeniyle hizmet kesintilerine yol açabilir. Ayrıca, büyük log dosyaları analiz edilmesi zor bir hal alır, bu da sorun tespiti süresini uzatır.

Log rotasyonu, log dosyalarının belirli bir boyuta veya zamana ulaştığında otomatik olarak yeni bir dosyaya geçmesini, eski dosyaları ise sıkıştırarak saklamasını sağlar. Doğru yapılandırılmış bir logrotate sistemi sayesinde disk kullanımını %70‑80 oranında azaltabilir, yedekleme sürecini basitleştirebilir ve günlük bakım maliyetlerini önemli ölçüde düşürebilirsiniz. Bu bölümde log rotasyonunun temel kavramlarını ve işletmenize sağlayacağı faydaları ele alacağız.

logrotate Nasıl Kurulur ve Temel Yapılandırma Dosyası Nedir?

Çoğu modern Linux dağıtımında logrotate paketinin varsayılan olarak yüklü olduğu görülür. Yüklü değilse, aşağıdaki komutlarla hızlıca kurabilirsiniz:

sudo apt-get update && sudo apt-get install logrotate   # Debian/Ubuntu
sudo yum install logrotate                               # CentOS/RHEL

Kurulum tamamlandıktan sonra global ayarlar /etc/logrotate.conf dosyasında bulunur. Bu dosya, tüm log dosyaları için geçerli olacak genel kuralları içerir. Örneğin, haftalık rotasyon, 4 haftalık saklama ve sıkıştırma gibi ayarlar burada tanımlanır. Ancak çoğu servis, kendi .conf dosyasını /etc/logrotate.d/ dizinine yerleştirir; bu sayede her uygulama için ayrı ayrı özelleştirme yapılabilir.

Temel bir logrotate.conf örneği aşağıdaki gibidir:

weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 0640 root adm

Bu ayarlar, log dosyalarının haftada bir döndürülmesini, en fazla dört eski dosyanın tutulmasını, sıkıştırılmış arşivlerin oluşturulmasını ve boş dosyaların yok sayılmasını sağlar. create satırı yeni log dosyasının izinlerini ve sahipliğini belirler; bu sayede servisler log yazmaya devam edebilir.

Uygulama Bazlı logrotate Konfigürasyonları Nasıl Oluşturulur?

Her uygulamanın log formatı ve büyüme hızı farklıdır; bu yüzden /etc/logrotate.d/ içinde uygulamaya özgü dosyalar oluşturmak en iyi pratiktir. Örneğin, Apache web sunucusu için aşağıdaki gibi bir yapılandırma dosyası hazırlanabilir:

/var/log/apache2/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        systemctl reload apache2 > /dev/null
    endscript
}

Bu örnek, Apache loglarını günlük olarak döndürür, 14 gün saklar ve sıkıştırır. postrotate bloğu ise rotasyon sonrası Apache servisini yeniden yükleyerek yeni log dosyasının kullanılmasını sağlar. Benzer şekilde MySQL, Nginx, PHP-FPM gibi hizmetler için de ayrı .conf dosyaları eklenebilir. Önemli olan, her bir hizmetin log dosyasının konumunu ve rotasyon sıklığını doğru tanımlamaktır.

Log Rotasyonunda Sık Yapılan Hatalar ve Çözüm Önerileri

Log Rotasyonunda Sık Yapılan Hatalar ve Çözüm Önerileri - Sunucu Log Rotasyonu (logrotate) Ayarları
Log Rotasyonunda Sık Yapılan Hatalar ve Çözüm Önerileri

Log rotasyonu yapılandırılırken gözden kaçan hatalar, beklenmedik sorunlara yol açabilir. En yaygın hatalardan biri missingok satırının eksik olmasıdır; bu durumda log dosyası bulunamadığında logrotate bir hata verir ve diğer rotasyon işlemleri durur. Bir diğer hata, create parametresinin yanlış ayarlanmasıdır; yeni log dosyası oluşturulmazsa uygulama log yazamaz ve hata verir.

Ek olarak, sıkıştırma (compress) işlemi CPU yoğun olabilir; yüksek trafikli sunucularda sıkıştırma zamanını gecikmeli (delaycompress) yapmak performansı korur. Log dosyalarının chmod ve chown ayarları da kritik bir noktadır; yanlış izinler güvenlik riskine ve log kaybına neden olabilir. Bu hataları önlemek için logrotate -d /etc/logrotate.conf komutuyla yapılandırmayı dry‑run modunda test edebilir, olası sorunları önceden görebilirsiniz.

logrotate ile Log Arşivleme ve Sıkıştırma Stratejileri

Log dosyalarının uzun vadeli saklanması genellikle yasal gereklilikler ve denetim amaçları için gerekir. logrotate bu süreci compress, delaycompress ve rotate seçenekleriyle yönetir. Sıkıştırma formatı varsayılan olarak gzip’tir, ancak bzip2 veya xz gibi daha yüksek sıkıştırma oranına sahip alternatifler de compresscmd ve uncompresscmd parametreleriyle belirtilebilir.

Aşağıdaki tablo, farklı sıkıştırma algoritmalarının ortalama sıkıştırma oranı ve CPU tüketimini karşılaştırmaktadır:

AlgoritmaSıkıştırma OranıCPU Kullanımı
gzip%60‑70Düşük
bzip2%75‑80Orta
xz%85‑90Yüksek

Yüksek trafikli sunucularda gzip tercih edilirken, arşivleme amaçlı uzun vadeli saklamalarda xz daha verimli olabilir. Ayrıca, dateext seçeneği ile rotasyon tarihini dosya adına ekleyerek, logların hangi döneme ait olduğunu kolayca görebilirsiniz. Örneğin, /var/log/app.log.2026-09-12.gz gibi bir isimlendirme, geriye dönük analizlerde büyük kolaylık sağlar.

Log Rotasyonunu Otomatikleştirmek İçin Cron Entegrasyonu

logrotate genellikle sistemin /etc/cron.daily dizininde yer alan bir script ile günlük olarak çalıştırılır. Ancak bazı senaryolarda daha sık veya özel zamanlarda rotasyon gerekebilir. Bu durumda, kendi cron kaydınızı ekleyerek kontrol tamamen sizde olur.

Aşağıda haftada iki kez, sabah 02:00 ve akşam 14:00’de çalışacak bir cron satırı örneği verilmiştir:

0 2,14 * * 0,3 /usr/sbin/logrotate /etc/logrotate.conf

Bu satır, logrotate komutunu belirtilen zamanlarda tetikler. -f (force) parametresi eklenerek, rotasyonun zorlanması da mümkündür; ancak bu, log dosyalarının gereksiz yere sıkıştırılmasına neden olabileceği için dikkatli kullanılmalıdır. Cron job’ların doğru çalıştığını doğrulamak için grep CRON /var/log/syslog komutuyla logları inceleyebilir ve olası hataları tespit edebilirsiniz.

Gerçek Dünya Senaryosu: E‑ticaret Sitesi Log Rotasyonu

Bir e-ticaret hosting ortamında yüksek trafik ve yoğun işlem hacmi log dosyalarının dakikalar içinde megabaytlarca büyümesine neden olur. Diyelim ki bir ay içinde /var/log/nginx/access.log 30 GB’a ulaşmış. Bu durumda, günlük rotasyon ve 7 günlük saklama politikası uygulanmalı, eski dosyalar gzip ile sıkıştırılmalı ve bir bulut depolama servisine (örn. S3) yedeklenmelidir.

Uygulama adımları:

  1. NGINX için /etc/logrotate.d/nginx dosyası oluşturun.
  2. Günlük rotasyon, 7 gün saklama ve compress ayarlarını ekleyin.
  3. Rotasyon sonrası systemctl reload nginx komutunu postrotate içinde çalıştırın.
  4. Her hafta logrotate -f ile zorlayarak eski logları aws s3 cp komutuyla yedekleyin.

Bu yaklaşım, disk kullanımını %85 azaltır, yedekleme süresini kısaltır ve olası veri kayıplarını önler. Ayrıca, AMD Ryzen VDS sunucular gibi yüksek performanslı altyapılarda CPU üzerindeki ek yük minimum seviyededir.

Sıkça Sorulan Sorular

logrotate komutunu manuel olarak nasıl çalıştırabilirim?

sudo logrotate -f /etc/logrotate.conf komutu, yapılandırma dosyasındaki kuralları zorlayarak hemen rotasyon işlemini başlatır. -d parametresi ise sadece ne olacağını gösterir, gerçek bir işlem yapmaz.

Log dosyalarını sıkıştırmadan sadece silmek güvenli mi?

Sıkıştırma, disk alanı tasarrufu sağlarken aynı zamanda logların uzun vadeli arşivlenmesi için de faydalıdır. Sıkıştırma yapılmadan silmek, özellikle yasal gereklilikler ve denetim süreçleri için risk oluşturur.

logrotate yapılandırmasında sharedscripts ne işe yarar?

Bu seçenek, birden fazla log dosyası için aynı postrotate veya prerotate betiğinin yalnızca bir kez çalıştırılmasını sağlar. Böylece aynı servisin birden çok log dosyası için tekrar tekrar yeniden başlatılması engellenir.

Log rotasyonu sırasında log dosyası kaybolursa ne yapılmalı?

Öncelikle missingok seçeneğinin ekli olduğundan emin olun. Eğer dosya beklenmedik bir şekilde silinmişse, logrotate -d ile yapılandırmayı test edin ve create parametresiyle yeni bir dosyanın otomatik oluşturulmasını sağlayın.

Sonuç ve Önerilen Sonraki Adım

Log rotasyonu, sunucu yönetiminin temel taşlarından biridir; doğru yapılandırma sayesinde disk alanı tasarrufu, performans artışı ve güvenli arşivleme sağlarsınız. Makalemizde logrotate kurulumu, uygulama bazlı konfigürasyon, sık yapılan hatalar ve gerçek dünya örnekleri üzerinden kapsamlı bir rehber sunduk.

Eğer henüz bir VDS sunucu paketi kullanmıyorsanız, log rotasyonu gibi kritik yönetim görevlerini rahatça uygulayabileceğiniz bir ortam seçmek uzun vadede zaman ve maliyet tasarrufu getirir. Şimdi sunucunuzda logrotate yapılandırmasını kontrol edin, eksik ya da hatalı ayarları düzeltin ve cron entegrasyonu ile otomasyonu tamamlayın. Bu adımları izleyerek log yönetiminizi güvenli ve verimli bir hale getirebilirsiniz.