Коли переповнення стека зростає, ми починаємо уважно придивлятися до наших журналів IIS, щоб виявити проблемних HTTP-клієнтів - такі речі, як шахрайські веб-павуки , користувачі, які мають великий набір сторінок для оновлення кожної секунди, погано написані одноразові веб-скребки, хитрість Користувачі, які намагаються збільшити сторінку, нараховують мільйон разів тощо.
Я придумав кілька запитів LogParser, які допомагають нам ідентифікувати більшість дивацтв і відхилень, коли вказується на файл журналу IIS.
Найбільше використання пропускної здатності за 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
url звертається до авгбайта ------------------------------------------------- - ---- ------- ------- /favicon.ico 16774 522 8756028 /content/img/search.png 15342 446 6842532
Найкращі звернення за 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
URL-адреса ------------------------------------------------- - ---- /content/img/sf/vote-arrow-down.png 14076 /content/img/sf/vote-arrow-up.png 14018
Найвища пропускна здатність та звернення від 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
Тотбайти звернень до клієнтського агента ------------- ------------------------------------- -------- --------- ----- 66.249.68.47 Mozilla / 5.0 + (сумісний; + Googlebot / 2.1; 135131089 16640 194.90.190.41 omgilibot / 0.3 ++ omgili.com 133805857 6447
Найвища пропускна здатність за годиною за 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 звернень до тотбайтів клієнтського агента користувача - ------------- ----------------------------------- ------ -------- ---- 9 194.90.190.41 omgilibot / 0.3 ++ omgili.com 30634860 1549 10 194.90.190.41 omgilibot / 0.3 ++ omgili.com 29070370 1503
Найкращі звернення за годиною від 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
hr клієнт-агент-користувач переглядає тотбайти - ------------- ----------------------------------- ------ ---- -------- 10 194.90.190.41 omgilibot / 0.3 ++ omgili.com 1503 29070370 12 66.249.68.47 Mozilla / 5.0 + (сумісний; + Googlebot / 2.1 1363 13186302
Зрозуміло, що {ім'я файлу} - це шлях до лог-файлу IIS, наприклад
c:\working\sologs\u_ex090708.log
Я багато шукав в Інтернеті для хороших запитів IIS LogParser і знайшов дорогоцінне мало. Ці 5 вище, дуже допомогли нам визначити серйозних проблемних клієнтів. Але мені цікаво - чого нам не вистачає?
Які ще існують способи розрізання та нарізання журналів IIS (бажано із запитами LogParser ) для видобутку статистичних аномалій? Чи є у вас якісь хороші запити IIS LogParser, які ви запускаєте на своїх серверах?