如何在 Apache 日志上使用 awk 或 sed 计算每秒平均请求数

如何在 Apache 日志上使用 awk 或 sed 计算每秒平均请求数

我正在尝试计算 Apache 日志特定时间段内每秒的平均请求数。

我已经能够将结果范围缩小到我感兴趣的时间段,并计算每秒的请求数,但我无法计算平均值。这是我到目前为止所拥有的:

paste "/var/log/apache2/access.log" "/var/log/apache2/access.log.1" | awk ' $4>"[10/Feb/2013:16:48:00" && $4<"[10/Feb/2013:17:15:00" {gsub(/\[/,"");print $4} ' | sort | uniq -c

有人能引导我走向正确的方向吗?我已经提到过 sed 或 awk,但我很乐意使用其他东西。

干杯

答案1

由于您已经弄清楚如何获取每秒的请求数,因此您需要确定“平均值”代表什么;即 60 秒、5 分钟、15 分钟或其他时间段内的平均请求数。假设超过 60 秒,您可以将现有脚本每秒追加到指标日志中。然后让另一个脚本每秒循环执行以下操作:

# tail -n 60 | awk '{total = total + $1}END{print total}' / 60 | bc -l

这将显示 60 秒内每秒的平均请求数。要在 5 分钟内完成:

# tail -n 300  | awk '{total = total + $1}END{print total}' / 300 | bc -l

如果您需要更多说明,请随时发表评论。

相关内容