我想将Varnish的日志传送到MongoDB中以进行实时报告。
可以直接在Varnish中configuration,还是可以使用官方Varnish-Agent( https://github.com/varnish/varnish-agent )或其他代理或脚本?
我也想过把日志logging到mongoDB中,因为它有一个“fire and forget”作为默认的写入模式,它不会阻止请求,但从来没有进一步的了解。
我看到3个可能的解决scheme
目前还没有mongoDB vmod( https://www.varnish-cache.org/vmods ),这可能是一个开始。
使用mongoDB C库( http://www.mongodb.org/display/DOCS/C+Language+Center ),并使用运行时函数(VRT_GetHdr等)在VCL中编写内联C语言。
如果你要保存一些统计数据作为页面访问和错误代码,你可以使用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。