Man mano che Stack Overflow cresce, stiamo iniziando a esaminare da vicino i nostri registri IIS per identificare i client HTTP problematici - cose come spider web disonesti , utenti che hanno una grande pagina impostata per aggiornarsi ogni secondo, scraper web raschietti scritti male, trucchi gli utenti che provano ad aumentare il conteggio delle pagine un milione di volte e così via.
Ho escogitato alcune query LogParser che ci aiutano a identificare la maggior parte delle stranezze e delle anomalie quando indicato a un file di registro IIS.
Migliore utilizzo della larghezza di banda per 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 colpisce avgbyte servito ------------------------------------------------- - ---- ------- ------- /favicon.ico 16774 522 8756028 /content/img/search.png 15342 446 6842532
Principali risultati per 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
colpi url ------------------------------------------------- - ---- /content/img/sf/vote-arrow-down.png 14076 /content/img/sf/vote-arrow-up.png 14018
Larghezza di banda e risultati migliori per 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
hit totbyte client utente-agente ------------- ------------------------------------- -------- --------- ----- 66.249.68.47 Mozilla / 5.0 + (compatibile; + Googlebot / 2.1; 135131089 16640 194.90.190.41 omgilibot / 0.3 ++ omgili.com 133805857 6447
Larghezza di banda massima per ora per 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
hit totbytes client utente agente utente - ------------- ----------------------------------- ------ -------- ---- 9 194.90.190.41 omgilibot / 0.3 ++ omgili.com 30634860 1549 10 194.90.190.41 omgilibot / 0.3 ++ omgili.com 29070370 1503
Principali risultati per ora per 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 client user-agent colpisce totbytes - ------------- ----------------------------------- ------ ---- -------- 10 194.90.190.41 omgilibot / 0.3 ++ omgili.com 1503 29070370 12 66.249.68.47 Mozilla / 5.0 + (compatibile; + Googlebot / 2.1 1363 13186302
Il {nomefile} ovviamente sarebbe un percorso per un file di registro IIS, come ad esempio
c:\working\sologs\u_ex090708.log
Ho fatto molte ricerche sul web per trovare buone query su IIS LogParser e ho trovato poco prezioso. Questi 5, sopra, ci hanno aiutato moltissimo a identificare i clienti con problemi seri. Ma mi chiedo: cosa ci manca?
Quali altri modi ci sono per tagliare e tagliare i log IIS (preferibilmente con le query LogParser ) per estrarli per anomalie statistiche? Hai qualche buona query IIS LogParser che esegui sui tuoi server?