【问题标题】:IIS 7 request duration monitoringIIS 7 请求持续时间监控
【发布时间】:2012-11-01 20:08:15
【问题描述】:

我很好奇是否有一种方法可以监控 iis 服务器上的请求持续时间。就我个人而言,我想出了一个解决方案,但它确实是资源密集型的,这就是我问这个问题的原因,只是为了收集更多意见。

我的计划是提取每个请求的持续时间并将其发送到石墨,以便实时了解网络服务器的性能。我想出的想法是将 poweshell 与它的 webadministration 模块一起使用。例如,如果您运行 get-item IIS:\AppPools\DefaultAppPool | Get-WebRequest,您将获得该应用程序池上的所有请求,其中包含大量信息,包括时间信息。

问题是我应该有一个每 100 毫秒运行一次的脚本来获取所有请求,这有点浪费。有没有办法告诉 iis 将请求持续时间(以毫秒为单位)放入日志中?因为那样的话,获得我需要的信息会容易得多。

【问题讨论】:

标签: performance iis powershell monitoring


【解决方案1】:

我不知道 IIS 上是否有这样的功能,但我通过在 Internet 和 iis 服务器之间使用反向代理(如 nginx)做了同样的事情(将 iis 页面时间发送到石墨)。

来自 nginx 的 proxy module 允许您在后端生成页面所用的时间登录每个请求。

此外,如果您必须处理连接速度较慢的访问,在 IIS 前面有一个像 nginx 这样的代理可能会非常有帮助,nginx 将存储来自后端的回复,断开后端连接并等待访问者获得所有内容。强烈推荐。

如果你走这条路,你应该使用logster(也来自 etsy 的家伙)或logstash 在你想要的每个时间段(可能每分钟)解析 nginx 日志。

【讨论】:

    【解决方案2】:

    似乎有一个基于正则表达式记录请求的功能,它被称为高级记录模块。您可以从多个字段中指定要记录的内容,并且它符合 W3C。就我而言,我有时间将其作为可以指定的文件,这就是我想要的。之后,我在 powershell 中编写了一个脚本,它解析日志并获取我需要的信息,构建一个指标并将其发送到 statsd,然后再将其发送到 powershell。

    我为日志解析选择的方法如下:在脚本中,我使用了来自 powershell 的 get-content 命令将所有日志收集到一个文件中(是​​的 iis 会破坏多个文件中的日志,我猜是日志的数量取决于您的工作流程的数量,但我不确定)。这是第二次迭代中的第一次迭代,我将所有日志收集到另一个文件中,并在第一个文件和后者之间进行比较,只处理差异。

    我选择这种方法是因为我认为使用最少的正则表达式处理会更好。下一步是擦除累积日志的第一个文件,并按照已擦除的第一个文件的速度移动第二个文件并再次运行脚本,以便始终有一种比较方法。此外,日志翻转为一小时,之后日志将被清除。

    【讨论】:

      猜你喜欢
      • 2019-06-24
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 2021-12-09
      • 2015-11-26
      • 2011-07-12
      • 1970-01-01
      • 2020-09-20
      相关资源
      最近更新 更多