全部产品
云市场

快速入门指南

更新时间:2019-06-29 05:33:19

Rollup 预处理示例

1. 验证准备

通过实例控制台添加预降采样(Rollup)规则:

rollup-step1

2. 写入验证数据

这里通过压测程序按照每秒一个数据点,持续写入数据:

  1. public static void main(String[] args) throws InterruptedException, IOException {
  2. //TSDS预发环境实例
  3. HiTSDBConfig config = HiTSDBConfig.address("{tsdb实例ID}.hitsdb.rds.aliyuncs.com", 3242)
  4. .listenBatchPut(new BatchPutCallback()
  5. {
  6. @Override
  7. public void response(String s, List<Point> list, Result result) {
  8. Point p = Iterables.getFirst(list, null);
  9. System.out.println("Put datapoint in second:" + (p == null ? null : p.getTimestamp()));
  10. }
  11. @Override
  12. public void failed(String address, List<Point> request, Exception ex) {
  13. System.err.println(ex);
  14. }
  15. })
  16. .config();
  17. HiTSDB tsdb = HiTSDBClientFactory.connect(config);
  18. // 构造数据并写入 HiTSDB
  19. for (int i = 0; i < 3600 * 2; i++) {
  20. int second = Math.toIntExact(System.currentTimeMillis() / 1000);
  21. List<Point> points = new ArrayList<Point>();
  22. points.add(Point
  23. .metric("test.rollup.t5")
  24. .tag("tagk1", "tagv1")
  25. .value(second, Math.random())
  26. .build()
  27. );
  28. points.add(Point
  29. .metric("test.rollup.t5")
  30. .tag("tagk1", "tagv1")
  31. .tag("tagk2", "tagv2")
  32. .value(second, Math.random())
  33. .build()
  34. );
  35. points.add(Point
  36. .metric("test.rollup.t5")
  37. .tag("tagk1", "tagv1")
  38. .tag("tagk2", "tagv2")
  39. .tag("tagk3", "tagv3")
  40. .value(second, Math.random())
  41. .build()
  42. );
  43. tsdb.put(points);
  44. System.out.println(i);
  45. Thread.sleep(1000); // 1秒提交1次
  46. }
  47. // 安全关闭客户端,以防数据丢失。
  48. System.out.println("关闭");
  49. tsdb.close();
  50. }

3.验证任务状态

数据写入过程中,规则的状态会不断更新:

rollup-step2

三个状态指标:

  • 规则命中数据点(5分钟命中率)
  • 规则堆积数据点
  • 规则输出数据点(5分钟命中率)

4.查询验证

4.1 验证原始数据查询

查询请求(存储为 query.json 文件):

  1. {
  2. "start":1560742264,
  3. "end":1560742564,
  4. "queries":[
  5. {
  6. "aggregator":"sum",
  7. "downsample":"1m-sum",
  8. "metric":"test.rollup.t5",
  9. "tags":{
  10. "tagk1":"tagv1",
  11. "tagk2":"tagv2",
  12. "tagk3":"tagv3"
  13. }
  14. }
  15. ]
  16. }

查询命令:

  1. curl -H "Accept: application/json" -H "Content-type: application/json" -X POST --data @query.json http://实例IP:3242/api/query

查询结果[原始]:

rollup-step3

4.1 验证预处理数据查询

查询请求(存储为 query_rollup.json 文件):

  1. {
  2. "start":1560742264,
  3. "end":1560742564,
  4. "queries":[
  5. {
  6. "aggregator":"avg",
  7. "downsample":"1m-sum",
  8. "metric":"test.rollup.t5",
  9. "tags":{
  10. "tagk1":"tagv1",
  11. "tagk2":"tagv2",
  12. "tagk3":"tagv3",
  13. "__granularity__":"1m.sum"
  14. }
  15. }
  16. ]
  17. }

查询命令:

  1. curl -H "Accept: application/json" -H "Content-type: application/json" -X POST --data @query_rollup.json http://实例IP:3242/api/query

查询结果[预降采样]:

rollup-step4

注意预降采样的查询结果中, 包含了 rollupGranularity 这个Tag, 用于表示本次启用了预计算查询,且具体的扫描算子.