Linux sunucularında log analizi, sistem sağlığını izlemek, güvenlik olaylarını tespit etmek ve performans sorunlarını gidermek için vazgeçilmez bir süreçtir.
Linux sunucularında log analizi, sistem sağlığını izlemek, güvenlik olaylarını tespit etmek ve performans sorunlarını gidermek için vazgeçilmez bir süreçtir. Sunucu logları, sistem etkinliklerinin detaylı kayıtlarını tutar ve bu verilerle proaktif yönetim yapılabilir. Bu makalede, Linux tabanlı sunucularda log dosyalarına erişimden başlayarak temel ve gelişmiş analiz tekniklerini adım adım ele alacağız. Kurumsal ortamlar için pratik yaklaşımlar sunarak, sistem yöneticilerinin verimli bir şekilde logları inceleyebilmesini sağlayacağız.
Linux sistemlerinde log dosyaları genellikle /var/log dizini altında saklanır ve rsyslog veya systemd-journald gibi servisler tarafından yönetilir. Yaygın log türleri arasında sistem genel olaylarını kaydeden syslog veya messages, kimlik doğrulama etkinliklerini izleyen auth.log, web sunucusu erişimlerini tutan access.log ve hata logları yer alır. Bu dosyaları anlamak, analiz sürecinin temelini oluşturur. Örneğin, Apache veya Nginx gibi web sunucularında /var/log/apache2/ veya /var/log/nginx/ dizinlerini kontrol etmek gerekir.
Log dosyalarının boyutunu yönetmek için logrotate aracı kullanılır. Bu araç, dosyaları periyodik olarak sıkıştırır, eski kayıtları arşivler ve yer tasarrufu sağlar. Kurumsal sunucularda, logrotate konfigürasyonunu /etc/logrotate.conf ve /etc/logrotate.d/ dizininden inceleyerek özelleştirebilirsiniz. Pratik bir adım olarak, logrotate -d /etc/logrotate.conf komutuyla simülasyon yapın; bu, gerçek döndürme olmadan konfigürasyonu test eder ve hataları önler. Log seviyelerini systemd ile ayarlamak için journalctl kullanın, örneğin journalctl -p err -b ile yalnızca hata seviyesi logları filtreleyin.
/var/log/syslog: Genel sistem olayları./var/log/auth.log: Giriş denemeleri ve sudo etkinlikleri./var/log/kern.log: Çekirdek mesajları.Bu temellerle, log yönetimini standartlaştırarak sunucu güvenilirliğini artırabilirsiniz. Her log dosyasının timestamp, PID ve mesaj yapısını anlamak, sonraki analiz adımlarını hızlandırır.
tail komutu, log dosyasının son satırlarını görüntüleyerek gerçek zamanlı izleme sağlar. tail -f /var/log/syslog ile dosyayı takip edin; yeni girişler ekrana yansır. Grep ile filtreleme yaparak belirli olayları arayın, örneğin grep "error" /var/log/apache2/error.log hatayı içeren satırları listeler. Bu kombinasyon, acil sorunlarda dakikalar içinde teşhis koyar. Gerçek zamanlı analiz için tail -f | grep "denied" gibi pipe’lar kullanın; başarısız erişim denemelerini anında yakalar.
İleri filtreleme için regex ekleyin: grep -E "Failed password|Invalid user" /var/log/auth.log. Bu, brute-force saldırılarını tespit eder. Sonuçları saymak için grep -c kullanın ve sort -n | uniq -c | sort -nr ile en sık olayları sıralayın. Kurumsal olarak, bu komutları alias’lara dönüştürerek shell profilinize ekleyin, böylece tekrarlanan analizler hızlanır.
Awk, log satırlarını ayrıştırarak istatistik üretir. Örneğin, IP adreslerini saymak için awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr; en aktif IP’leri listeler. Sed ile arama-değiştirme yapın: sed -i 's/old/new/g' log_dosya, ancak yedek alın. Zaman bazlı analizde awk -v date=$(date -d '1 hour ago' +%Y-%m-%d) '$0 ~ date {print}' son saat loglarını filtreler.
Bu araçlar, ham veriyi anlamlı bilgiye dönüştürür. Web trafiği için awk '{print $7}' access.log | cut -d? -f1 | sort | uniq -c | sort -nr en çok erişilen URL’leri gösterir. Pratik takeaway: Script’lere entegre edin, örneğin günlük rapor için cron job kurun.
Gelişmiş analizde, birden fazla logu birleştirin: zcat /var/log/syslog.*.gz | grep "critical" sıkıştırılmış arşivleri tarar. Fail2ban gibi araçlar, logları otomatik tarar ve IP’leri banlar. Konfigürasyonunda [sshd] bölümünü etkinleştirin; fail2ban-client status sshd ile durumu kontrol edin. Journalctl ile binary journal’ları yönetin: journalctl --since "2023-10-01" --until "2023-10-02" -u apache2 belirli servis ve zaman aralığı loglarını çeker.
Otomasyon için Bash script yazın. Örnek script: Logları tarar, hataları mail atar.
#!/bin/bash
LOG=/var/log/syslog
ERRORS=$(grep "ERROR" $LOG | wc -l)
if [ $ERRORS -gt 10 ]; then
echo "Yüksek hata sayısı: $ERRORS" | mail -s "Log Uyarısı" [email protected]
fi
Bu script’i crontab -e ile saatte bir çalıştırın: 0 * * * * /path/to/script.sh. Grafik araçlar için GoAccess kullanın: goaccess access.log -o report.html --log-format=COMBINED; trafiği görselleştirir. ELK Stack (Elasticsearch, Logstash, Kibana) kurumsal ölçekte önerilir, ancak temel kurulum Logstash konfigürasyonuyla başlar.
Sunucu log analizi, düzenli pratikle ustalaşılacak bir beceridir. Temel komutları hakimiyetle birleştirerek, proaktif izleme yapın; otomasyonla zaman kazanın. Bu yaklaşımlar, sistem kesintilerini minimize eder ve kurumsal güvenliği güçlendirir. Sürekli öğrenerek log verilerinden maksimum değeri çıkarın.