推荐用于 IIS 监控的 LogParser 查询吗?

推荐用于 IIS 监控的 LogParser 查询吗?

随着 Stack Overflow 的发展,我们开始密切关注 IIS 日志,以识别有问题的 HTTP 客户端,例如流氓网络蜘蛛、每秒刷新一次大页面的用户、编写不佳的一次性网页抓取工具、尝试无数次增加页面计数的狡猾用户等等。

我想到了一些日志解析器当指向 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
网址点击数
------------------------------------------------- -----
/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
客户端用户代理 totbytes 命中数
------------- --------------------------------------------- --------- -----
66.249.68.47 Mozilla/5.0+(兼容;+Googlebot/2.​​1; 135131089 16640
194.90.190.41 omgilibot/0.3++omgili.com 133805857 6447

按 IP/用户代理划分的每小时最高带宽

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 客户端用户代理 totbytes 命中数
-- ------------- ----------------------------------------- -------- ----
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 客户端用户代理命中数 totbytes
-- ------------- ----------------------------------------- ---- --------
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

{filename} 当然是 IIS 日志文件的路径,例如

c:\working\sologs\u_ex090708.log

我在网上搜索了很多好的 IIS LogParser 查询,但发现的很少。上述这 5 个查询对我们识别严重问题客户有很大帮助。但我想知道——我们遗漏了什么?

还有什么其他方法可以对 IIS 日志进行分片和切分(最好使用 LogParser 查询) 来挖掘统计异常?您在服务器上运行了任何好的 IIS LogParser 查询吗?

答案1

黑客活动或其他攻击的一个很好的指标是每小时的错误数量。以下脚本返回错误代码超过 25 个的日期和时间返回。根据站点上的流量(以及 Web 应用程序的质量 ;-) )调整该值。

SELECT date as Date, QUANTIZE(time, 3600) AS Hour, 
       sc-status as Status, count(*) AS ErrorCount
FROM   {filename} 
WHERE  sc-status >= 400 
GROUP BY date, hour, sc-status 
HAVING ErrorCount > 25
ORDER BY ErrorCount DESC

结果可能是这样的:

日期 小时 状态 错误计数
---------- -------- ------ ------
2009-07-24 18:00:00 404 187
2009-07-17 13:00:00 500 99
2009-07-21 21:00:00 404 80
2009-07-03 04:00:00 404 45
...

下一个查询检测到一个 IP 地址对单个 URL 的点击次数异常高。在这个例子中,我选择了 500,但你可能必须更改查询以适应边缘情况(例如,排除 Google London 的 IP 地址 ;-)。)

SELECT DISTINCT date AS Date, cs-uri-stem AS URL,
      c-ip AS IPAddress, Count(*) AS Hits
FROM  {filename}
GROUP BY date, c-ip, cs-uri-stem
HAVING Hits > 500
ORDER BY Hits Desc
日期 URL IP地址 点击数
---------- ----------------------------------- --------------- ----
2009-07-24 /登录.aspx 111.222.111.222 1889
2009-07-12 /帐户更新.aspx 11.22.33.44 973
2009-07-19 /登录.aspx 123.231.132.123 821
2009-07-21 /Admin.aspx 44.55.66.77 571
...

答案2

为了过滤掉合法流量(并扩大范围),您可以考虑cs(Cookie)在 IIS 日志中启用它,添加一些使用 javascript 设置小 cookie 的代码,然后添加WHERE cs(Cookie)=''

由于您的代码很少,每个用户都应该有一个 cookie,除非他们手动禁用 cookie(一小部分人可能会这样做)或者除非该用户实际上是一个不支持 Javascript 的机器人(例如,wget、httpclient 等不支持 Javascript)。

我怀疑如果用户的活动量很大,但他们接受 cookie 并启用了 javascript,那么他们更有可能是合法用户,而如果你发现一个用户的活动量很大但不支持 cookie/javascript,那么他们更有可能是一个机器人。

答案3

抱歉,我还不能发表评论,所以我不得不回答。

“按 URL 查询带宽使用量最高”查询存在一个小错误。虽然大多数情况下,您可以放心地将页面请求乘以文件大小,但在这种情况下,由于您没有注意任何查询参数,因此您会遇到一些略微或非常不准确的数字。

为了获得更准确的值,只需执行SUM(sc 字节)而不是MUL(Hits, AvgBytes) 作为 ServedBytes

答案4

这家伙有十几个有用的问题:

http://logparserplus.com/Examples/Queries.aspx

相关内容