更新时间:2024-08-03 GMT+08:00
查询OpenTSDB数据
功能简介
使用OpenTSDB的查询接口(/api/query)读取数据。
函数genQueryReq()生成查询请求,函数queryData()把查询请求发送到OpenTSDB服务端。
样例代码
以下代码片段在com.huawei.bigdata.opentsdb.examples包的"OpentsdbExample"类的queryData方法中。
private void queryData(String dataPoint) { QUERY_URL = BASE_URL + dataPoint; LOG.info("start to query data in opentsdb, the url is " + QUERY_URL); try (CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpPost httpPost = new HttpPost(QUERY_URL);// 请求需要设置超时时间 addTimeout(httpPost); String queryRequest = genQueryReq(); StringEntity entity = new StringEntity(queryRequest, "utf-8"); entity.setContentType("application/json"); httpPost.setEntity(entity); HttpResponse response = httpClient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); LOG.info("Status Code : " + statusCode); if (statusCode != HttpStatus.SC_OK) { LOG.info("Request failed! " + response.getStatusLine()); } String body = EntityUtils.toString(response.getEntity(), "utf-8"); LOG.info("Response content : " + body); LOG.info("query data to opentsdb successfully."); } catch (IOException e) { LOG.error("Failed to query data.", e); } } static class Query { public Long start; public Long end; public boolean delete = false; public List<SubQuery> queries; } static class SubQuery { public String metric; public String aggregator; public SubQuery(String metric, String aggregator) { this.metric = metric; this.aggregator = aggregator; } } String genQueryReq() { Query query = new Query(); query.start = 1498838400L; query.end = 1498921200L; query.queries = ImmutableList.of(new SubQuery("city.temp", "sum"), new SubQuery("city.hum", "sum")); Gson gson = new Gson(); return gson.toJson(query); }
父主题: 开发OpenTSDB应用