51Testing软件测试论坛

标题: iis日志运营报告 [打印本页]

作者: 测试积点老人    时间: 2018-12-12 15:11
标题: iis日志运营报告
一、获取iis日志,通过bat进行合并

执行脚本将多个log合并成一个log

  1. type u_ex160123.log,u_ex160124.log>>12-19.log
复制代码

或者批量
  1. type *.log>>12-19.log
复制代码


二、通过Log Parser 工具将log文本导入到MSSQLServer中

注意:iis的log是零时区,通过TO_LOCALTIME(TO_TIMESTAMP(ADD(TO_STRING(date, 'yyyy-MM-dd '), TO_STRING(time,'hh:mm:ss')),'yyyy-MM-dd hh:mm:ss')) AS RequestTime 将时间转成当前8时区时间。
  1. d:
  2. cd "D:\Program Files (x86)\Log Parser 2.2"
  3. logparser.exe "SELECT TO_LOCALTIME(TO_TIMESTAMP(ADD(TO_STRING(date, 'yyyy-MM-dd '), TO_STRING(time,'hh:mm:ss')),'yyyy-MM-dd hh:mm:ss')) AS RequestTime, * FROM  'E:\work\task\iislog\log\iisAll.log' to temp_lti_WebLog" -i:IISW3C -o:SQL -oConnString:"Driver={SQL Server};server=10.12.75.0;database=mydb;uid=sa;pwd=mypassword;Integrated Security=SSPI" -createtable:ON
  4. pause;
复制代码
这里面记录了:

1. 请求发生在什么时刻,
2. 哪个客户端IP访问了服务端IP的哪个端口,
3. 客户端工具是什么类型,什么版本,
4. 请求的URL以及查询字符串参数是什么,
5. 请求的方式是GET还是POST,
6. 请求的处理结果是什么样的:HTTP状态码,以及操作系统底层的状态码,
7. 请求过程中,客户端上传了多少数据,服务端发送了多少数据,
8. 请求总共占用服务器多长时间、等等。

这些信息在分析时有什么用途,我后面再说。先对它有个印象就可以了。

三、通过sql脚本统计请求总览和请求频率
  1. --001请求总览,按照请求url类别,统计90%请求平均时间以90%最大时间以及所有请求最大最小时间
  2. SELECT  * FROM (
  3. SELECT
  4. t1.[csUriStem], t1.Cnt, t1.MaxTime, t1.MinTime,
  5. ROUND(AVG(t2.TimeTaken),0) AS AvgTime90,
  6. MAX(t2.TimeTaken) AS MaxTime90
  7. FROM (
  8.   SELECT [csUriStem], COUNT(*) AS Cnt, MAX(TimeTaken) AS MaxTime, MIN(TimeTaken) AS MinTime
  9.   FROM temp_lti_WebLog_online_all WHERE HTTP
  10.   GROUP BY [csUriStem]
  11. ) t1
  12. INNER JOIN (
  13.   SELECT ROW_NUMBER() OVER (PARTITION BY [csUriStem] ORDER BY TimeTaken) AS rownum, *
  14.   FROM temp_lti_WebLog_online_all
  15. ) t2 ON t1.[csUriStem] = t2.[csUriStem]
  16. WHERE t2.rownum <= 0.9 * t1.Cnt
  17. GROUP BY t1.[csUriStem], t1.Cnt, t1.MaxTime, t1.MinTime
  18. ) t3
  19. ORDER BY csuristem
复制代码

  1. --002请求频率 (minitue)
  2. SELECT LEFT(CONVERT(VARCHAR(100), requesttime, 108), 5) ,
  3.         COUNT(*) AS cnt
  4. FROM   [dbo].[temp_lti_WebLog_online_all]
  5. WHERE  LEFT(requesttime, 10) = '01 24 2017'
  6. GROUP BY LEFT(CONVERT(VARCHAR(100), requesttime, 108), 5)
  7. ORDER BY LEFT(CONVERT(VARCHAR(100), requesttime, 108), 5)

复制代码







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2