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