RESTful API与谷歌分析
我正在用Python(Flask)搭建一个RESTful API。
我想要能够追踪以下信息:
- 哪些请求被发送过
- 这些请求发生的时间
- 发送响应花了多长时间
我想用Google Analytics来实现这个,因为它有很不错的界面和丰富的功能。
我的问题
我该如何把Google Analytics整合进一个REST API里呢?
或者有没有人知道其他可以用的工具或库?
目前我找到的有:
- 一个使用MongoDB的追踪应用
- 还有Google数据API - 但这个是用来读取GA数据的,不是用来追踪API的?
2 个回答
我知道这是一篇很老的帖子。我发现了关于在Python中使用谷歌分析的支持信息。
https://developers.google.com/api-client-library/python/apis/analytics/v3
觉得在这里记录一下也不错(y)
其实有两种方法可以把服务器上的数据发送到谷歌分析(Google Analytics)。标准的方法是使用GIF图像请求API,这个API和客户端使用的ga.js是一样的。谷歌还在开发一个新的REST API,叫做测量协议(Measurement Protocol),不过现在还只是开发者预览版。
服务器端GA
在尝试将服务器端数据发送到GA时,有几个问题需要解决。
就像@mehaase提到的,GIF API会从请求中获取IP地址,所以你所有的服务器请求都会显示为来自你服务器所在位置的用户。测量协议也不允许你更改请求的IP。在这个回答中,我假设使用的是公开的GIF API。
另一个问题是,GIF端点需要一个客户端的cookie。你可以在每个请求中伪造这个cookie,但这会导致每个事件看起来像是一个新访客。只要你把服务器端API和网站放在不同的谷歌分析账户中,这样也没问题。
另外要注意的是,谷歌可能需要最多一个小时才能显示你发送的事件。这可能会让调试变得有点痛苦,所以要有耐心。
这里是GA cookie中每个变量的解释,还有一个不错的node.js示例,展示如何将服务器端数据发送到GA。
其他事件追踪选项
虽然GA在跟踪网站指标方面非常出色,但它并不是专门用来跟踪服务器端事件的。事件追踪是一种分析类别,非常适合用于RESTful API的使用追踪。
这个API通常看起来是这样的:
analytics.track('API Response', {
method : 'POST',
endpoint: '/comments'
duration: 124
status : 500
});
它可以让你查看每个事件及其属性的频率和分布报告。你可以回答一些问题,比如:今天发生了多少次/comments API调用?有多少次是200状态?有多少次响应时间超过200毫秒?等等。
这里有一些事件追踪工具,可以帮助你做到这一点:
我是Segment.io的联合创始人,这是一家提供简单API的公司,支持客户端、服务器端和移动分析。我们允许你从python、php、ruby、node、java、.net、javascript和iOS发送数据,我们会将其转发到谷歌分析、Mixpanel、KissMetrics、Keen.IO或其他支持的服务,而你无需学习它们的API。
最后,这里有一篇来自我们分析学院的文章,解释了为什么事件追踪是有用的。