*W3C: World wide web consortium : http://en.wikipedia.org/wiki/World_Wide_Web_Consortium
*UTC : Coordinated universal time: http://en.wikipedia.org/wiki/Coordinated_Universal_Time
*IIS : Internet informatiın services http://en.wikipedia.org/wiki/Internet_Information_Services
-Son dakika proje kurtartma yazısı değildir.
IIS üzerinde sunulan web/servis uygulamaları için loglamanın faydaları:
-Kullanım (en az/çok ziyaret alan sayfalar, css ve scriptler),
-Performans (yavaş sayfalar [network gecikmeleri dahil]),https://logparserplus.com/examples/
-Hata (Sayfa bulunamadı ve çalışma zamanı hataları gibi)
-Güvenlik (istek bilgilerine göre [query veya header]) hacking girişimleri
Buradaki süreç,
-IIS üzerinde log kaydı tutmak için tanımlar: Konum, içerik formatı, dosya formatı, tarih, büyüklük.
-Log tutulacak alanların yapılacak analiz türüne göre seçimi.
-Standart olmayan durumlar için ekstra geliştirmeler (advanced logging özellikleri)
-Logların analiz edilebilir duruma getirilmesi: Log analizi için kullanılabilecek araç ve yöntemler
-Analiz sürecinde çıkarımlar yapıp icraate dönüştürme.
-Loglardaki http status, win status ve user agent bilgilerini anlamlandırma
IIS üzerinde log kaydı tutmak için tanımlar (configuration)
IIS üzerinden standart log (Logging), Advanced Logging (IIS 7 sonrası extension olarak) ya da Failed Request Tracing Rules ile daha detaylı loglar tutulup analiz edilebilir
Canlı ortamda yüksek trafik varsa web sunuculara yük olmaması açısından loglar Load balancer (Netscaler, F5 vs) üzerinde tanım yapılarak kullanılabilir.
Netscaler üzerindeki ayarlamalar ve hangi bilgilerin tutlabileceği için: http://support.citrix.com/proddocs/topic/ns-system-10-map/ns-ag-wsl-wrapper-con.html
NetScaler makale ve destek sayfası:
http://www.citrix.com/support (NetScaler seçimiyle)
Netscaler log konfigurasyonu
http://support.citrix.com/proddocs/topic/ns-system-10-map/ns-ag-wsl-understand-ncsa-w3c-log-format-con.html
Daha detaylı bir log için (header, server variable bilgisi) geçici olarak IIS log kullanılabilir.
Log tutulacak alanların yapılacak analiz türüne göre seçimi
Standart loglama için kaydı tutulabilecek alanlar;
W3C alanları ve açıklamaları:Date (date)
Time (time)
Client IP Address (c-ip)
User Name (cs-username)
Service Name (s-sitename)
Server Name (s-computername)
Server IP Address (s-ip)
Server Port (s-port)
Method (cs-method)
URI Stem (cs-uri-stem)
URI Query (cs-uri-query)
Protocol Status (sc-status)
Protocol Sub-status (sc-substatus)
Win32 Status (sc-win32-status)
Bytes Sent (sc-bytes)
Bytes Received (cs-bytes)
Time Taken (time-taken)
Protocol Version (cs-version)
Host (cs-host):
User Agent (cs(UserAgent))
Cookie (cs(Cookie))
Referer (cs(Referer))
Açıklamalar için:
http://technet.microsoft.com/en-us/library/cc754702(v=ws.10).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa814385(v=vs.85).aspx
Netsclaler üzerinde log tutulan alanlar aşağıdaki gibi;
#Version: 1.0
#Software: Netscaler Web Logging(NSWL)
#Date: 2014-03-16 00:00:00
#Fields: date time c-ip cs-username sc-servicename s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs-bytes sc-bytes time-taken cs-version cs(User-Agent) cs(Cookie) cs(Referer)
Time değeri UTC ye göredir.
Log başlıklarındaki kısaltmalar:
s- : Server actions.
c- : Client actions.
cs- : Client-to-server actions.
sc-: Server-to-client actions.
IIS 8.5 ile Built-in (standart W3C alanları) haricinde
-Request Header: Örneğin load balancer arkasında olan sunucular için isteği yapanın gerçek IP bilgisi:X-FORWARDED_FOR
-Response Header
-Server Variable : http://msdn.microsoft.com/library/ms524602.aspx
alanları da loglanabilir.
Advanced Logging ile ektra:
-Module (BeginRequestUTC, EndRequestUTC)-Performance Counter
alanları da loglanabilir.
Time Taken ile ilgili görüşler
-(Netscaler üzerinde) Tame taken kolon olarak bulunmasına rağmen 0 olarak tutuluyor.-Tame taken, gelen istediğin header bilgileriyle birlikte alınmasından yanıtın istemcide tamamlandığı ana kadar geçen sürenin milisaniye cinsinden süresidir. Dolayısıyle network üzerinde geçen sürede dahildir ve sunucu taraftalı iyileştirmelerde net iyileştirme bilgileri vermez.
Time taken, ip ve response size a bakarak hız tespiti yapılabilir. İlgili ip ne kadarlık bilgiyi ne kadar sürede almış. İp geolocation tespiti ile ISP ve uzaklık bazında hız raporları oluştrulabilir.
Diğer öneriler.
http://rothmanshore.com/2011/04/22/performance-yes-time-taken-in-iis-includes-network-time/
Geolocation tespiti (detay!):
http://rothmanshore.com/2011/02/25/troubleshooting-akamai-how-to-geolocate-an-ip-address/
Time taken hesaplama mantığı
http://support.microsoft.com/kb/944884/en-us
Ek: Her istek için uygulama üzerinden üretilecek çalışma süresi header bilgisine eklenip loglanması sağlanarak sunucu tarafında uzun süren istekler analiz edilebilir. (Detaylar aşağıda)
Standart olmayan durumlar için ekstra geliştirmeler
IIS 7 ve sonrası yenilikleri, gelişmiş konular
What’s new in IIS 8.5 - Microsoft Internet Information Services 8.5 New Featureshttp://blogs.msdn.com/b/benjaminperkins/archive/2013/06/25/what-s-new-in-iis-8-5.aspx
Advanced Logging: IIS 7 ve sonrası için gelen extension ile
(kurulum: http://www.iis.net/downloads/microsoft/advanced-logging)
-Custom logging: Uygulama üzerinde üretilecek ek alanların loglanması.
Advanced Logging for IIS - Custom Logging: Uygulama tarafından üretilecek ek alanları loglamak
(Örneğin sayfasın üretilmesi süresi header a eklenerek uavaş sayfaların tespiyi için loglanması sağlanabilir)
http://www.iis.net/learn/extensions/advanced-logging-module/advanced-logging-for-iis-custom-logging
Advanced Logging for IIS - Log Filtering
http://www.iis.net/learn/extensions/advanced-logging-module/advanced-logging-for-iis-log-filtering
IIS Module yazarak realtime event takip etme. (C++ örneği ile):
Advanced Logging for IIS - Real-Time Logging
http://www.iis.net/learn/extensions/advanced-logging-module/advanced-logging-for-iis-real-time-logging
İstemci tarafıda üretilmiş bilgileri belirli bir xml formatında HTTP Post ile loglamak için (Silverlight, Flash, Media streaming gibi [istemci performans / kullanm bilgileri]
http://www.iis.net/learn/get-started/whats-new-in-iis-85/logging-to-etw-in-iis-85
Failed Request Tracing
IIS 7 ve sonrasında IIS kurulumu ile birlikte Failed Trace Logging kurulabilir.Kurulum için: http://www.iis.net/configreference/system.webserver/tracing/tracefailedrequests
FRT ile her bir loglama kuralı olarak istenen içerik tipine göre (uzantı / url şablonu)
-Http status koduna göre
-İsteğin süresine göre (time-taken)
-Event log seviyesine göre
istenen web istekleri loglanır ve çeşitli kriterlere göre trace bilgileri verir.
Logların analiz edilebilir duruma getirilmesi
Log boyutu büyük değilse işlemci gücüne göre 100 MB altı için direk LogParser kullanılabilir.
Aksi halde log dosyalarının Sql server'a import edilerek sorgu yapılması (duruma göre text index leriyle beraber) daha hızlı olacaktır.
Log analiz aracı: LogParser
Tutulan logları text dosyadan csv yada veritabanına sorgular üzerinden kaydetmek, dönüştürmek için:
Log Parser 2.2
http://www.microsoft.com/en-us/download/details.aspx?id=24659
Log Parser dökümantasyon
http://technet.microsoft.com/en-us/library/bb878032.aspx
Log Parser forum:
http://forums.iis.net/default.aspx/51?Logparser+Forums
Örnek LogParser sorgusu: İstenen alanların seçilip iisnslog20140324 tablosuna yazılması
LogParser "SELECT time, c-ip, s-ip, cs-uri-stem, cs-uri-query, sc-status, cs-bytes, sc-bytes, cs(User-Agent), cs(Cookie), cs(Referer) INTO iisnslog20140324 FROM C:\iislogs\20140324w\*.*" -i:W3C -o:SQL -server:. -database:iislog -driver:"SQL Server" -username:sa -password:Pass -createTable:ON
LogParser çıktısı:
Statistics:
-----------
Elements processed: 25739101
Elements output: 25739101
Execution time: 18218.84 seconds (05:03:38.84)
C:\WINDOWS\system32>
-----------
Elements processed: 25739101
Elements output: 25739101
Execution time: 18218.84 seconds (05:03:38.84)
C:\WINDOWS\system32>
[Yani yakşalık 25 milyon katıt i7 işlemcide 5 saat kadar sürüyor (sql ve logparser aynı makinada)]
LogParser çalıştırılırken kayıtları ekleyeceği tablo -createTable:ON ile otomatik oluşturmasıda sağlanabilir yada index tanımlamak için (çok sayıda kayıt üzerinde hızlı sorgulama için) önceden tablo oluşturulabilir.
Sql Server, IIS (NetScaler log için tablo oluşturma, user agent, url ve status code indexleri ile beraber)
//****************************************************************
CREATE TABLE [dbo].[iisnslog](
[id] [int] IDENTITY(1,1) NOT NULL,
[time] [datetime] NULL,
[cIp] [varchar](255) NULL,
[sIp] [varchar](255) NULL,
[csUriStem] [varchar](255) NULL,
[csUriQuery] [varchar](255) NULL,
[scStatus] [int] NULL,
[csBytes] [int] NULL,
[scBytes] [int] NULL,
[csUserAgent] [varchar](255) NULL,
[csCookie] [varchar](255) NULL,
[csReferer] [varchar](255) NULL,
CONSTRAINT [PK_iisnslog] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [IX_iisnslog_uristem] ON [dbo].[iisnslog]
(
[csUriStem] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_iisnslog_agent] ON [dbo].[iisnslog]
(
[csUserAgent] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_iisnslog_status] ON [dbo].[iisnslog]
(
[scStatus] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
//****************************************************************
Sorgu örnekleri
https://mlichtenberg.wordpress.com/2011/02/03/log-parser-rocks-more-than-50-examples/
Analiz sürecinde çıkarımlar yapıp icraate dönüştürme.
Performans loglarını grafik yardımıyla yorumlamak [detay!!]:
Performance Tuning: Visualize your web log performance data using Excel scatter plots
http://rothmanshore.com/2010/12/07/performance-tuning-visualize-your-web-log-performance-data-using-excel-scatter-plots/
Sql sorguları ile: [detay!!: Kullanım alanları ve örnek sql ler eklenecek]
-Bulunamayan sayfalr (Http 404)
-Arama motoru (bot) erişim sayıları ve frekansları
-Arama motorlarından tarama yapılmasının istenmeyeceği url tespitleri
Hazır batch sorgu dosyaları ile:
-En çok istek yapılan url'ler
-En çok istek yapan IP(ler)
-En çok istek yapan user-agent (bot)(lar)
-Http Status'e göre gruplanmış istek sayıları
-İstenen Http status'e göre istek yapılan url ve isteği yapan bilgileri
-En uzun süren istekler (ortalama değere göre, istemci hızı ve network dikkate alınarak)
http://www.peterviola.com/automate-log-parser-to-find-your-data-faster/Log Parser ile alınabilecek örnek kayıtlar
http://blogs.msdn.com/b/carlosag/archive/2010/03/25/analyze-your-iis-log-files-favorite-log-parser-queries.aspx
Log Parser örnekleri - hack vs durumları için şablon raporlar
http://technet.microsoft.com/en-us/library/ee692937.aspx
Kapsamlı bir liste:
http://logparserplus.com/Examples
Time taken özelinde sorgular
http://blogs.msdn.com/b/carloc/archive/2008/07/20/time-taken-and-logparser-for-web-site-statistics.aspx
Baştan sona tüm sürecin anlatıldığı kaynak: IIS log kurulumunda (IIS 6, temelde aynı) örneklerle logların analiz edilmesine:
Ek: Loglardaki http status, win status ve user agent bilgilerini anlamlandırma
User agent bilgisi
User agent içerik detayları ve listesi için:
Google bot ve robots.txt
Google bot un hangi url leri craw ettiği görülür ve gereksiz olanlar için robots.txt ye Disallow rule eklenebilir.
Örneğin haber olman sayfalar için
User-Agent: Googlebot-News
Disallow: /foto-galeri/
Not : Google'ın kendi dökümanlarında olmasına rağmen işe yaramıyor
Google tarafından bot olarak gelebilecek User agent'lar: (2014-03-19 tarihi itibariyle)
https://support.google.com/webmasters/answer/1061943?hl=en
https://developers.google.com/webmasters/smartphone-sites/googlebot-mobile
Google Web search
-Mozilla/5.0+(compatible;+Googlebot/2.1;++http://www.google.com/bot.html)
-Mozilla/5.0+(compatible;+Googlebot/2.1;+http://www.google.com/bot.html)
-Googlebot/2.1+(http://www.googlebot.com/bot.html)
Smart Phone crawler
-Mozilla/5.0+(iPhone;+CPU+iPhone+OS+6_0+like+Mac+OS+X)+AppleWebKit/536.26+(KHTML,+like+Gecko)+Version/6.0+Mobile/10A5376e+Safari/8536.25+(compatible;+Googlebot/2.1;++http://www.google.com/bot.html)Feature Phone
-SAMSUNG-SGH-E250/1.0+Profile/MIDP-2.0+Configuration/CLDC-1.1+UP.Browser/6.2.3.3.c.1.101+(GUI)+MMP/2.0+(compatible;+Googlebot-
Mobile/2.1;++http://www.google.com/bot.html)
Feature Phone
-DoCoMo/2.0+N905i(c100;TB;W24H16)+(compatible;+Googlebot-
Mobile/2.1;++http://www.google.com/bot.html)
facebook bot: Paylaşılan içeriğin meta bilgilerini almak almak için yada mobil uygulamada uygulama içinde paylaşılan sayfayı açmak için kullanılan user agent bilgisi.
facebookexternalhit/1.0+(+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.1+(+http://www.facebook.com/externalhit_uatext.php)
Robots.txt şekillendirme
https://developers.google.com/webmasters/control-crawl-index/docs/robots_txt
http://tools.seobook.com/robots-txt/
Http header ile noindex belirtimi (örneğin ajax responselar için [title olmayan durumlarda] )
https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag?csw=1
Http Status Kodları
http://en.wikipedia.org/wiki/HTTP_status_codes
Http 206 Partial Content : The server is delivering only part of the resource due to a range header sent by the client. The range header is used by tools like wget to enable resuming of interrupted downloads, or split a download into multiple simultaneous streams
Http 301 Moved Permanently
Http 304 Not modified
Win32Status: System Error Codes:
http://msdn.microsoft.com/en-us/library/ms681381.aspx
Hata sayfaları için alternatif raporlama geliştirmek:
Hata sayfaları (500+) ve sayfa bulunamadı hatalarını (404) Google Analytics den takip etmek:
Http 200 harici durumlar için gösterilen sayfa başka yere yönlendirmeden kendi hata kodu (404, 501 vs) ile verilip Title olarak ilgili duruma uygun bi açıklama yazılırsa google analytics de ona uygun rapor üretilebilir.
Not: Sadece browser üzerinden görüntülen sayfalar (GA script'in çalıştığı) durumlarda işe yarar. Örneğin herhangi bir Bot un isteyip bulamadığı sayfa için yine IIS logları incelenmeli yada ilgili bot'un, örneğin Google-bot için sağlanan araç kullanılmalı, Google Web masters tools yada Bing web masters tools.
Ürünler / Araçlar
Ücretsizhttp://awstats.sourceforge.net : Free real-time logfile analyzer to get advanced statistics
http://www.apacheviewer.com : Apache Logs Viewer (ALV) is a free and powerful tool which lets you monitor, view and analyze Apache/IIS logs with more ease
Diğer
http://www.lizard-labs.net/
Log Parser Studio
http://blogs.technet.com/b/exchange/archive/2012/03/07/introducing-log-parser-studio.aspx
http://blogs.technet.com/b/exchange/archive/2013/06/17/log-parser-studio-2-2-is-now-available.aspx
Son versiyon
https://blogs.msdn.microsoft.com/friis/2014/02/06/how-to-analyse-iis-logs-using-logparser-logparser-studio/
Microsoft SQL Server Report Pack for Internet Information Services (IIS) - 12 farklı raporun reporting services üzerinde hazır hali.
http://www.microsoft.com/en-us/download/details.aspx?id=22965
Ücretli
SmarterStats has over 100 different report items that analyze website traffic....
http://www.smartertools.com
IIS Log rapor üretme
http://www.weblogexpert.com/
Log Parser tabanlı yarı ücretsiz GUI
http://www.lizard-labs.net/log_parser_lizard.aspx
Ücretli GUI
http://www.smartertools.com/smarterstats/web-analytics-seo-software.aspx
Ücretli:
http://www.iislogs.com/
Hiç yorum yok:
Yorum Gönder