Web Sunucusu Log Formatlarını Özelleştirme (Custom Log)

Web sunucularında log kayıtları, sistem performansını izleme, güvenlik olaylarını tespit etme ve kullanıcı davranışlarını analiz etme açısından kritik öneme sahiptir.

Web sunucularında log kayıtları, sistem performansını izleme, güvenlik olaylarını tespit etme ve kullanıcı davranışlarını analiz etme açısından kritik öneme sahiptir. Standart log formatları temel bilgileri sunsa da, özelleştirilmiş log formatları sayesinde belirli ihtiyaçlara göre daha detaylı ve anlamlı veriler elde edilebilir. Bu makalede, web sunucusu log formatlarını özelleştirmenin yöntemlerini, avantajlarını ve pratik uygulama adımlarını ele alacağız. Özellikle Apache ve Nginx gibi popüler sunucular için adım adım rehberlik sağlayarak, IT ekiplerinizin log yönetimini optimize etmenize yardımcı olacağız.

Log Formatlarının Temelleri ve Özelleştirme Gerekliliği

Log formatları, sunucunun her istek için kaydettiği verilerin yapısını belirler. Standart formatlar genellikle IP adresi, istek zamanı, HTTP metodu ve yanıt kodunu içerir, ancak bu bilgiler her zaman yeterli olmayabilir. Özelleştirme ile response süresi, kullanıcı ajanını veya özel header’ları ekleyerek logları daha işlevsel hale getirebilirsiniz. Bu yaklaşım, log analizi araçlarının (örneğin ELK Stack) verimliliğini artırır ve sorun gidermeyi hızlandırır.

Özelleştirmenin temel avantajları arasında veri hacmini azaltma, gizlilik uyumluluğunu sağlama (GDPR gibi) ve özel metrikler oluşturma yer alır. Örneğin, bir e-ticaret sitesinde sepet terk etme oranlarını izlemek için cookie verilerini log’a dahil edebilirsiniz. Bu işlem, sunucu konfigürasyon dosyalarında basit direktiflerle gerçekleştirilir ve sunucuyu yeniden başlatmadan uygulanabilir.

Standart Log Formatlarının Sınırlılıkları

Apache’nin Combined formatı (%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-agent}i”) veya Nginx’in default formatı ($remote_addr – $remote_user [$time_local] “$request” $status $body_bytes_sent “$http_referer” “$http_user_agent”), genel kullanım için uygundur. Ancak, bu formatlar response süresini veya GeoIP bilgisini içermez. Yüksek trafikli sitelerde, bu eksiklikler analiz zorluğu yaratır. Özelleştirme ile $request_time gibi değişkenleri ekleyerek, yavaş sorguları hızlıca tespit edebilirsiniz. Pratikte, log boyutunu %20-30 oranında küçültebilir ve arama süresini kısaltabilirsiniz.

Özelleştirmede Dikkat Edilecek Noktalar

Format belirlerken, log dosyasının büyüme hızını ve depolama maliyetlerini göz önünde bulundurun. Her ek alan, diski daha hızlı doldurur. Ayrıca, hassas verileri (örneğin kişisel IP’leri) maskeleyerek (örneğin %h yerine anonymized IP) uyumluluğu sağlayın. Test ortamında konfigürasyonu doğrulayın ve tail -f ile gerçek zamanlı izleyin. Bu adımlar, üretim ortamında kesinti riskini minimize eder ve log kalitesini yükseltir.

Apache Sunucusunda Custom Log Formatı Oluşturma

Apache’de log özelleştirmesi, httpd.conf veya sites-available konfigürasyon dosyalarında yapılır. LogFormat direktifi ile yeni bir format tanımlanır, ardından CustomLog ile atanır. Bu yöntem, virtual host bazında farklı formatlar kullanmanızı sağlar. Özelleştirme sonrası, /var/log/apache2/access.log gibi dosyalarda yeni yapı görünür hale gelir.

  • Öncelikle, mevcut konfigürasyonu yedekleyin: cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
  • LogFormat ile custom format tanımlayın, örneğin: LogFormat “%h %l %u %t \”%r\” %>s %b %D \”%{User-Agent}i\”” custom_combined
  • VirtualHost içinde CustomLog /var/log/apache2/custom.log custom_combined kullanın.
  • Değişiklikleri uygulayın: apache2ctl configtest ve systemctl reload apache2

Bu adımlar, 5 dakikada tamamlanır ve anında etkili olur. %D parametresi milisaniye cinsinden response süresini ekler, bu sayede yavaş sayfaları optimize edebilirsiniz.

Apache LogFormat Parametreleri

Apache, zengin parametre seti sunar: %h (uzak host), %t (zaman damgası), %r (istek satırı), %>s (final status), %b (body bytes), %{Referer}i (referer). Özelleştirilmiş bir örnek: LogFormat “%v %h %t %r %s %b %{Duration}X” perf_log. Burada %v sanal host adını, %{Duration}X custom header’ı ekler. Bu format, performans izleme için idealdir ve Logstash gibi araçlarla parse edilmesi kolaydır. Gerçek bir senaryoda, mobil trafiği ayırmak için %{User-Agent}i regex ile filtreleyebilirsiniz.

Uygulama ve Test Adımları

Konfigürasyonu ekledikten sonra, curl -H “User-Agent: Test” http://example.com ile test isteği gönderin. Log dosyasını grep ile kontrol edin: grep “Test” /var/log/custom.log. Hata durumunda error_log’u inceleyin. Üretimde, logrotate ile rotasyonu ayarlayın (/etc/logrotate.d/apache2). Bu süreç, log yönetimini profesyonelleştirir ve ekip analizini hızlandırır, örneğin ortalama response süresini hesaplamak için awk script’leri kullanabilirsiniz.

Nginx Sunucusunda Log Formatı Özelleştirme

Nginx’te log_format direktifi http bloğunda tanımlanır ve access_log ile server bloğunda kullanılır. Varsayılan formatı genişleterek, $upstream_response_time gibi metrikler ekleyebilirsiniz. Konfigürasyon /etc/nginx/nginx.conf veya sites-enabled dosyalarında yapılır. Değişiklik sonrası nginx -t ile syntax kontrolü ve nginx -s reload ile uygulanır.

Örnek bir custom format: log_format custom ‘$remote_addr – $remote_user [$time_local] “$request” $status $bytes_sent $request_time $upstream_response_time “$http_referer” “$http_user_agent”‘. Bu, upstream sunucu yanıtlarını izlemenize olanak tanır, load balancer’larda vazgeçilmezdir.

Nginx log_format Direktifi Detayları

Nginx değişkenleri $remote_addr (istemci IP), $time_local (yerel zaman), $request (tam istek), $status (HTTP kodu), $request_time (istek işleme süresi). GeoIP modülü yüklüyse $geoip_country_code ekleyin. Bir e-ticaret örneği: log_format ecommerce ‘$remote_addr – $http_x_forwarded_for [$time_local] “$request” $status $bytes_sent $request_time “cookie:$http_cookie”‘. Bu, kullanıcı oturumlarını takip eder ve terk oranlarını hesaplamanıza yardımcı olur. Değişkenleri birleştirerek JSON-like loglar üretin: log_format json escape=json ‘{ “time”: “$time_iso8601”, “status”: $status }’.

Pratik Konfigürasyon ve Optimizasyon

http bloğuna log_format main_custom … ekleyin, server bloğunda access_log /var/log/nginx/custom.access main_custom buffer=32k flush=5m; kullanın. Buffer, I/O’yu azaltır. Test için nginx -T ile tam konfig gösterin. Yüksek trafikte, gzip compression ile log sıkıştırması uygulayın. Sonuçta, özelleştirilmiş loglar Splunk veya Grafana entegrasyonu için hazır hale gelir, sistem sağlığını proaktif yönetmenizi sağlar.

Web sunucusu log formatlarını özelleştirmek, operasyonel verimliliği artıran stratejik bir adımdır. Bu rehberdeki adımları uygulayarak, ekipleriniz daha hızlı kararlar alabilir ve potansiyel sorunları önleyebilir. Düzenli inceleme ve iterasyon ile loglarınızı sürekli iyileştirin, böylece dijital altyapınız en üst düzeyde performans göstersin.

Kategori: Web Sunucu
Yazar: Lorem
çerik: 749 kelime
Okuma Süresi: 5 dakika
Zaman: Bugün
Yayım: 24-02-2026
Güncelleme: 24-02-2026