清漆cachinglogging到MongoDB

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

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

我也想过把日志logging到mongoDB中,因为它有一个“fire and forget”作为默认的写入模式,它不会阻止请求,但从来没有进一步的了解。

我看到3个可能的解决scheme

  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脚本parsingvarnishncsa中的日志,并在mongoDB中存储信息以用于后面的使用(map和reduce)。 但是这仅限于Apache的通用日志格式(那里没有太多的信息)。

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

你不是真的想要在光油中完成。 你想要做的就是像varnishncsa直接与mongodb对话。 这样,如果Mongo减慢页面交付速度不会减慢。 我们目前正在构build一个构buildvarnishlogjson程序的想法,以输出JSON格式的varnishlog的一部分,以便插入到hadoop中,但也许Mongo也能够使用JSON。