Varnish Cache 日志记录到 MongoDB

Varnish Cache 日志记录到 MongoDB

我想将 Varnish 的日志传输到 MongoDB 中进行实时报告。

是否可以直接在 Varnish 中配置,或者可以使用官方的 Varnish-Agent (https://github.com/varnish/varnish-agent) 还是使用其他代理或脚本?

答案1

我也考虑过将统计数据记录到 mongoDB 中,因为它具有“发射后不管”作为默认写入模式,并且它不会阻止请求,但从未进一步采取任何措施。

我发现有 3 种可能的解决方案:

  1. 目前还没有可用的 mongoDB vmod (https://www.varnish-cache.org/vmods) 这可能是其中一个好的开始。

  2. 使用 mongoDB C 库 (http://www.mongodb.org/display/DOCS/C+Language+Center) 并使用运行时函数(VRT_GetHdr 等)在 VCL 内部编写内联 C。

  3. 如果您要将一些统计数据保存为页面访问量和错误代码,您可以使用 python 脚本解析来自 varnishncsa 的日志,并将信息存储在 mongoDB 中以供以后使用(map 和 Reduce)。但这仅限于 Apache 的通用日志格式(其中没有太多信息)。

答案2

我决定使用 PHP 脚本通过 SSH 运行 varnishstat -1 命令。我基于这个项目https://github.com/redsnapper8t8/pyvarnish

答案3

您实际上并不希望在 Varnish 中完成此操作。您想要的是让 varnishncsa 之类的程序直接与 mongodb 对话。这样,如果 Mongo 减慢了页面交付速度,则不会减慢。我们目前正在考虑构建一个 varnishlogjson 程序,以 JSON 格式输出(部分)varnishlog,以便插入到 hadoop 中,但也许 Mongo 也能够使用 JSON。

相关内容