Varnish Exporter

Varnish 是一款高性能的开源 HTTP 加速器,被安装在web服务器之前,从而缓存web服务器的应用程序和数据,最后相应客户的请求。针对 Varnish ,jonnenauha 开源了一个 Exporter 来监控 Varnish ,官方仓库地址是 https://github.com/jonnenauha/prometheus_varnish_exporter ,最新版本是 1.6.1 ,发布于 2021 年 12 月 9 日。

在每个 Prometheus 收集并公开所有报告的指标时,获取 varnishstat -j 的 JSON 格式输出。

具有多个后端或 Varnish 定义的标识符的指标 (例如VBE.*.happy SMA.*.c_bytes LCK.*.creat)和其他具有类似结构的指标(例如 MAIN.fetch_*) 组合在一个具有可区分标签的指标名称下。在构建查询时,为了让 Varnish 用户熟悉,Vanish 命名约定被尽可能地保留下来,同时尝试遵循 Prometheus 约定,比如小写和使用_分隔符。

Varnish 在处理运行时的更改时,比如通过 vlc 重载添加新的后端,在Varnish 重新启动之前,被删除的后端会被 varnishstat 报告。高级用户可以使用 -n -N,它们被传递给 varnishstat

作者亲自测试了以下版本的 Varnish是可以正常工作的,比如 6.0.0,5.2.1,5.1.2,4.1.1,4.1.0,4.0.3 和 3.0.5。如果 Varnish 项目没有删除或者更改统计数据,那么在 3.x 中缺失的类别分组会被检测到并自动添加,比如 MAIN. ,使标签名称跨版本保持一致,

在这一点上,作者对向后的兼容性不做承诺。如果指标名称或标签被细化,构建的查询语句可能会在新版本上中断,需要重新构建查询语句。

安装和运行

Varnish Exporter 可以通过二进制来运行,通过 https://github.com/jonnenauha/prometheus_varnish_exporter/releases 页面可以下载到最新版本,包括基于各种发行版操作系统。

Varnish Exporter 缺省会通过 9131 端口来暴露指标,使用 prometheus_varnish_exporter -h 可以查看 Exporter 支持的选项。

要测试主机上的varnishstat是否存在,并预览所有导出指标的运行情况可以执行 prometheus_varnish_exporter -test 来查看。

Varnish Exporter 支持从运行在 docker 容器中的 Varnish 抓取监控指标是从1.4.1开始的。使用 docker ps 解析 Varnish 容器名称并运行以下命令。这将使用 docker exec 在指定的容器中执行 varnishstat

prometheus_varnish_exporter -docker-container-name <container_name>

可视化

作者提供了一个预先准备好的 Grafana Dashboard 供大家进行参考,文件地址是 https://github.com/jonnenauha/prometheus_varnish_exporter/blob/master/dashboards/jonnenauha/dashboard.json

Varnish 4 和 VCL UUID

从 1.2 版开始,总是设置后端和服务器标签。对于后端相关指标和 Varnish 4,服务器 tag 将被设置为后端 VCL UUID。请注意,可能同时加载了多个VCL 在这种情况下,服务器 tag 可能没有意义。

为了将所有加载的 VCL 聚合为每个后端指标,建议使用以下Prometheus记录规则:

backend:varnish_backend_bereq_bodybytes:sum = sum(varnish_backend_bereq_bodybytes) without (server)
backend:varnish_backend_bereq_hdrbytes:sum = sum(varnish_backend_bereq_hdrbytes) without (server)
backend:varnish_backend_beresp_bodybytes:sum = sum(varnish_backend_beresp_bodybytes) without (server)
backend:varnish_backend_beresp_hdrbytes:sum = sum(varnish_backend_beresp_hdrbytes) without (server)
backend:varnish_backend_conn:sum = sum(varnish_backend_conn) without (server)
backend:varnish_backend_happy:sum = sum(varnish_backend_happy) without (server)
backend:varnish_backend_pipe_hdrbytes:sum = sum(varnish_backend_pipe) without (server)
backend:varnish_backend_pipe_in:sum = sum(varnish_backend_pipe_in) without (server)
backend:varnish_backend_pipe_out:sum = sum(varnish_backend_pipe_out) without (server)
backend:varnish_backend_req:sum = sum(varnish_backend_req) without (server)

results matching ""

    No results matching ""