varnish 4.0 官方文檔翻譯21-Reporting and statistics

Reporting and statistics

本部分包括如何查看Varnish正在作什麼,從每一個http請求流的詳細記錄到彙總統計計數器。javascript

  • Logging in Varnishhtml

  • Statisticsjava

    • varnishtopweb

    • varnishhistchrome

    • varnishstat後端

Logging in Varnish

Varnish中一個很棒的特色是工做日誌的記錄方式。varnish不記錄日誌到日誌文件,而是調用VSL記錄到共享內存片斷,VSL-varnish共享日誌。當這個片斷被寫完後,varnish開始覆蓋老數據。緩存

這種方式比記錄到文件快的多得多,而且不須要磁盤空間。除此以外VSL能夠給到你須要的儘量多的信息。ide

另外一方面,若是你忘記有程序實際在寫日誌到磁盤,日誌將會佔用過多的磁盤。svg

varnishlog是能夠用來查看varnish記錄了什麼的程序。varnish提供原生的日誌,全部的都被寫到日誌裏。其餘一些客戶端也能訪問日誌,一下子向你展現。工具

在啓動varnish的終端窗口鍵入varnishlog(varnish-4.0.3: varnishlog -v) 而後回車。

你將看到一些行,緩慢滾動(取決於你的日誌量)像這樣:

0 CLI          - Rd ping
0 CLI          - Wr 200 PONG 1273698726 1.0

varnish 主進程檢查cache進程,爲了查看是否一切ok。

刷新指向varnish的web頁面,咱們能夠看到有些輸出:

11 SessionOpen  c 127.0.0.1 58912 0.0.0.0:8080
11 ReqStart     c 127.0.0.1 58912 595005213
11 RxRequest    c GET
11 RxURL        c /
11 RxProtocol   c HTTP/1.1
11 RxHeader     c Host: localhost:8080
11 RxHeader     c Connection: keep-alive
  • 第一列是隨機數,它是爲了辨認訪問會話。數字相同表示來自同一個會話,同時會被相同的進程處理。

  • 第二列是日誌信息的標籤。全部的請求都被一種活動類型的標籤標示着。Rx開始的標籤表示是Varnish接收的數據,Tx表示發送的數據。

  • 第三列表示數據是從客戶端來或者發送到客戶端(c),或者是發送到後端或者從後端返回(b).

  • 第四列表示被記錄的數據。

基本的選項:

'-b':只展現varnish和後端server交互的日誌。當咱們要優化緩存命中率時,很是有用。

[root@aliyun-web1 ~]# varnishlog -b|more 
*   << BeReq    >> 513184412 
-   Begin          bereq 513184411 pass
-   Timestamp      Start: 1435903539.233425 0.000000 0.000000
-   BereqMethod    GET
-   BereqURL       /
-   BereqProtocol  HTTP/1.1
-   BereqHeader    Host: www.example.com
-   BereqHeader    Accept: */*
-   BereqHeader    Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
-   BereqHeader    Accept-Language: zh-cn, zh
-   BereqHeader    User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0     QQ-Manager Mobile Safari/537.36
-   BereqHeader    Referer: http://www.example.com/
-   BereqHeader    X-Forwarded-For: 180.153.206.22
-   BereqHeader    X-Forward-For: 180.153.206.22
-   BereqHeader    X-Varnish: 513184412
-   VCL_call       BACKEND_FETCH
-   VCL_return     fetch
-   Backend        723 default default(10.171.199.83,,81)
-   Timestamp      Bereq: 1435903539.233538 0.000113 0.000113
-   Timestamp      Beresp: 1435903539.372638 0.139213 0.139100
-   BerespProtocol HTTP/1.1
-   BerespStatus   200
-   BerespReason   OK
-   BerespHeader   Server: openresty
-   BerespHeader   Date: Fri, 03 Jul 2015 06:05:39 GMT
-   BerespHeader   Content-Type: text/javascript; charset=utf-8
-   BerespHeader   Transfer-Encoding: chunked
-   BerespHeader   Connection: keep-alive
-   BerespHeader   Status: 200 OK
-   BerespHeader   X-UA-Compatible: IE=Edge,chrome=1
-   BerespHeader   ETag: "a8bc468ef546910351aff1736593a25e"
-   BerespHeader   Cache-Control: max-age=0, private, must-revalidate
-   BerespHeader   X-Request-Id: 091be77be62554630e058bb89e6152e8
-   BerespHeader   X-Runtime: 0.099064
-   BerespHeader   X-Rack-Cache: miss

'-c':和-b相似,不過是client和varnish的交互.

[root@aliyun-web1 ~]# varnishlog -c|more 
*   << Request  >> 617872310 
-   Begin          req 511130871 rxreq
-   Timestamp      Start: 1435903851.946365 0.000000 0.000000
-   Timestamp      Req: 1435903851.946365 0.000000 0.000000
-   ReqStart       211.144.121.242 10509
-   ReqMethod      GET
-   ReqURL         /images/example_v4/logo.png?1435895693
-   ReqProtocol    HTTP/1.1
-   ReqHeader      Accept: image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5
-   ReqHeader      Referer: http://www.example.com.cn/articles/2015-04-16/909879.html
-   ReqHeader      Accept-Language: zh-CN
-   ReqHeader      User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
-   ReqHeader      Accept-Encoding: gzip, deflate
-   ReqHeader      Host: static.example.com.cn
-   ReqHeader      DNT: 1
-   ReqHeader      Connection: Keep-Alive
-   ReqHeader      X-Forwarded-For: 211.144.121.242
-   VCL_call       RECV
-   ReqHeader      X-Forward-For: 211.144.121.242
-   VCL_return     hash
-   ReqUnset       Accept-Encoding: gzip, deflate
-   ReqHeader      Accept-Encoding: gzip
-   VCL_call       HASH
-   VCL_return     lookup
-   Hit            3490076170
-   VCL_call       HIT
-   VCL_return     deliver
-   RespProtocol   HTTP/1.1
-   RespStatus     200
-   RespReason     OK
-   RespHeader     Server: openresty
-   RespHeader     Date: Fri, 03 Jul 2015 06:09:53 GMT
-   RespHeader     Last-Modified: Fri, 03 Jul 2015 03:54:53 GMT
-   RespHeader     ETag: "5596078d-242a"
-   RespHeader     Content-Type: image/png
-   RespHeader     Vary: Accept-Encoding
-   RespHeader     Content-Encoding: gzip
-   RespHeader     X-Varnish: 617872310 268850698
-   RespHeader     Age: 58
-   RespHeader     Via: 1.1 varnish-v4
-   VCL_call       DELIVER
-   RespHeader     X-Cache: HIT from example 317
-   VCL_return     deliver

譯者注:因爲各個版本參數的不一樣。譯者使用的varnish-4.0.3和4.0的輸出也不盡相同。 不過仍是能夠經過varnishlog -h查看肯定的參數使用方法。 固然若是你安裝了varnish對應版本的varnish-docs,你可經過man手冊查看具體的用法,4.0.3官方varnishlog連接.

Statistics

varnish擁有一組很好且很是實用的狀態生成工具,實時的生成狀態同時分析共享內存日誌的日誌數據。

varnishtop

varnishtop讀取共享內存日誌同時呈現連續最常發生的日誌項的更新列表。

list length 6652                                                   web1

4693.76 VCL_return     deliver
2531.67 RespProtocol   HTTP/1.1
2343.12 VCL_call       HASH
2343.12 VCL_call       RECV
2343.12 VCL_call       DELIVER
2343.12 VCL_return     lookup
2343.12 RespHeader     Via: 1.1 varnish-v4
2343.12 RespHeader     Server: openresty
2336.85 ReqMethod      GET
2310.85 RespStatus     200
2310.85 RespReason     OK
2310.12 ReqProtocol    HTTP/1.1
2208.67 RespHeader     Connection: keep-alive
2200.67 VCL_return     hash
2142.21 RespHeader     Accept-Ranges: bytes
2047.21 ReqHeader      Accept-Encoding: gzip
2017.12 Debug          XXX REF 2
1967.76 VCL_call       HIT
1851.67 Debug          RES_MODE 2
1726.94 ReqHeader      Accept: */*
1711.48 RespHeader     Last-Modified: Fri, 03 Jul 2015 09:04:41 GMT

使用適當的過濾參數-I, -i, -X and -x ,他能夠按照請求的資源,客戶端,user-agent,以及其餘記錄在日誌裏的信息來分層級顯示。

varnishtop -i ReqURL顯示客戶端請求的URL。varnishtop -i BereqURL顯示後端請求URL.varnishtop -I ReqHeader:Accept-Encoding顯示客戶端發送最頻繁Accept-Encoding頭。

更多用法參考varnishtop

varnishhist

varnishhist工具讀取varnishd的共享內存日誌,同時實時的呈現最近被處理的N個請求的柱狀圖。

1:20, n = 2000                                                     web1




          |  |
          |  |
          | |||
          | |||
          | |||
          |||||
          |||||
          |||||
          |||||
          |||||
          ||||| 
          ||||||
          ||||||                                   
          ||||||                                  #
         |||||||                                 ##
         ||||||||                                ###
+-------+-------+-------+-------+-------+-------+-------+-------+-------
|1e-6   |1e-5   |1e-4   |1e-3   |1e-2   |1e-1   |1e0    |1e1    |1e2

N的值和垂直比例顯示在左上角位置。水平比例是對數的,命中標記爲|,未命中標記爲#。

更多信息查看varnishhist

varnishstat

varnish有許多計數器。它統計miss,hit,存儲信息,建立的線程,被刪除的對象。varnishstat導出這些計數。當我在調優varnish這個工具顯得十分有用。

Uptime mgt:   30+23:10:33                 Hitrate n:        5        5        5
Uptime child: 30+23:10:32                    avg(n):   0.7449   0.7449   0.7449

  NAME                        CURRENT       CHANGE      AVERAGE       AVG_10   
MAIN.uptime                   2675432         1.00         1.00         1.00
MAIN.sess_conn              305793621       223.68       114.00       161.26
MAIN.sess_fail                     29         0.00          .           0.00
MAIN.client_req_400             24209         0.00          .           0.00
MAIN.client_req             698099671       352.50       260.00       340.48
MAIN.cache_hit              537081611       289.59       200.00       287.56
MAIN.cache_hitpass           17285224         5.99         6.00         6.24
MAIN.cache_miss              78237657        22.97        29.00        21.22
MAIN.backend_conn             4715330         0.00         1.00         0.00
MAIN.backend_fail                1557         0.00          .           0.00
MAIN.backend_reuse          158437412        58.92        59.00        52.42
MAIN.backend_toolate           400204         0.00          .           0.00
MAIN.backend_recycle        158838527        59.92        59.00        53.67
MAIN.backend_retry              37981         0.00          .           0.00
MAIN.fetch_head                661309         0.00          .           0.00

Child process uptime:
How long the child process has been running.

一些工具能夠規律的導出varnishstat同時利於查看的顯示這些計數。其中一個即是Munin

更多信息請查看varnishstat

相關文章
相關標籤/搜索