Bugün pek çok web uygulaması birden fazla sunucu üzerinde hizmet vermektedir. Bu sunucular arasında yük dağılımı ise çeşitli şekillerde yapılabilmektedir:
Yük dağıtım cihazları ve ARR'nin ortak bir sorunu var: We sunuculara yönlendirdikleri isteklerde istemci IP adresi yerine kendi IP'lerini gönderirler. Elbette yapacağımız ayarlarla bunu kapatabiliriz. Ancak kapatırsak bu cihazların/madülün sağlayacağı pek çok hizmetten ve özellikten de mahrum kalıyoruz.
Sunucu loglarında istemci IP adreslerinin bulunması çoğu zaman zaruridir. Bun göre istatistiki veriler çıkarabileceğimiz gibi, geçmişe dönük güvenlik taramaları da yapabiliriz. Veya belirli bir kullanıcının yaşadığı sorunların nedenini araştırırken de bu bilgiye ihtiyacımız olacaktır. Yük dağıtım cihazları da, yukarıdaki soruna çözüm için, istemci IP adresini sunucuya bir "header" ile gönderebilmektedirler. Hatta genel kabul görmüş "header" adı olarak da "X-Forwarded-For" kullanılır.
Burada bir sonraki sorun, "X-Forwarded-For" "header"ı ile gelen bu bilgiyi IIS loglarına kaydetmektir. IIS 6.0 ve öncesinde bu iş için yük dağıtıcı cihaz firmalarının sağladığı veya Internet'te örnek kodlarını bulabileceğiniz "ISAPI filter"lar kullanılıyordu. Ancak IIS 7.0'dan itibaren mimari değiştiği için bunları kullanma şansımız kalmadı. İşte bu noktada "Advanced Logging" modülü devreye giriyor. Daha önceki bir yazımda kısaca bahsettiğim bu modülü kullanarak istediğiniz hemen her şeyin IIS loglarına kaydedilmesini sağlayabilirsiniz. Elbette buna istek "header"ları da dahildir. Bunun için izlemeniz gereken adımlar aşağıdaki gibidir:
Tüm bu tanımlardan sonra, IIS'in kendi loglarının yanısıra bu loglar da tutulmaya başlayacaktır. İhtiyaçlarınıza bağlı olarak IIS'in loglarını kapatabilir, ya da her ikisinin de tutulmasını sağlayabilirsiniz.
Advanced Logging, IIS loglarının aksine kernel modda yazılmadığı için, direkt "kernel cache"ten yanıtlanan veya kernel seviyesinden bloklanan istekler bu loglarda bulunmayacaktır.
Son olarak şunu da belirtmek lazım: Bu şekilde tutacağınız loglar da W3C formatında olacağından Log Parser ile inceleme şansınız olacaktır.
NOT: Yukarıda bahsettiklerim, "Advanced Logging" modülü ile gelen özelliklerden sadece biri ("Custom logging"). Diğer ilginç ve faydalı olabilecek özellikleri "Request Filtering", "Real-time logging" ve "Client logging"dir. Bunlarla ilgili detaylı bilgileri aşağıdaki linklerden bulabilirsiniz:
Advanced Logginghttp://technet.microsoft.com/en-us/library/ee791852(WS.10).aspx
Advanced Logginghttp://www.iis.net/download/AdvancedLogging
CENK ISCAN