我很好奇是否有一种方法可以监控iis服务器上的请求持续时间。就我个人而言,我已经想出了一个解决方案,但它确实是资源密集型的,这就是为什么我问这个问题,只是为了收集更多的意见。
我的计划是提取每个请求的持续时间,并将其发送到石墨,以便实时了解real服务器的性能。我的想法是在它的webadministration模块中使用poweshell。例如,如果您运行get-item IIS:\AppPools\DefaultAppPool | Get-WebRequest,您将获得该应用程序池上的所有请求,其中包含大量信息,包括时间信息。
问题是,我应该有一个脚本,每100毫秒运行一次,以获得所有的请求,这是有点浪费。有没有办法告诉iis将请求持续时间(以毫秒为单位)放在日志中?因为那样会更容易得到我需要的信息。
发布于 2012-11-02 06:28:18
我不知道IIS上是否有这样的功能,但我已经做了同样的事情(发送iis页面时间到石墨),通过在互联网和iis服务器之间使用反向代理,如nginx。
来自nginx的proxy module允许您在后台生成页面所用的时间内登录每个请求。
此外,如果你必须处理慢连接的访问,在IIS的前面有一个像nginx这样的代理可能会非常有帮助,nginx将存储来自后端的回复,丢弃后端连接,并等待访问者获得所有内容。强烈推荐。
如果你走这条路,你应该使用logster (也来自etsy guys)或logstash来解析你想要的每段时间(可能每分钟)的nginx日志。
发布于 2012-11-20 19:12:09
似乎有一个基于正则表达式记录请求的特性,它被称为高级日志模块。您可以从多个字段中指定您想要记录的内容,并且它与W3C兼容。在我的案例中,我有时间作为一个可以指定的文件,这就是我正在寻找的。在那之后,我用powershell编写了一个脚本,它解析日志并获取我需要的信息,构造一个指标并将其发送到statsd,从术语上讲,statsd将其发送到powershell。
我选择的日志解析方法如下:在脚本中,我使用来自powershell的get-content comandlet将所有日志收集到一个文件中(是的,iis将日志分成多个文件,我猜日志的数量取决于您的工作进程的数量,但我不确定)。这是第二次迭代中的第一次迭代,我收集了另一个文件中的所有日志,并在第一个文件和第二个文件之间进行了比较,只有差异才会得到处理。
我之所以选择这种方法,是因为我认为使用最少的正则表达式处理会更好。下一步是擦除累积日志的第一个文件,并以被擦除的第一个文件的速度移动第二个文件,然后再次运行脚本,以便始终具有比较的方法。此外,日志翻转时间为一小时,之后日志将被擦除。
https://stackoverflow.com/questions/13184697
复制相似问题