Au fur et à mesure que Stack Overflow se développe, nous commençons à examiner de près nos journaux IIS pour identifier les clients HTTP problématiques - des choses comme araignées malhonnêtes Les utilisateurs qui ont configuré une grande page pour qu'elle se rafraîchisse toutes les secondes, les racleurs de sites web mal écrits, les utilisateurs rusés qui essaient d'incrémenter le nombre de pages un million de fois, et ainsi de suite.
J'en ai trouvé quelques-uns LogParser qui nous aident à identifier la plupart des bizarreries et des anomalies lorsqu'on pointe sur un fichier journal IIS.
Utilisation maximale de la bande passante par 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 hits avgbyte served
------------------------------------------------- ----- ------- -------
/favicon.ico 16774 522 8756028
/content/img/search.png 15342 446 6842532
Top hits par 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 hits
------------------------------------------------- -----
/content/img/sf/vote-arrow-down.png 14076
/content/img/sf/vote-arrow-up.png 14018
Top bande passante et hits par 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
client user-agent totbytes hits
------------- --------------------------------------------- --------- -----
66.249.68.47 Mozilla/5.0+(compatible;+Googlebot/2.1; 135131089 16640
194.90.190.41 omgilibot/0.3++omgili.com 133805857 6447
Bande passante la plus élevée par heure par 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 client user-agent totbytes hits
-- ------------- ----------------------------------------- -------- ----
9 194.90.190.41 omgilibot/0.3++omgili.com 30634860 1549
10 194.90.190.41 omgilibot/0.3++omgili.com 29070370 1503
Top hits par heure par 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 hits totbytes
-- ------------- ----------------------------------------- ---- --------
10 194.90.190.41 omgilibot/0.3++omgili.com 1503 29070370
12 66.249.68.47 Mozilla/5.0+(compatible;+Googlebot/2.1 1363 13186302
Le {nom du fichier} est bien sûr un chemin vers un fichier journal IIS, tel que
c:\working\sologs\u_ex090708.log
J'ai fait beaucoup de recherches sur le web pour trouver de bonnes requêtes IIS LogParser et j'en ai trouvé très peu. Ces 5 éléments, ci-dessus, nous ont énormément aidés à identifier les clients à problèmes sérieux. Mais je me demande : que nous manque-t-il ?
Quels sont les autres moyens de découper les journaux IIS en tranches (de préférence avec les requêtes LogParser ) pour les exploiter à la recherche d'anomalies statistiques ? Avez-vous de bonnes requêtes IIS LogParser que vous exécutez sur vos serveurs ?