从 Varnishlog 计算特定 URL 的数量和百分比

从 Varnishlog 计算特定 URL 的数量和百分比

我很好奇如何计算特定 URL 的运行百分比...例如,当执行 varnishlog 时,您会获得有关传入 http 请求信息的实时输出。

以下是摘录的一些信息。

  46 ReqStart     c 
   46 RxRequest    c GET
   46 RxURL        c /cat?getParam
   46 RxProtocol   c HTTP/1.1
   46 RxHeader     c User-Agent: **************
   46 RxHeader     c Accept-Encoding: gzip
   46 RxHeader     c Host: myServer.org
   46 RxHeader     c Connection: Keep-Alive
   46 RxHeader     c Cookie: ********
   46 RxHeader     c Cookie2: ************
   46 VCL_call     c recv lookup
   46 VCL_call     c hash
   46 Hash         c /cat?getParam
   46 Hash         c myServer.org
   46 VCL_return   c hash
   46 VCL_call     c miss fetch
   46 Backend      c 90 default default
   ...
   46 ObjHeader    c Server: Apache-Coyote/1.1
   46 ObjHeader    c Content-Type: text/xml
   46 ObjHeader    c Content-Encoding: gzip
   46 ObjHeader    c Vary: Accept-Encoding
   46 ObjHeader    c Date: Thu, 05 Sep 2013 12:56:04 GMT
   46 Gzip         c u F - 1596 8098 80 80 12697
   46 VCL_call     c deliver deliver
   46 TxProtocol   c HTTP/1.1
   46 TxStatus     c 200
   46 TxResponse   c OK
   ...
   46 ReqEnd       c ...

我感兴趣的是RxURL。具体来说,我有以下开头的请求:

  • /猫?
  • /模板?

您将如何运行可以计数的命令:

  • 请求总数
  • 以 /cat 开头的请求数
  • 以 /temp 开头的请求数

并在最后输出这些数字?

目前,我正在执行 varnishlog | grep "Hash" > requests.txt

然后利用 Excel 电子表格进行清理、计数并计算百分比。

我很好奇是否可以使用 AWK 或脚本直接在服务器上执行此操作。

更新

varnishtop -i txurl更加适合,因为它可以直接显示 URL。

答案1

你可以使用 Varnishncsa[1] 来生成“类似 Apache”的日志(甚至更好,如果你愿意的话,还可以生成经过过滤的日志),并利用一些经过实战测试的脚本[2][3]

获取实时所需的计数(例如,对于接下来的 100 个请求)很简单:

  • varnishncsa | head -n 100 | awk '{print $7}' | wc -l
  • varnishncsa | head -n 100 | awk '{print $7}' | grep /cat | wc -l
  • varnishncsa | head -n 100 | awk '{print $7}' | grep /temp | wc -l

[1]https://www.varnish-cache.org/docs/trunk/reference/varnishncsa.html

[2]您是否有任何有用的 awk 和 grep 脚本来解析 apache 日志?

[3]http://www.the-art-of-web.com/system/logs/#.Uin5AEBdXsh

相关内容