Linux’ta Sunucu Log Analizi Nasıl Yapılır?

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.

Reklam Alanı

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 Sunucu Log Dosyalarının Temelleri

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.

Temel Log Analizi Komutları ve Teknikleri

Tail ve Grep ile Hızlı İnceleme

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 ve Sed ile Veri İşleme

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ş Log Analizi ve Otomasyon

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.

Yazar: Meka
İçerik: 617 kelime
Okuma Süresi: 5 dakika
Zaman: Bugün
Yayım: 21-03-2026
Güncelleme: 21-03-2026
Benzer İçerikler
Faydalı İçerikler kategorisinden ilginize çekebilecek benzer içerikler