從 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

相關內容