2012-08-30 33 views
6

我正在使用FOSRestBundle在Symfony2中构建一个RESTful服务。我可以使用Google Analytics跟踪网页客户端中的网页使用情况。但是,这显然不适用于非HTML客户端的请求。如何跟踪Symfony2中的API使用情况?

在我开始安装Redis,编写服务,事件调度程序等之前,这个问题已经解决了吗?有没有对性能没有严重影响的解决方案?

根据我要更换的项目的统计数据,我预计每小时有1000次点击,其中90%的流量来自浏览器。我不会控制非HTML客户端,因此添加跟踪没有选项。

我需要的数据出于同样的原因,任何人都需要分析数据 - 制作漂亮的图表,并提供关于在哪里开发资源的定量证据。

+4

也许你可以搜索一些分析你的访问日志的东西(对性能没有影响) – greg0ire

+0

不是一个坏主意。我对Apache不太了解 - 我怎么能告诉它为每个请求记录'Accept'头? –

+0

我知道你可以自定义日志格式。请参阅[LogFormat](http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#logformat)指令文档。 – greg0ire

回答

1

有几个选项,它取决于你需要多少信息。如果您只想知道基本活动(每个Web服务有多少个呼叫,何时源IP,用户代理),那么apache日志已经拥有所有这些信息。 使用CustomLog添加您需要的任何其他字段。例如。您提到了Accept头,可以像这样添加:

CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{Accept}i\"" 

如果它是GET,POST,PUT等包含在%r部分中。

如果您想知道POST或PUT数据中实际存在的内容,那就更困难了。极端的解决方案是使用mod_dumpio模块。记录所有客户端输入(所有标题,所有cookie,所有POST数据)。如果人们使用REST API上传图像,那么无论好坏,都可以在日志中获得完整图像。这可能会变得非常大。

我喜欢的解决方案是从PHP登录:PHP脚本顶部的自定义日志,或者处理请求的时候。然后您可以完全控制要记录的内容,最简单的分析格式,也可以将其放在上下文中(例如记录文本数据,但不记录图像字节)。在开发和小型站点中,我会与apache日志记录并行执行此操作。如果Apache需要太多的CPU,那么禁用Apache日志记录,或者完全绕过Apache。 (我目前正在评估built-in webserver in php 5.4--它支持路由,因此可能非常适合网络服务。)

顺便说一句,分析服务器日志与Google Analytics(分析)并行:它可以帮助您了解准确度每个。