W miarę wzrostu przepełnienia stosu zaczynamy uważnie przyglądać się naszym dziennikom IIS w celu zidentyfikowania problematycznych klientów HTTP - takich jak nieuczciwe pająki internetowe , użytkownicy, którzy mają duży zestaw stron do odświeżania co sekundę, źle napisane jednorazowe skrobaki internetowe, podstępne użytkownicy, którzy próbują zwiększyć stronę, liczą zillion razy i tak dalej.
Wymyśliłem kilka zapytań LogParser, które pomagają nam zidentyfikować większość osobliwości i nieprawidłowości po wskazaniu pliku dziennika IIS.
Najlepsze wykorzystanie przepustowości według adresu URL
SELECT top 50 DISTINCT
SUBSTR(TO_LOWERCASE(cs-uri-stem), 0, 55) AS Url,
Count(*) AS Hits,
AVG(sc-bytes) AS AvgBytes,
SUM(sc-bytes) as ServedBytes
FROM {filename}
GROUP BY Url
HAVING Hits >= 20
ORDER BY ServedBytes DESC
adres URL trafił do avgbyte ------------------------------------------------- - ---- ------- ------- /favicon.ico 16774 522 8756028 /content/img/search.png 15342 446 6842532
Najczęściej wyszukiwane według adresu URL
SELECT TOP 100
cs-uri-stem as Url,
COUNT(cs-uri-stem) AS Hits
FROM {filename}
GROUP BY cs-uri-stem
ORDER BY COUNT(cs-uri-stem) DESC
adresy URL trafień ------------------------------------------------- - ---- /content/img/sf/vote-arrow-down.png 14076 /content/img/sf/vote-arrow-up.png 14018
Najwyższa przepustowość i trafienia według IP / User-Agent
SELECT TOP 30
c-ip as Client,
SUBSTR(cs(User-Agent), 0, 70) as Agent,
Sum(sc-bytes) AS TotalBytes,
Count(*) as Hits
FROM {filename}
group by c-ip, cs(User-Agent)
ORDER BY TotalBytes desc
klient użytkownik-klient sumuje trafienia ------------- ------------------------------------- -------- --------- ----- 66.249.68.47 Mozilla / 5.0 + (kompatybilny; + Googlebot / 2.1; 135131089 16640 194.90.190.41 omgilibot / 0.3 ++ omgili.com 133805857 6447
Najwyższa przepustowość według godziny według IP / User-Agent
SELECT TOP 30
TO_STRING(time, 'h') as Hour,
c-ip as Client,
SUBSTR(cs(User-Agent), 0, 70) as Agent,
Sum(sc-bytes) AS TotalBytes,
count(*) as Hits
FROM {filename}
group by c-ip, cs(User-Agent), hour
ORDER BY sum(sc-bytes) desc
hr klient użytkownik-klient sumuje liczbę trafień - ------------- ----------------------------------- ------ -------- ---- 9 194,90.190.41 omgilibot / 0.3 ++ omgili.com 30634860 1549 10 194,90.190,41 omgilibot / 0,3 ++ omgili.com 29070370 1503
Największe trafienia według godziny według IP / User-Agent
SELECT TOP 30
TO_STRING(time, 'h') as Hour,
c-ip as Client,
SUBSTR(cs(User-Agent), 0, 70) as Agent,
count(*) as Hits,
Sum(sc-bytes) AS TotalBytes
FROM {filename}
group by c-ip, cs(User-Agent), hour
ORDER BY Hits desc
Klient kliencki hr uderza totbytes - ------------- ----------------------------------- ------ ---- -------- 10 194,90.190,41 omgilibot / 0,3 ++ omgili.com 1503 29070370 12 66.249.68.47 Mozilla / 5.0 + (kompatybilny; + Googlebot / 2.1 1363 13186302
{Nazwa pliku} oczywiście byłaby ścieżką do pliku dziennika IIS, takiego jak
c:\working\sologs\u_ex090708.log
Przeprowadziłem wiele wyszukiwań w sieci w poszukiwaniu dobrych zapytań IIP LogParser i znalazłem niewiele cennego. Powyższe 5 punktów pomogło nam ogromnie w identyfikacji poważnych klientów. Ale zastanawiam się - czego nam brakuje?
Jakie są inne sposoby dzielenia i krojenia dzienników IIS (najlepiej za pomocą zapytań LogParser ) w celu ich wydobycia pod kątem anomalii statystycznych? Czy masz jakieś dobre zapytania IIS LogParser uruchamiane na twoich serwerach?