- 首先官方并没有给出对应的Java api接口
- opentsdb官方地址
- 项目中我们采用http的方式对数据进行写入和读取
数据写入
public boolean addBDRecord(BDInfo record) {
String addurl=opentsdburl+"api/put?details";
long time = System.currentTimeMillis();
JSONObject json=new JSONObject();
json.put("metric", record.getYjjId()+".K11."+record.getDevno());
json.put("timestamp", time);
json.put("value", record.getLoctime());
json.put("tags", JSONObject.toJSON(record));
logger.info("opentsdb参数:{}",json.toJSONString());
String result=httpClient.doPost(addurl, json);
logger.info("opentsdb返回:{}",result);
JSONObject resultobj=JSONObject.parseObject(result);
if(resultobj.getInteger("success")>=1){
return true;
}
return false;
}
数据读取
public void getTLJRecordList(String yjjId, String typestr, Date startTime, Date endTime) {
JSONObject json=new JSONObject();
json.put("start",startTime.getTime());
json.put("end", endTime.getTime());
JSONArray queries=new JSONArray();
JSONObject childjson=new JSONObject();
json.put("queries", queries);
queries.add(childjson);
childjson.put("metric", yjjId+"."+typestr);
childjson.put("aggregator", "sum");
childjson.put("downsample", "5s-avg");
childjson.put("rate", true);
JSONObject tags=new JSONObject();
childjson.put("tags", tags);
tags.put("v1", "*");
//tags.put("v2", "*");
//tags.put("v3", "*");
//tags.put("v4", "*");
//tags.put("v5", "*");
//String geturl=opentsdburl+"api/query";
String geturl="http://47.99.194.20:4242/api/query";
String result=httpClient.doPost(geturl, json);
logger.info("返回数据:{}",result);
}
- 可以在本机IP+:4242访问 官方提供的web界面
如图
- But,官方提供的web界面并不直观。grafana 提供了更多更全面的数据展示