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ı.
Ö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.
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.
# 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ı
# 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ı
# 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/
# /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
# 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, log dosyalarını otomatik olarak döndüren (rotate), sıkıştıran ve silen bir araçtı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 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
# 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
}
# 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
}
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 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
# 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 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.
# 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
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.
logrotate varsayılan olarak /etc/cron.daily/ içindeki script ile günlük çalışır. Ancak her uygulama kendi yapılandırmasında farklı sıklık belirleyebilir (daily, weekly, monthly). 'sudo logrotate --debug /etc/logrotate.conf' ile ne zaman çalışacağını simüle edebilirsiniz.
Önce 'df -h' ile disk durumunu, 'du -sh /var/log/* | sort -rh' ile büyük log dosyalarını kontrol edin. Ardından 'sudo journalctl --vacuum-time=3days' ile eski journal loglarını temizleyin. 'sudo logrotate --force /etc/logrotate.conf' ile logrotate'i zorla çalıştırın.
journald logları /run/log/journal/ (geçici, RAM'de) veya /var/lib/systemd/journal/ (kalıcı, diskte) konumunda saklanır. /etc/systemd/journald.conf dosyasında 'Storage=persistent' ayarı ile kalıcı depolamayı etkinleştirebilirsiniz.
'sudo logrotate --debug /etc/logrotate.d/nginx' komutu ile yapılandırmayı simüle edebilirsiniz. Bu komut gerçek işlem yapmadan ne olacağını gösterir. '--force' ile gerçek döndürme işlemini zorla başlatabilirsiniz.
Önce log seviyesini kontrol edin: DEBUG seviyesi çok fazla log üretir, üretimde INFO veya WARNING kullanın. logrotate yapılandırmasında 'daily' ve 'rotate 7' ile günlük döndürme ve 7 günlük saklama ayarlayın. Ayrıca 'size 100M' ile boyut bazlı döndürme ekleyebilirsiniz.
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 Server VDS sunucunuza Uzak Masaüstü (RDP) ile bağlanma adımları, NLA güvenlik ayarları, Path Panel firewall kuralı ve sorun giderme rehberi.
REXE panel üzerinden VDS sunucunuzun işletim sistemini değiştirme adımları, yedekleme önerileri, desteklenen Linux ve Windows Server sürümleri.