OpenTSDB使用/ API / query进行数据查询的java实现

opentsdb之java api设计 opentsdb query api 阅读详情

 

2018年08月01日 22:26:46 jyj019 阅读数:462

 版权声明:虽然坑有点多,不过转载请声明原作者 https://blog.youkuaiyun.com/jyj1100/article/details/81347817

写在前面,这里是补充下java代码的一些实现,感谢同事w给我提供的帮助。参考文献和其他文章列表放在末尾。


这篇文章讲的OpenTSDB如何数据的java实现,实现步骤写出来就比较简单,也有其他一些方法,不过post应该是最普遍的:

这里主要讲解了一些查询格式数据的拼装,讲了历史数据点查询,历史数据段时间查询,实时数据查询共3种方式。对查询数据的插值和聚合方式的设置采用了最简单的一种,这个准备之后开新坑来讲。

这里面实时查询的设置还有待研究,待补全。


历史数据点查询:

根据查询时间点,metric和tags对数据进行查询,比较重要的地方是对数据时间点那个时间戳进行处理,能达到一个比较好的查询效果。

 
  1. public String historyQuerySinglePoint(List<String> Codes, String foo1, long timestamp) throws Exception {

  2.  
  3. //查询范围加大用于插值

  4. long startTime = timestamp - 1;

  5. long endTime = timestamp + 1;

  6.  
  7. tag.put(Foo1, foo1);

  8. //查询标签

  9. List<Map<String, Object>> qualityQueriesList = new ArrayList<>();

  10. for (String Codes : code) {

  11. //标签

  12. Map<String, Object> qualityQuery = new HashMap<>();

  13. qualityQuery.put("metric", code);

  14. qualityQuery.put("tags", tag);

  15. qualityQuery.put("aggregator", "none");

  16. qualityQueriesList.add(qualityQuery);

  17. }

  18. //剩余查询条件!!!!!

  19. Map<String, Object> query = new HashMap<>();

  20. query.put("queries", qualityQueriesList);

  21. query.put("start", startTime);

  22. query.put("end", endTime);

  23.  
  24. //查询条件转为json字符串

  25. String queriesJson = JSON.toJSONString(query, SerializerFeature.DisableCircularReferenceDetect);

  26.  
  27. //标签查询请求

  28. String wesult = HttpClientPost.post(URL, queriesJson);

  29.  
  30. //如果标签查询结果不为空准备进行结果数据组装

  31. JSONArray resultsArr = null;

  32. if (StringUtils.isNotEmpty(result)) {

  33. resultsArr = JSON.parseArray(result);

  34. }

  35.  
  36.  
  37. //数据的组装返回

  38. }


历史时间段数据查询:

基本和上面代码一样,就是修改起始,终止时间为对应时间戳。

但是需要增加对起止时间长度的验证,避免数据过长导致返回时间过长甚至失败。

同时可以对采样进行一些基础的设置。

 
  1. public String historyQueryInterval(List<String> Codes, String foo1, String foo2, long startTime, long endTime, int sampleInterval, SampleFunc func) throws Exception {

  2.  
  3. tag.put(Foo1, foo1);

  4.  
  5. //查询标签

  6. List<Map<String, Object>> qualityQueriesList = new ArrayList<>();

  7. for (String Codes : code) {

  8. //标签

  9. Map<String, Object> qualityQuery = new HashMap<>();

  10. qualityQuery.put("metric", code);

  11. qualityQuery.put("tags", tag);

  12. //下采样的函数设置,省略具体内容

  13. query.put("downsample", sampleInterval + func.getFunc() );

  14. qualityQuery.put("aggregator", "none");

  15. qualityQueriesList.add(qualityQuery);

  16. }

  17. //剩余查询条件!!!!!

  18. Map<String, Object> query = new HashMap<>();

  19. query.put("queries", qualityQueriesList);

  20. query.put("start", startTime);

  21. query.put("end", endTime);

  22.  
  23. //查询条件转为json字符串

  24. String queriesJson = JSON.toJSONString(query, SerializerFeature.DisableCircularReferenceDetect);

  25.  
  26. //标签查询请求

  27. String wesult = HttpClientPost.post(URL, queriesJson);

  28.  
  29. //如果标签查询结果不为空准备进行结果数据组装

  30. JSONArray resultsArr = null;

  31. if (StringUtils.isNotEmpty(result)) {

  32. resultsArr = JSON.parseArray(result);

  33. }

  34.  
  35. //数据的组装返回

  36. }


实时数据查询:

实时查询没有采用时间戳,而是采用 resolveNames和backScan来实现,这和官方文档的必须有些冲突,具体信息待研究。

 
  1. public String realTimeQuery(List<String> Codes, String foo1) throws Exception {

  2.  
  3. //查询范围加大用于插值

  4. long startTime = timestamp - 1;

  5. long endTime = timestamp + 1;

  6.  
  7. tag.put(Foo1, foo1);

  8. //查询标签

  9. List<Map<String, Object>> qualityQueriesList = new ArrayList<>();

  10. for (String Codes : code) {

  11. //标签

  12. Map<String, Object> qualityQuery = new HashMap<>();

  13. qualityQuery.put("metric", code);

  14. qualityQuery.put("tags", tag);

  15. qualityQuery.put("aggregator", "none");

  16. qualityQueriesList.add(qualityQuery);

  17. }

  18.  
  19. //剩余查询条件!!!!

  20. Map<String, Object> query = new HashMap<>();

  21. query.put("queries", valueQueriesList);

  22. query.put("resolveNames", true);

  23. /**

  24. * 时序数据库BackScan时间范围,这里BACK_SCAN=24

  25. */

  26. query.put("backScan", BACK_SCAN);

  27.  
  28. //查询条件转为json字符串

  29. String queriesJson = JSON.toJSONString(query, SerializerFeature.DisableCircularReferenceDetect);

  30.  
  31. //标签查询请求

  32. String wesult = HttpClientPost.post(URL, queriesJson);

  33.  
  34. //如果标签查询结果不为空准备进行结果数据组装

  35. JSONArray resultsArr = null;

  36. if (StringUtils.isNotEmpty(result)) {

  37. resultsArr = JSON.parseArray(result);

  38. }

  39.  
  40.  
  41. //数据的组装返回

  42. }


OpenTSDB系列

OpenTSDB的/ API / PUT(opentsdb的输入的api)简介https://blog.youkuaiyun.com/jyj1100/article/details/81323705

OpenTSDB使用/ API / PUT进行数据存储的java实现https://blog.youkuaiyun.com/jyj1100/article/details/81330623

(转)opentsdb查询的简介——基础知识和UI操作https://blog.youkuaiyun.com/jyj1100/article/details/81324017

OpenTSDB的/ API / query(opentsdb的查询的api)简介(一)https://blog.youkuaiyun.com/jyj1100/article/details/81326660

OpenTSDB的/ API / query(opentsdb的查询的api)简介(二)https://blog.youkuaiyun.com/jyj1100/article/details/81329290

OpenTSDB使用/ API / query进行数据查询的java实现https://blog.youkuaiyun.com/jyj1100/article/details/81347817

其他OpenTSDB系列文章见

OpenTSDB系列目录https://blog.youkuaiyun.com/jyj1100/article/details/83450282

openTSDB API 接口使用说明 接口列表:1./s返回的是静态文件的内容:(目前仅支持:just HTML, JSON, Javascript and PNG. )例子:http://localhost:4242/s/queryui.nocache.js返回结果:function queryui(){var T='',Bb='" for "gwt:onLoadErrorFn"',zb='" for "gwt:onProperty... 阅读详情

相关推荐

opentsdb-java-sdk:用Java语言封装了openTSDB的http api

opentsdb-java-sdk 目前实现的功能 查询数据,支持同步和异步 写入数据,支持异步回调 删除数据 查询最新数据 查询metric、tag_key和tag_value,支持auto_complete `源码中CrudTest类提供了一些使用说明和测试,包括并发查询测试和并发写入测试` 快速开始 Maven依赖 <dependency> <groupId>com.github.eulery</groupId> <artifactId>opentsdb-java-sdk</artifactId> <version>1.1.6</version> </dependency> 创建连接 OpenTSDBConfig config = OpenTSDBConfig.address(host, port)

Java 实现对 OpenTSDB插入数据,查询数据

OpenTSDBUtilpackage com.xxx.util; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.opentsdb.client.ExpectResponse; import org.opentsdb.client.HttpClient; impo...

杨鑫newlife的专栏 5158

openstdb-2..3

metrics,一种监控数据库,与和base辅助共用,适用于监控点采集

OpenTSDB 开发指南之 Grafana 展示OpenTSDB监控数据

目录 准备数据 在Grafana创建OpenTSDB连接 创建一个仪表盘 统计 准备数据 将数据插入OpenTSDB {"metric":"jast.data","value":1023,"timestamp":1588742563,"tags":{"type":"jast-graph-data"}} {"metric":"jast.data","value":1024,"time...

jast 2271

IAR下载Linux环境适配:入门级安装指导

详细介绍如何在Linux系统中完成iar下载与环境配置,帮助开发者快速上手IAR集成开发环境,解决常见安装问题,提升开发效率。

weixin_35754676的博客 767

RT_Thread Studio使用——USB虚拟串口(VCP)

RT_Thread Studio使用——USB虚拟串口(VCP)

weixin_44735205的博客 3376

OpenTSDB使用总结-(1)

OpenTSDB使用总结-(1)

u011250186的博客 192

EBOM转MBOM实战:华为云数字工厂如何5步搞定BOM自动转换(含避坑指南)

本文详细解析了华为云数字工厂平台如何通过五步自动化流程实现EBOM到MBOM的高效转换,涵盖模型预配置、逻辑流编排、工艺属性注入等关键步骤,并提供了多工厂差异化配置、历史数据迁移等典型场景的避坑指南。该方案显著提升转换效率,降低差错率,助力企业实现数字化转型。

weixin_29215391的博客 271

OpenTSDB的/ API / query(opentsdb的查询的api)简介(二)

写在前面,这里是补充宇毅的博客内容翻译几篇文档,补充下java代码的一些实现,参考文献和其他文章列表放在末尾 翻译原文档http://opentsdb.net/docs/build/html/api_http/query/index.html 这篇文章是接上篇OpenTSDB的/ API / query(opentsdb的查询的api)简介(一)https://blog.youkuaiyun.com/jy...

jyj019的博客 5085

车载以太网:PHY(物理层)介绍

本文以TJA1101芯片为实例介绍了车载以太网PHY(物理层)组成。

kevin1499的博客 6231

AI摄影师:自动构图与修图算法设计

AI摄影师:自动构图与修图算法设计​ ,人工智能,计算机视觉,大模型,AI,AI 摄影师的核心能力体现在两方面:自动构图(通过算法优化画面元素布局)与智能修图(自动调整光影、色彩、细节)。例如,手机摄影中的 “AI 构图建议” 功能可实时框选最佳拍摄区域,修图软件中的 “一键增强” 能在 0.1 秒内完成专业级调色,这些都依赖于计算机视觉与深度学习的深度融合。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 16万+

OpenTSDB 开发指南之 查询数据

前面博主写了一篇文章去介绍opentsdb的http接口的使用方法,但是某一些接口的使用还是比较复杂,这篇文章会通过example来详细讲述opentsdb的一些特性。 本文的举的例子有这些: 基本的写入和查询 数据的注释和说明 子查询 查询中的filters使用 查询数据的rate(增长率) 直方图中百分位数(percentiles)的查询 Downsampling(下采样) ...

jast 2945

YOLOv8进阶实战:融合SAHI超推理算法,在无人机应用中精准捕捉视频与图片中的微小目标

YOLOv8改进是一种先进的目标检测算法,通过引入辅助超推理算法SAHI推理,使得小目标无法逃避检测。SAHI推理算法结合视频和图片的特点,利用先进的超推理技术,提高了目标检测的准确性和鲁棒性。不仅如此,YOLOv8改进还支持对视频和图片进行实时的目标检测,将检测结果直观地呈现给用户。这一技术的应用范围广泛,可以用于安防领域,提升监控设备的性能和效率;也可以用于无人驾驶领域,实现精准的目标识别和跟踪。总之,YOLOv8改进是一项具有突破性的技术,为目标检测领域带来了重大的进展。

weixin_51988935的博客 809

[转]OpenTSDB监控系统的研究和介绍

介绍开源监控系统OpenTSDB,它用hbase存储所有的时序(无须采样)来构建一个分布式、可伸缩的时间序列数据库。它支持秒级数据采集所有metrics,支持永久存储,可以做容量规划,并很容易的接入到现有的报警系统里。OpenTSDB可以从大规模的集群(包括集群中的网络设备、操作系统、应用程序)中获取相应的metrics并进行存储、索引以及服务,从而使得这些数据更容易让人理解,如web化,图形化等。

heiyeluren的blog(黑夜路人的开源世界) 4883

鸿蒙开发实战项目(九十二):HUAWEI Health血压测量

是华为开发的用于运动健康领域的一个开放平台, 三方APP可以借助HUAWEI Health开放平台提供的。

斌擎科技 1133

在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案

本文主要介绍了在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 原因分析 3. 解决方案

weixin_43178406的博客 10万+

ORAS实战案例:在真实项目中如何应用容器镜像管理

ORAS(OCI Registry as Storage)是一款强大的OCI注册表客户端工具,能够帮助开发者高效管理容器镜像、 artifacts和软件包。本文将通过实际操作案例,展示如何在真实项目中应用ORAS进行容器镜像管理,从基础操作到高级应用场景,让你快速掌握这一工具的使用技巧。 ## 🌟 基础操作:ORAS核心命令实战 ### 🔍 推送镜像:oras push 推送本地文件到远

gitblog_00061的博客 472

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

OpenTSDB使用总结-(3)

查询数据 功能介绍 从OpenTSDB数据库中查询数据。 URI URI格式 POST {OpenTSDB URL}/api/query 请求 请求样例 { &quot;start&quot;: 1504527820, &quot;end&quot;: 1504557820, &quot;queries&quot;: [ { &quot;aggregator&qu

zclhit 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

OpenTSDB查询代码解析

本文简单介绍了OpenTSDB的查询/api/query的解析过程。 分析过程是从上而下。

小人物大青春的博客 2036

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

(转)opentsdb查询的简介————基础知识和UI操作

这篇文章基本上是转至https://blog.youkuaiyun.com/xsdxs/article/details/65938213,先严正声明下。 同时翻译至http://opentsdb.net/docs/build/html/user_guide/query/index.html 其实这种转载我也不想做,但是这篇确实是opentsdb查询的核心内容,但这篇文章也有一定的坑。也是我把它设置为基础知...

jyj019的博客 3903

OpenTSDB的/ API / PUT(opentsdb的输入的api)简介

写在前面,这里是补充宇毅的博客内容翻译几篇文档,补充下java代码的一些实现,参考文献和其他文章列表放在末尾 翻译原文档http://opentsdb.net/docs/build/html/api_http/put.html 这篇文章讲的OpenTSDB如何存储数据的理论知识,比较简单,但需要在使用前了解。其中有两点比较重要的地方。 第一是存储数据的json格式,4个指标必须都有,并按正确...

jyj019的博客 3694

【翻译】OpenTSDB 2.3-- 数据查询和读取

查询或读取数据 OpenTSDB提供了许多提取,操作和分析数据的方法。可以通过CLI工具、HTTP API查询数据,可以通过GnuPlot图来查看数据。有的开源工具,如Grafana和 Bosun也可以访问TSDB数据以展示数据。OpenTSDB基于标签的系统在查询上可能有点棘手,因此请仔细阅读本文档并查看以下页面以获取更深入的信息。此页面上的查询示例基于HTTP API。 了解指标和时间序列 ...

qq_36101933的博客 2441

opentsdb http api 使用方法

opentsdb http api 使用方法

u011250186的博客 632

OpenTSDB HTTP API之/api/query

文章目录/api/queryQuery API EndpointsVerbsRequestsSub QueriesRate OptionsDownsamplingFiltersFilter ConversionsPercentilesMetric Query String FormatTSUID Query String FormatExample Query String RequestsExample Content RequestResponseExample Aggregated Default R

有问题的请私信或关注v【技术印记】留言 1207

OpenTsdb官方文档----查询或读取数据

OpenTSDB提供了许多提取,处理和分析数据的方法。数据可以通过CLI工具,HTTP API来查询,并且作为为一个GnuPlot图形输出展示。开源工具如Grafana和Bosun可以访问TSDB的数据。使用OpenTSDB的基于标签的系统进行查询可能有点棘手,所以仔细阅读本文档并查看以下页面以获取更深入的信息。此页面上的示例查询遵循HTTP API格式。 查询组件 OpenTSDB提供了多个...

tianyeshiye 3075
上一篇: spark SQL学习(综合案例-日志分析)
下一篇: OpenTSDB性能测试
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值