Linux Sunucuda Nginx Log Analizi

Linux sunucularda Nginx web sunucusu, yüksek performanslı ve ölçeklenebilir yapısıyla popüler bir tercihtir.

Reklam Alanı

Linux sunucularda Nginx web sunucusu, yüksek performanslı ve ölçeklenebilir yapısıyla popüler bir tercihtir. Ancak, sunucunun sağlıklı çalışmasını sağlamak için log dosyalarının düzenli analizi kritik öneme sahiptir. Nginx log analizi, erişim paternlerini anlamak, hataları tespit etmek, güvenlik tehditlerini önlemek ve performans sorunlarını gidermek amacıyla gerçekleştirilir. Bu makalede, Linux tabanlı bir sunucuda Nginx loglarını etkili bir şekilde analiz etmenin adım adım yöntemlerini inceleyeceğiz. Temel dosya yapılarını tanıyarak başlayıp, pratik komutlar ve araçlarla derinlemesine inceleme yapacağız. Bu rehber, sistem yöneticilerine somut araçlar sunarak, sunucu yönetimini daha verimli hale getirmeyi hedeflemektedir.

Nginx Log Dosyalarının Yapısı ve Konumu

Nginx log dosyaları, varsayılan olarak /var/log/nginx/ dizini altında bulunur. Erişim logu (access.log), her HTTP isteğini kaydederken, hata logu (error.log) sunucu hatalarını ve uyarıları içerir. Erişim logunun standart formatı, log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'; şeklinde tanımlanır. Bu format, IP adresi, zaman damgası, istek metodu, URI, yanıt kodu ve bayt miktarını kapsar. Hata logu ise seviyeleri (debug, info, notice, warn, error, crit, alert, emerg) ile yapılandırılır.

Log dosyalarının konumunu doğrulamak için nginx -t komutunu çalıştırın ve yapılandırma dosyasını (/etc/nginx/nginx.conf) inceleyin. Log rotasyonu için Logrotate kullanın; /etc/logrotate.d/nginx dosyasında günlük sıkıştırma ve boyut sınırlaması ayarlayın. Bu yapı, büyük ölçekli sunucularda disk alanını yönetmeyi sağlar. Örneğin, tail -n 100 /var/log/nginx/access.log ile son 100 erişimi görüntüleyin ve grep " 404 " /var/log/nginx/access.log | wc -l ile 404 hatalarının sayısını hesaplayın. Bu temel adımlar, log yönetiminin temelini oluşturur ve günlük izlemeyi kolaylaştırır.

Temel Log Analizi Komutları ve Araçları

Grep ve Awk ile Filtreleme

Grep komutu, belirli paternleri hızlıca bulmak için idealdir. Örneğin, belirli bir IP’den gelen istekleri analiz etmek üzere grep "192.168.1.100" /var/log/nginx/access.log | awk '{print $7 " " $9}' | sort | uniq -c | sort -nr komutunu kullanın. Bu, URI ve yanıt kodlarını sayar ve en sık görülenleri sıralar. Awk ile sütun bazlı işlem yaparak, awk '{print $1, $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10 ile en aktif IP’leri ve hataları listeleyin. Bu yöntemler, gerçek zamanlı sorun tespiti için etkilidir ve script’lere entegre edilebilir.

Filtreleme sırasında zaman aralığı sınırlayın: grep "01/Oct/2023" /var/log/nginx/access.log. Bu, belirli bir günün loglarını izole eder ve analiz hızını artırır. Pratikte, brute-force saldırılarını tespit için grep " 401 " /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head kullanın; en fazla başarısız girişi yapan IP’leri bloklayın.

GoAccess ve Diğer Araçlar

GoAccess, interaktif bir log analiz aracıdır. Kurulum için sudo apt install goaccess (Debian/Ubuntu) veya sudo yum install goaccess (CentOS) komutlarını çalıştırın. Ardından goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED ile HTML raporu üretin. Bu rapor, benzersiz ziyaretçiler, popüler sayfalar, HTTP kodları ve coğrafi dağılımı görselleştirir. Gerçek zamanlı izleme için goaccess /var/log/nginx/access.log --real-time-html kullanın.

Araç, mobil trafik oranını ve referans kaynaklarını detaylandırır. Nginx yapılandırmasında log_format combined '...' standartını kullanın ki uyumluluk sağlansın. Bu, manuel komutlara göre daha kapsamlı içgörü sunar ve raporlama süreçlerini otomatikleştirir.

Gelişmiş Analiz ve Optimizasyon Teknikleri

Gelişmiş analizde, logları veritabanına aktarın veya ELK Stack (Elasticsearch, Logstash, Kibana) entegre edin. Logstash ile Nginx loglarını parse etmek için input { file { path => "/var/log/nginx/access.log" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { } } konfigürasyonu kullanın. Kibana’da dashboard’lar oluşturarak görselleştirin. Bu yaklaşım, büyük veri hacimlerinde ölçeklenir.

Performans optimizasyonu için yavaş istekleri izleyin: awk '$7 ~ /\/slow_endpoint/ {print}' /var/log/nginx/access.log. Güvenlikte, Fail2Ban ile logları entegre edin; [nginx-http-auth] jail’ini etkinleştirin. Örnek script: #!/bin/bash\nzcat /var/log/nginx/access.log.*.gz | awk '{print $1}' | sort | uniq -c | sort -nr | head -20 > top_ips.txt. Bu script’i cron ile günlük çalıştırın.

Nginx log analizi, proaktif sunucu yönetiminin temel taşıdır. Düzenli inceleme ile kaynak kullanımını optimize edin, güvenlik deliklerini kapatın ve kullanıcı deneyimini iyileştirin. Bu yöntemleri uygulayarak, Linux sunucunuzun verimliliğini maksimize edin ve kesintisiz hizmet sağlayın.

Kategori: Genel
Yazar: Meka
İçerik: 603 kelime
Okuma Süresi: 5 dakika
Zaman: Bugün
Yayım: 16-04-2026
Güncelleme: 16-04-2026