Log Yönetimi: logrotate ile Disk Dolmasını Önleme
Önemli log konumları, logrotate yapılandırması, journald boyut sınırları, büyük log dosyalarını bulma ve log analizi temelleri. Linux sunucularda disk dolmasını önleme rehberi.
İçindekiler
Log Yönetimi: logrotate ile Disk Dolmasını Önleme
Log dosyaları, sistem sorunlarını teşhis etmek ve güvenlik olaylarını izlemek için vazgeçilmezdir. Ancak yönetilmezlerse disk alanını doldurarak sistem çökmelerine neden olabilirler. Bu rehberde önemli log konumlarını, logrotate yapılandırmasını, journald boyut yönetimini ve büyük log dosyalarını nasıl bulacağınızı öğreneceksiniz.
Önemli Log Konumları
Sistem Log Dosyaları
# Ana sistem log dizini
ls -lh /var/log/
# Önemli log dosyaları:
# /var/log/syslog — Genel sistem mesajları (Debian/Ubuntu)
# /var/log/messages — Genel sistem mesajları (RHEL/CentOS)
# /var/log/auth.log — Kimlik doğrulama logları (Debian/Ubuntu)
# /var/log/secure — Kimlik doğrulama logları (RHEL/CentOS)
# /var/log/kern.log — Kernel mesajları
# /var/log/dmesg — Boot mesajları
# /var/log/boot.log — Sistem başlangıç logları
# /var/log/cron — Cron job logları
# /var/log/mail.log — Mail sunucu logları
# /var/log/dpkg.log — Paket kurulum logları (Debian/Ubuntu)
# /var/log/apt/ — APT işlem logları
Uygulama Log Dosyaları
# Web sunucusu logları
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/apache2/access.log
/var/log/apache2/error.log
# Veritabanı logları
/var/log/mysql/error.log
/var/log/postgresql/
# Systemd journal
journalctl # Tüm journal logları
Log Dosyalarını İzleme
# Gerçek zamanlı log takibi
tail -f /var/log/syslog
tail -f /var/log/nginx/access.log
# Son 100 satır
tail -n 100 /var/log/auth.log
# Belirli kelimeyi ara
grep "ERROR" /var/log/nginx/error.log
grep "Failed password" /var/log/auth.log
# Tarih aralığında ara
grep "Jan 15" /var/log/syslog
# Birden fazla dosyada ara
grep -r "error" /var/log/nginx/
Disk Alanı Analizi
Büyük Log Dosyalarını Bulma
# /var/log altındaki en büyük dosyaları bul
du -sh /var/log/* | sort -rh | head -20
# Tüm sistemde büyük dosyaları bul (100MB+)
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
# /var/log altında 50MB'dan büyük dosyalar
find /var/log -type f -size +50M -exec ls -lh {} \;
# Disk kullanımını kontrol et
df -h
# Dizin boyutlarını görüntüle
du -sh /var/log/
du -sh /var/log/* | sort -rh
Anlık Log Boyutu Kontrolü
# Tüm log dosyalarının toplam boyutu
du -sh /var/log/
# Journald disk kullanımı
journalctl --disk-usage
# Nginx log boyutları
ls -lh /var/log/nginx/
logrotate Yapılandırması
logrotate, log dosyalarını otomatik olarak döndüren (rotate), sıkıştıran ve silen bir araçtır.
logrotate Nasıl Çalışır?
# logrotate genellikle cron ile günlük çalışır
cat /etc/cron.daily/logrotate
# Manuel çalıştırma
sudo logrotate /etc/logrotate.conf
# Belirli bir yapılandırma dosyası ile
sudo logrotate /etc/logrotate.d/nginx
# Simülasyon modu (gerçek işlem yapmaz)
sudo logrotate --debug /etc/logrotate.conf
# Zorla döndür (son döndürmeden bu yana süre dolmamış olsa bile)
sudo logrotate --force /etc/logrotate.d/nginx
Ana logrotate Yapılandırması
# Ana yapılandırma dosyası
sudo nano /etc/logrotate.conf
# Varsayılan ayarlar
weekly # Haftalık döndür
rotate 4 # 4 eski sürüm tut
create # Döndürmeden sonra yeni dosya oluştur
compress # Eski logları sıkıştır
delaycompress # Son döndürülen logu sıkıştırma
include /etc/logrotate.d # Uygulama yapılandırmalarını dahil et
Uygulama Özel logrotate Yapılandırması
# Nginx için logrotate yapılandırması
sudo nano /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily # Günlük döndür
missingok # Dosya yoksa hata verme
rotate 14 # 14 günlük log tut
compress # Sıkıştır
delaycompress # Son logu sıkıştırma (nginx hâlâ yazıyor olabilir)
notifempty # Boş dosyayı döndürme
create 0640 www-data adm # Yeni dosya izinleri
sharedscripts # Tüm dosyalar için bir kez çalıştır
postrotate
# Nginx'e yeni log dosyasını kullanmasını söyle
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
# MySQL için logrotate
sudo nano /etc/logrotate.d/mysql-server
/var/log/mysql/*.log {
daily
rotate 7
missingok
compress
delaycompress
notifempty
create 640 mysql adm
postrotate
test -x /usr/bin/mysqladmin || exit 0
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
exit 0
fi
$MYADMIN flush-logs
endscript
}
Özel Uygulama için logrotate
# Kendi uygulamanız için logrotate yapılandırması
sudo nano /etc/logrotate.d/myapp
/var/log/myapp/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0644 www-data www-data
dateext # Tarih uzantısı kullan (myapp.log-20240115.gz)
dateformat -%Y%m%d
postrotate
systemctl reload myapp 2>/dev/null || true
endscript
}
journald Boyut Yönetimi
Systemd journald, tüm sistem loglarını merkezi olarak toplar ve disk alanı yönetimi gerektirir.
# Mevcut journal boyutunu kontrol et
journalctl --disk-usage
# Eski logları temizle (2 haftadan eski)
sudo journalctl --vacuum-time=2weeks
# Boyut sınırı ile temizle (500MB'dan fazlasını sil)
sudo journalctl --vacuum-size=500M
# Belirli sayıda dosya tut
sudo journalctl --vacuum-files=5
journald Kalıcı Yapılandırması
# journald yapılandırma dosyasını düzenle
sudo nano /etc/systemd/journald.conf
[Journal]
# Maksimum disk kullanımı
SystemMaxUse=500M
# Minimum boş disk alanı
SystemKeepFree=1G
# Maksimum dosya boyutu
SystemMaxFileSize=50M
# Log saklama süresi
MaxRetentionSec=2weeks
# Sıkıştırma
Compress=yes
# Kalıcı depolama (disk)
Storage=persistent
# Yapılandırmayı uygula
sudo systemctl restart systemd-journald
Log Analizi Temelleri
Hata ve Uyarı Analizi
# Nginx hata loglarını analiz et
grep -c "error" /var/log/nginx/error.log # Hata sayısı
grep "error" /var/log/nginx/error.log | tail -20 # Son hatalar
# SSH brute force girişimlerini tespit et
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -10
# En çok istek yapan IP'leri bul
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# HTTP durum kodlarını say
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# Systemd journal'dan hataları filtrele
journalctl -p err --since "1 hour ago"
Log Boyutu İzleme Scripti
# Log boyutlarını izleyen basit script
cat > /usr/local/bin/check-logs.sh << 'EOF'
#!/bin/bash
LOG_DIR="/var/log"
THRESHOLD=1073741824 # 1GB in bytes
echo "=== Log Boyutu Raporu ==="
echo "Tarih: $(date)"
echo ""
# Büyük log dosyalarını bul
find $LOG_DIR -type f -size +100M -exec ls -lh {} \; 2>/dev/null
# Toplam boyut
echo ""
echo "Toplam /var/log boyutu: $(du -sh $LOG_DIR | cut -f1)"
echo "Disk kullanımı:"
df -h /
EOF
chmod +x /usr/local/bin/check-logs.sh
# Cron ile günlük çalıştır
echo "0 8 * * * root /usr/local/bin/check-logs.sh | mail -s 'Log Raporu' admin@example.com" >> /etc/crontab
Log yönetimini otomatikleştirin: logrotate yapılandırmasını düzenli gözden geçirin, journald boyut sınırlarını ayarlayın ve disk kullanımını izleyen alertler kurun.
Acil Durum: Disk Doldu
# Disk dolduğunda hızlı müdahale
# 1. Disk durumunu kontrol et
df -h
# 2. En büyük dosyaları bul
du -sh /var/log/* | sort -rh | head -10
# 3. Eski journal loglarını temizle
sudo journalctl --vacuum-time=3days
# 4. Sıkıştırılmamış eski logları sıkıştır
find /var/log -name "*.log.*" ! -name "*.gz" -exec gzip {} \;
# 5. Logrotate'i zorla çalıştır
sudo logrotate --force /etc/logrotate.conf
# 6. Geçici dosyaları temizle
sudo apt clean # Ubuntu/Debian
sudo dnf clean all # RHEL/CentOS
Sonuç
Etkili log yönetimi, disk dolması sorunlarını önler ve sistem güvenilirliğini artırır. logrotate ile otomatik döndürme, journald boyut sınırları ve düzenli log analizi ile REXE sunucularınızı sağlıklı tutabilirsiniz. Disk kullanımını düzenli izleyerek sorunları önceden tespit edin.
İlgili Makaleler
VDS Sunucuya SSH ile Bağlanma Rehberi (PuTTY & Terminal)
Linux VDS sunucunuza SSH ile bağlanma adımları: PuTTY, Terminal, anahtar tabanlı kimlik doğrulama, Path Panel firewall kuralı ve güvenlik ipuçları.
Windows VDS'e RDP ile Bağlanma ve Güvenlik Rehberi
Windows Server VDS sunucunuza Uzak Masaüstü (RDP) ile bağlanma adımları, NLA güvenlik ayarları, Path Panel firewall kuralı ve sorun giderme rehberi.
VDS Sunucu İşletim Sistemi Değiştirme Rehberi (Reinstall)
REXE panel üzerinden VDS sunucunuzun işletim sistemini değiştirme adımları, yedekleme önerileri, desteklenen Linux ve Windows Server sürümleri.