0

我想跟踪到达我的GAE前端实例的所有请求的cpm_usd 值。我在应用程序的日志中看到了 cpm_usd 标头。但是有没有办法在运行时访问这些数字以便绘制它们?我想为每个端点创建一个近乎实时的成本指标。

  • /rest/foo1:0.000011 美元
  • /rest/foo2:0.000013 美元
  • /休息/bar1:0.000014 美元
  • /rest/bar2:0.000016 美元

是否有可信赖的测试程序来执行此操作?如果没有,是否有另一种不涉及解析我的日志文件的方法?或者我只能通过在后台解析日志来获得这些数字?

更新

如此处所述,我尝试添加一个拦截 {add,set}Header() 调用的sitebricks请求过滤器。

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    chain.doFilter(request, new HttpServletResponseWrapper((HttpServletResponse) response) {
        @Override
        public void setHeader(String name, String value) {
            if ("X-AppEngine-Estimated-CPM-US-Dollars".equals(name)) {
                // log request costs
            }
            super.setHeader(name, value);
        }

        @Override
        public void addHeader(String name, String value) {
            if ("X-AppEngine-Estimated-CPM-US-Dollars".equals(name)) {
                // log request costs
            }
            super.addHeader(name, value);
        }
    });
}

我假设标题要么具有不同的名称,要么 GAE 以不同的方式设置标题。无论哪种情况,我都没有看到成本标头被捕获。

4

1 回答 1

2

标头由位于您的实例前面的应用程序服务器添加,因此您无法从代码中访问此标头。

您将不得不解析日志文件,并且可以考虑使用log2bq来执行此操作。

于 2013-04-19T17:24:19.197 回答