使用反向代理时获取实时流量/访客分析

使用反向代理时获取实时流量/访客分析

我正在实施 Varnish 作为 Ruby on Rails 应用程序的反向代理,并且我正在使用 Google Analytics(JS/客户端脚本来记录访问者数据),但它延迟了几个小时,因此无法知道发生了什么现在我需要一目了然居住包括引荐流量和当前请求/秒的数据。现在我正在使用一个简单的 Rack 中间件应用程序来做实时统计(gist.github.com/235745),但如果大多数流量都击中 Varnish,Rack 就永远不会被击中,所以这行不通。

我目前找到的最接近的解决方案是http://www.reinvigorate.net/但它处于测试阶段(其首页上也没有实施细节)。

Varnish 是否有流量日志,我可以自定义格式来匹配我的 Apache 日志,以便我可以合并它们,或者我是否必须像 GA 一样推出自己的 JS 实现来实时显示数据?

答案1

由于性能原因,Varnish 不记录日志。他们确实允许您使用 varnishncsa 访问 shm,但是,您确实有几个选择。

如果大多数浏览者都支持 javascript(Analytics 正是通过这种方式进行工作的),您可以在页面的某个位置放置一个小型 webbug 来更新某个进程。或者,您可以将特定图像定义为 pass,然后分析您的后端日志,因为每个请求都会将该请求发送到后端。

 if (req.url == "^tracker.jpg$") {
    pass
 }

tracker.jpg 可以很容易地成为某种脚本,用于将数据插入本地日志,或者您可以针对后端 http 网络服务器的网络日志运行日志分析。如果您使用的是 apache:

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" varnishcombined
CustomLog /var/log/apache2/domain.com-access.log varnishcombined

将在大多数日志分析程序期望看到客户端 IP 的列中使用 X-Forwarded-For 标头。

答案2

看一下varnishncsa,特别是 -c 选项。它可能就是您想要的。

答案3

如果你想即时的信息,你应该看看varnishtopvarnishstat命令。这两个命令每秒更新一次。如果你能忍受落后几分钟,你可以考虑使用图表工具,如监控或者仙人掌

请参阅此博客文章varnishstat 使用介绍

相关内容