varnish 4.0 官方文档翻译21-Reporting and statistics

谁都会走 提交于 2019-12-01 04:01:32

Reporting and statistics

本部分包括如何查看Varnish正在做什么,从每个http请求流的详细记录到汇总统计计数器。

  • Logging in Varnish

  • Statistics

    • varnishtop

    • varnishhist

    • varnishstat

Logging in Varnish

Varnish中一个很棒的特点是工作日志的记录方式。varnish不记录日志到日志文件,而是调用VSL记录到共享内存片段,VSL-varnish共享日志。当这个片段被写完后,varnish开始覆盖老数据。

这种方式比记录到文件快的多得多,并且不需要磁盘空间。除此之外VSL可以给到你需要的尽可能多的信息。

另一方面,如果你忘记有程序实际在写日志到磁盘,日志将会占用过多的磁盘。

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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!