Skip to content
Back to blog
Yaşam Linux Logrotate Disk Yönetimi Sistem Yönetimi Log Analizi Bash Otomatik Yedekleme Sürdürülebilirlik Mistral

Linux Sistemlerde Logrotate ile Disk Doluluğunu Önlemenin 5 Kritik Adımı: Uygulamalı Kılavuz

Linux sistemlerde log dosyalarının disk alanını tüketmesini engellemek için Logrotate kullanımına dair detaylı bir rehber. Uygulamalı yapılandırma örnekleri ve en iyi uygulamalarla sistem yöneticilerinin karşılaştığı disk doluluk problemlerine kalıcı çözümler sunuyoruz.

Caner Serbest

Sistem ve Altyapı

7 min read

Linux Sistemlerde Logrotate ile Disk Doluluğunu Önlemenin 5 Kritik Adımı: Uygulamalı Kılavuz

Sistem yöneticilerinin en sık karşılaştığı problemlerden biri, log dosyalarının disk alanını tüketerek sistem performansını olumsuz etkilemesidir. /var/log dizininde biriken log dosyaları, özellikle uzun süreli çalışan sunucularda ciddi disk doluluk problemlerine yol açabilir. Bu durumda devreye Logrotate giriyor: Linux sistemlerinde log dosyalarını otomatik olarak sıkıştırma, arşivleme ve silme işlemlerini yöneten güçlü bir araç.

Bu rehberde, Logrotate’un nasıl çalıştığını, temel yapılandırmasını ve disk doluluğunu önlemek için kullanabileceğiniz 5 kritik adımı detaylı olarak inceleyeceğiz. Uygulamalı örneklerle birlikte, log yönetimini sisteminizin sürdürülebilirliği için nasıl optimize edeceğinizi öğreneceksiniz.


🔍 Logrotate Nedir ve Neden Önemlidir?

Logrotate, sistem loglarını otomatik olarak yönetmek için tasarlanmış bir hizmet programıdır. Temel işlevleri şunlardır:

  • Log dosyalarını sıkıştırma (compress)
  • Log dosyalarını döndürme (rotate) ve arşivleme
  • Eski log dosyalarını silme
  • Log dosyalarının boyutunu ve sayısını sınırlama

Neden önemlidir?

  • Disk doluluğunu önler
  • Log dosyalarının yönetimini otomatikleştirir
  • Sistem performansını korur
  • Yasal ve güvenlik gereksinimleri için log arşivleme sağlar

📊 İstatistiksel Veri: Birçok sistemde /var/log dizini toplam disk kullanımının %10-20’sini oluşturur. Logrotate kullanılmadığında bu oran %50’lere kadar çıkabilir.


🛠️ Logrotate Kurulumu ve Temel Yapılandırma

Logrotate, çoğu Linux dağıtımında varsayılan olarak kuruludur. Kurulumunu doğrulamak için:

# Kurulumu kontrol et
which logrotate

# Sürümünü görüntüle
logrotate --version

Eğer sisteminizde yüklü değilse, aşağıdaki komutlarla kurabilirsiniz:

# Debian/Ubuntu
sudo apt update && sudo apt install logrotate

# RHEL/CentOS
sudo yum install logrotate

# Arch Linux
sudo pacman -S logrotate

Temel Yapılandırma Dosyası

Logrotate’un ana yapılandırma dosyası /etc/logrotate.conf konumundadır. Bu dosyada global ayarlar tanımlanır. Örnek bir yapılandırma:

# /etc/logrotate.conf
# Global ayarlar
weekly
rotate 4
compress
delaycompress
dateext
missingok
notifempty
create 0640 root adm

Ayarların anlamı:

  • weekly: Log dosyalarını haftalık olarak döndür
  • rotate 4: En fazla 4 arşiv sakla
  • compress: Log dosyalarını sıkıştır
  • delaycompress: Bir sonraki döndürmede sıkıştır
  • dateext: Dosyalara tarih ekle
  • missingok: Log dosyası yoksa hata verme
  • notifempty: Log dosyası boşsa döndürme
  • create 0640 root adm: Yeni log dosyası oluştururken izinleri ve sahibi ayarla

🚀 Logrotate’u Özel Log Dosyaları için Yapılandırma

Logrotate’un en güçlü yanı, farklı log dosyaları için özel yapılandırmalar tanımlayabilmenizdir. Bu yapılandırmalar /etc/logrotate.d/ dizininde saklanır.

Örnek 1: Apache Web Sunucusu Logları

Apache loglarını yönetmek için /etc/logrotate.d/apache2 dosyasını oluşturun:

# /etc/logrotate.d/apache2
/var/log/apache2/*.log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        /usr/sbin/apache2ctl graceful > /dev/null
    endscript
}

Açıklamalar:

  • rotate 52: Bir yıl boyunca log arşivlerini sakla
  • sharedscripts: Postrotate script’i sadece bir kez çalıştır
  • postrotate: Apache’yi yeniden yükle (log dosyalarını serbest bırakmak için)

Örnek 2: Nginx Logları

Nginx logları için /etc/logrotate.d/nginx dosyasını düzenleyin:

# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 640 www-data adm
    sharedscripts
    postrotate
        /usr/sbin/nginx -s reload
    endscript
}

Örnek 3: Uygulama Logları (Özel Hizmetler)

Kendi uygulamanızın loglarını yönetmek için /etc/logrotate.d/uygulama dosyasını oluşturun:

# /etc/logrotate.d/uygulama
/var/log/uygulama/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 644 root root
    sharedscripts
    postrotate
        systemctl restart uygulama.service
    endscript
}

🔄 Logrotate’un Çalışma Prensibi ve Döndürme Mekanizması

Logrotate, log dosyalarını döndürme (rotate) işlemi sırasında aşağıdaki adımları takip eder:

  1. Mevcut log dosyasını kapatır (örneğin, access.logaccess.log.1)
  2. Yeni bir log dosyası oluşturur (örneğin, access.log)
  3. Eski log dosyasını sıkıştırır (örneğin, access.log.1access.log.1.gz)
  4. Arşivlenen log dosyalarını siler (örneğin, access.log.5.gz silinir)

Döndürme Türleri

Logrotate’un desteklediği döndürme türleri:

TürAçıklamaÖrnek
rotate NEn fazla N arşiv saklarotate 4 → 4 arşiv + 1 aktif log
weeklyHaftalık döndürmeweekly → Her Pazar logları döndür
dailyGünlük döndürmedaily → Her gün logları döndür
monthlyAylık döndürmemonthly → Her ayın 1’inde logları döndür
size Belirli boyuta ulaşınca döndürsize 100M → 100MB’a ulaşınca döndür

🛠️ Logrotate’u Manuel Olarak Test Etme

Logrotate’un doğru çalışıp çalışmadığını test etmek için -d (debug) ve -v (verbose) seçeneklerini kullanabilirsiniz:

# Logrotate’u debug modunda çalıştır
sudo logrotate -d /etc/logrotate.d/apache2

# Logrotate’u gerçek modda çalıştır (test için)
sudo logrotate -v /etc/logrotate.d/apache2

Debug çıktısı örneği:

reading config file /etc/logrotate.d/apache2
reading config info for /var/log/apache2/*.log
Handling 1 logs
...
rotating pattern: /var/log/apache2/*.log  weekly (52 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/apache2/access.log
  log does not need rotating (log size is below the 'size' threshold)

🚨 Disk Doluluğunu Önlemek için 5 Kritik Adım

1. Log Dosyalarını Sıkıştırma (Compression)

Sıkıştırma, disk alanından tasarruf etmenin en etkili yoludur. Logrotate’un compress ve delaycompress seçeneklerini kullanın:

/var/log/uygulama/*.log {
    compress
    delaycompress
    ...
}
  • compress: Döndürülen log dosyalarını sıkıştır
  • delaycompress: Bir sonraki döndürmede sıkıştır (aktif log dosyasını sıkıştırmamak için)

Sonuç: Log dosyaları %70-90 oranında küçülür.

2. Log Dosyalarını Döndürme Sıklığını Ayarlama

Log dosyalarını ne sıklıkla döndüreceğinizi ayarlayın:

# Günlük loglar için
daily

# Haftalık loglar için
weekly

# Belirli bir boyuta ulaşınca
tam 100M

Öneri:

  • Kritik sistem logları (/var/log/syslog, /var/log/auth.log) → haftalık
  • Uygulama logları → günlük
  • Geçici loglar → boyut tabanlı (örneğin, size 50M)

3. Arşivlenen Log Dosyalarını Sınırlama

Eski log dosyalarını saklama süresini sınırlayın:

rotate 4  # En fazla 4 arşiv sakla
rotate 52 # Bir yıl boyunca arşivleri sakla

Öneri:

  • Kritik loglar (güvenlik, sistem) → uzun süre sakla (örneğin, 52 hafta)
  • Geçici loglar → kısa süre sakla (örneğin, 4 hafta)

4. Log Dosyalarını Manuel Olarak Döndürme

Bazen log dosyalarını acil olarak döndürmeniz gerekebilir. Bunu manuel olarak yapabilirsiniz:

# Logrotate’u belirli bir log dosyası için çalıştır
sudo logrotate -f /etc/logrotate.d/apache2

# Tüm logrotate yapılandırmalarını çalıştır
sudo logrotate -f /etc/logrotate.conf
  • -f (force): Log dosyalarını zorla döndür

5. Logrotate’un Çalışmasını Doğrulama ve İzleme

Logrotate’un çalışmasını doğrulamak için sistem loglarını kontrol edin:

# Systemd üzerinden logrotate’un çalışıp çalışmadığını kontrol et
sudo systemctl status logrotate.timer

# Logrotate’un son çalışma zamanı
sudo journalctl -u logrotate.timer

# Disk kullanımını kontrol et
df -h /var

Öneri:

  • Logrotate’un çalışmasını cron veya systemd timer ile otomatikleştirin
  • Disk kullanımını Grafana/Prometheus ile izleyin

🔧 Logrotate’un Gelişmiş Kullanımı

1. Postrotate ve Prerotate Scriptleri

Log dosyalarını döndürmeden önce veya sonra özel komutlar çalıştırmak için prerotate ve postrotate bloklarını kullanın:

/var/log/nginx/*.log {
    ...
    prerotate
        echo "Log dosyaları döndürülmeden önce yapılacak işlemler"
    endscript
    
    postrotate
        /usr/sbin/nginx -s reload
    endscript
}

Kullanım alanları:

  • Uygulamaları yeniden yükleme
  • Log dosyalarını başka bir dizine taşımak
  • Log dosyalarını analiz etmek

2. Logrotate ile Özel Dosya Dizinleri

Belirli bir dizindeki tüm log dosyalarını yönetmek için joker karakterler kullanın:

/var/log/uygulama/*.log {
    ...
}

/var/log/uygulama/subdir/*.log {
    ...
}

3. Logrotate ile SSH Loglarını Yönetme

SSH loglarını yönetmek için /etc/logrotate.d/sshd dosyasını düzenleyin:

# /etc/logrotate.d/sshd
/var/log/auth.log {
    weekly
    rotate 4
    compress
    delaycompress
    missingok
    notifempty
    create 640 root adm
}

📊 Disk Doluluğunu Önlemek için Logrotate Stratejileri

SenaryoÖnerilen YapılandırmaAçıklama
Web Sunucusu (Apache/Nginx)daily, rotate 30, compressGünlük logları sıkıştırarak sakla
Uygulama Loglarısize 100M, rotate 14, delaycompressBoyut tabanlı döndürme
Sistem Loglarıweekly, rotate 52, create 640 root admUzun süreli arşivleme
Güvenlik Loglarıdaily, rotate 90, compressKritik logları uzun süre sakla
Geçici Loglarsize 50M, rotate 7Kısa süreli saklama

⚠️ Sık Yapılan Hatalar ve Çözümleri

1. Logrotate’un Çalışmaması

Problem: Logrotate’un çalışmadığını fark ediyorsunuz.

Çözüm:

  • Logrotate’un cron job’unu kontrol edin:
    sudo cat /etc/cron.daily/logrotate
  • Logrotate’un sistem loglarını kontrol edin:
    sudo journalctl -u logrotate.timer
  • Elle çalıştırarak test edin:
    sudo logrotate -v /etc/logrotate.conf

2. Log Dosyalarının Sıkıştırılmaması

Problem: Log dosyaları sıkıştırılmıyor.

Çözüm:

  • compress ve delaycompress seçeneklerini doğru şekilde kullanın
  • Sıkıştırma için gzip veya xz kullanılabilir:
    compresscmd /usr/bin/gzip
    uncompresscmd /usr/bin/gunzip

3. Disk Doluluğunun Devam Etmesi

Problem: Logrotate çalışıyor ama disk doluluğu devam ediyor.

Çözüm:

  • Logrotate’un hangi log dosyalarını yönetmediğini kontrol edin:
    sudo logrotate -d /etc/logrotate.conf
  • Kritik log dosyalarını manuel olarak ekleyin
  • Logrotate’un çalışma sıklığını artırın (örneğin, daily yerine size 50M)

📝 Sonuç: Logrotate ile Disk Yönetimini Nasıl Optimize Edersiniz?

Logrotate, Linux sistemlerinde log yönetimini otomatikleştirmenin ve disk doluluğunu önlemenin en etkili yoludur. Bu rehberde öğrendiğiniz gibi:

  1. Logrotate’un temel yapılandırmasını (/etc/logrotate.conf) anladınız.
  2. Özel log dosyaları için yapılandırmalar oluşturmayı öğrendiniz.
  3. Logrotate’un çalışma prensibini (döndürme, sıkıştırma, arşivleme) kavradınız.
  4. Disk doluluğunu önlemek için 5 kritik adımı uyguladınız.
  5. Gelişmiş kullanım tekniklerini (postrotate scriptleri, özel dosya dizinleri) keşfettiniz.

🔄 Uygulama Özeti

  1. Logrotate’u kurun (varsayılan olarak çoğu sistemde yüklüdür).
  2. Ana yapılandırma dosyasını (/etc/logrotate.conf) düzenleyin.
  3. Özel log dosyaları için yapılandırma dosyaları oluşturun (/etc/logrotate.d/).
  4. Logrotate’un çalışmasını test edin (-d ve -v seçenekleriyle).
  5. Disk kullanımını izleyin ve gerektiğinde ayarları güncelleyin.

🚀 İleri Seviye İpuçları

  • Logrotate’u systemd timer ile çalıştırın (örneğin, logrotate.timer).
  • Log dosyalarını farklı bir dizine taşımak için olddir seçeneğini kullanın.
  • Log dosyalarını analiz etmek için logrotate sonrası scriptler yazın.
  • Disk kullanımını izlemek için Prometheus + Grafana entegrasyonu yapın.

📚 Kaynaklar ve İleri Okuma


Son Söz: Logrotate, sistem yöneticilerinin en değerli araçlarından biridir. Disk doluluğunu önlemek, log yönetimini otomatikleştirmek ve sistem performansını korumak için Logrotate’u doğru şekilde kullanmayı öğrenin. Bu rehberdeki adımları uygulayarak, log yönetimini sisteminizin sürdürülebilirliği için optimize edebilirsiniz.

💡 Hatırlatma: Logrotate’un çalışmasını düzenli olarak kontrol edin ve disk kullanımını izleyin. Unutmayın, önlemek tedavi etmekten daha iyidir!


Bu yazı Mistral ile otomatik oluşturulmuştur.