rest - 如何在 Symfony2 中跟踪 API 使用情况?

标签 rest symfony analytics fosrestbundle

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

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

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

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

最佳答案

有几个选项,这取决于您需要多少信息。如果您只想了解基本事件(对每个 Web 服务的调用次数、时间、源 IP、用户代理),那么 apache 日志已经包含所有这些信息。
使用 CustomLog 添加您需要的任何其他字段。例如。您提到了 Accept header ,可以这样添加:

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模块。这会记录所有客户端输入(所有 header 、所有 cookie、所有 POST 数据)。如果人们使用您的 REST API 上传图像,那么无论好坏,您都会在日志中获得完整的图像。那可能会变得非常大。

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

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

关于rest - 如何在 Symfony2 中跟踪 API 使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204422/

相关文章:

css - 在开发环境中找不到更少的节点模块

php - Edit User 错误临时修改了app.user.username,如何解决?

symfony - HWIOAuthBundle - SSL 证书

java - 有没有一种方法可以在没有特定顺序的情况下测试集合中的元素?

java - GET 请求返回 404 未找到

java - 如何设计批量 GET 调用?

node.js - 为广告/分析服务选择数据库

ios - Google Analytics 在 iOS 中未发送任何点击?

java - Mixpanel - 使用 Java API 取消设置人们的属性(property)?

node.js - 环回:如何通过 REST 更新多个对象?