示例#1
0
  /**
   * @see io.apiman.manager.api.core.IMetricsAccessor#getResponseStatsSummary(java.lang.String,
   *     java.lang.String, java.lang.String, org.joda.time.DateTime, org.joda.time.DateTime)
   */
  @Override
  @SuppressWarnings("nls")
  public ResponseStatsSummaryBean getResponseStatsSummary(
      String organizationId, String serviceId, String version, DateTime from, DateTime to) {
    ResponseStatsSummaryBean rval = new ResponseStatsSummaryBean();

    try {
      String query =
          "{"
              + "  \"query\": {"
              + "    \"filtered\" : {"
              + "      \"query\" : {"
              + "        \"range\" : {"
              + "          \"requestStart\" : {"
              + "            \"gte\": \"${from}\","
              + "            \"lte\": \"${to}\""
              + "          }"
              + "        }"
              + "      },"
              + "      \"filter\": {"
              + "        \"and\" : ["
              + "          { \"term\" : { \"serviceOrgId\" : \"${serviceOrgId}\" } },"
              + "          { \"term\" : { \"serviceId\" : \"${serviceId}\" } },"
              + "          { \"term\" : { \"serviceVersion\" : \"${serviceVersion}\" } }"
              + "        ]"
              + "      }"
              + "    }"
              + "  },"
              + "  \"size\": 0, "
              + "  \"aggs\" : {"
              + "    \"total_failures\" : {"
              + "      \"filter\" : { \"term\": { \"failure\": true } }"
              + "    },"
              + "    \"total_errors\" : {"
              + "      \"filter\" : { \"term\": { \"error\": true } }"
              + "    }"
              + "  }"
              + "}";
      Map<String, String> params = new HashMap<>();
      params.put("from", formatDate(from));
      params.put("to", formatDate(to));
      params.put("serviceOrgId", organizationId.replace('"', '_'));
      params.put("serviceId", serviceId.replace('"', '_'));
      params.put("serviceVersion", version.replace('"', '_'));
      StrSubstitutor ss = new StrSubstitutor(params);
      query = ss.replace(query);

      Search search = new Search.Builder(query).addIndex(INDEX_NAME).addType("request").build();
      SearchResult response = getEsClient().execute(search);

      rval.setTotal(response.getTotal());
      rval.setFailures(
          response.getAggregations().getFilterAggregation("total_failures").getCount());
      rval.setErrors(response.getAggregations().getFilterAggregation("total_errors").getCount());
    } catch (IOException e) {
      log.error(e);
    }

    return rval;
  }