7

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

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

根据我要替换的项目的统计数据,我预计每小时约有 1,000 次点击,其中 90% 的流量来自浏览器。我无法控制非 HTML 客户端,因此无法选择添加跟踪。

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

4

1 回答 1

2

有几个选项,这取决于您需要多少信息。如果您只想了解基本活动(对每个 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。(我目前正在评估php 5.4 中的内置网络服务器- 它支持路由,因此可能非常适合网络服务。)

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

于 2012-09-06T00:42:53.113 回答