
Logrotate = LOG DOSYALARININ BEKÇİSİ
# 🎯 Ne işe yarar? → “Log dosyalarının büyümesini kontrol eder”
# Gerçek hayat benzetmesi:
# Log dosyaları = Çöp kutuları
# Logrotate = Temizlik görevlisi — dolan çöp kutularını boşaltır
# 🤔 Problem: Log dosyaları sürekli büyüyor
– Disk doluyor
– Dosyalar okunması zor oluyor
– Performans düşüyor
# Çözüm: Logrotate ile logları:
1. Küçük parçalara böl
2. Eskileri sıkıştır
3. Çok eskileri sil
🔧 LOGROTATE’IN 4 BÜYÜK GÖREVİ
1. LOGLARI KÜÇÜK PARÇALARA BÖLMEK
# 📊 “Büyük log dosyasını küçük parçalara ayır”
# Örnek: 10GB’lık log → 10 tane 1GB’lık log
# Neden? → Büyük dosyaları okumak/zor
2. ESKİ LOGLARI SIKIŞTIRMAK
# 🗜️ “Eski logları sıkıştır, yer kazan”
# Örnek: 1GB log → 100MB .gz dosyası
# Neden? → Disk tasarrufu
3. ÇOK ESKİ LOGLARI SİLMEK
# 🗑️ “Bell bir süre geçen logları temizle”
# Örnek: 30 günden eski logları sil
# Neden? → Disk dolmasın
4. LOGLARI YENİDEN OLUŞTURMAK
# 🔄 “Log dosyasını sıfırla, yeniden başlat”
# Örnek: Apache logunu temizle, yeni log tutmaya başla
# Neden? → Sürekli büyümesin
🎯 LOGROTATE NASIL ÇALIŞIR?
# 📅 Günlük cron job’ı:
1. Her gece çalışır
2. Tüm log dosyalarını kontrol eder
3. Kurallara uyanları işler
4. Rapor oluşturur
🔧 TEMEL LOGROTATE AYARLARI
# 📅 Ne sıklıkta rotate yapılacak?
daily # Her gün
weekly # Her hafta
monthly # Her ay
size 100M # 100MB olunca
# Örnek:
/var/log/apache2/access.log {
daily # Her gün rotate yap
}
2. SAKLAMA AYARLARI
# 💾 Kaç eski log saklanacak?
rotate 7 # 7 eski log tut
rotate 30 # 30 eski log tut
# Örnek:
/var/log/apache2/access.log {
rotate 7 # 1 yeni + 7 eski = 8 log dosyası
}
3. SIKIŞTIRMA AYARLARI
# 🗜️ Sıkıştırma yapılsın mı?
compress # Sıkıştır
delaycompress # Bir rotate beklet, sonra sıkıştır
nocompress # Sıkıştırma
# Örnek:
/var/log/apache2/access.log {
compress # .gz yap
}
# 🗜️ Sıkıştırma yapılsın mı?
compress # Sıkıştır
delaycompress # Bir rotate beklet, sonra sıkıştır
nocompress # Sıkıştırma
# Örnek:
/var/log/apache2/access.log {
compress # .gz yap
}
4. DİĞER AYARLAR
# 🔄 Dosyayı nasıl yönetecek?
missingok # Dosya yoksa hata verme
notifempty # Boş dosyayı rotate etme
create 644 root root # Yeni dosyayı oluştur ve izin ver
postrotate # Rotate sonrası komut çalıştır
ÖRNEK
# /etc/logrotate.d/mysql
/var/log/mysql/*.log {
daily
rotate 7
compress
missingok
notifempty
nocreate # MySQL kendi oluştursun
postrotate
/etc/init.d/mysql reload > /dev/null
endscript
}