我很好奇如何计算特定 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