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

Dan*_*ows 7 rest analytics symfony fosrestbundle

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

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

根据我正在更换的项目统计数据,我预计每小时大约有1,000次点击,其中90%的流量来自浏览器.我不会控制非HTML客户端,因此添加跟踪不是一个选项.

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

Dar*_*ook 2

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

CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{Accept}i\""
Run Code Online (Sandbox Code Playgroud)

如果是GET,则%r部分包含POST、PUT等。

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

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

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