RRD数据库读写
来源:互联网 发布:淘宝卖家怎么激活 编辑:程序博客网 时间:2024/06/05 16:59
RRD数据库读写
1、环境配置:
操作系统:Centos7.2Java Version:1.8.0_131RRD Version:3.1
2、代码
import javafx.util.Pair;import org.rrd4j.ConsolFun;import org.rrd4j.DsType;import org.rrd4j.core.*;import java.io.IOException;import java.util.List;public class RRDUtil { private String rrdName = ""; private long rrdStart = 0; private long rrdStep = 0; private RrdDef rrdDef = null; private RrdDb rrdDb = null; /** * 1、定义RRD数据库 * */ public RRDUtil(String rrdName, long start, long step){ this.rrdName = rrdName; this.rrdStart = start; this.rrdStep = step; this.rrdDb = null; this.rrdDef = new RrdDef(this.rrdName, this.rrdStart, this.rrdStep); this.rrdDef.setVersion(2); } /** * 2、定义RRD数据源 * */ public RRDUtil addDataSource(String dsName, DsType dsType, long heartbeat, double minValue, double maxValue){ if(this.rrdDef == null || dsName == null || dsName.equals("")){ return null; } this.rrdDef.addDatasource(dsName, dsType, heartbeat, minValue, maxValue); return this; } public RRDUtil addDataSource(DsDef dsDef){ if(this.rrdDef == null || dsDef == null){ return null; } this.rrdDef.addDatasource(dsDef); return this; } public RRDUtil addDataSources(List<DsDef> dsDefList){ if(this.rrdDef == null || dsDefList == null){ return null; } for(DsDef dsDef : dsDefList){ this.rrdDef.addDatasource(dsDef); } return this; } /** * 3、定义RRD存档 * */ public RRDUtil addArchive(ConsolFun consolFun, double xff, int steps, int rows){ this.rrdDef.addArchive(consolFun, xff, steps, rows); return this; } public RRDUtil addArchive(ArcDef arcDef){ if(this.rrdDef == null || arcDef == null){ return null; } this.rrdDef.addArchive(arcDef); return this; } public RRDUtil addArchives(List<ArcDef> arcDefsList){ if(this.rrdDef == null || arcDefsList == null){ return null; } for(ArcDef arcDef : arcDefsList){ this.rrdDef.addArchive(arcDef); } return this; } /** * 4、构建,关闭数据库 * */ public RRDUtil build(){ try { this.rrdDb = new RrdDb(this.rrdDef); } catch (IOException e) { e.printStackTrace(); return null; } return this; } public void close(){ try { this.rrdDb.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 5、插入数据 * */ public boolean rrdUpdate(Pair<String, Double>...values){ try { Sample sample = this.rrdDb.createSample(); long time = System.currentTimeMillis() / 1000; sample.setTime(time); for(Pair<String, Double> val : values){ sample.setValue(val.getKey(), val.getValue()); } sample.update(); } catch (IOException e) { e.printStackTrace(); return false; } return true; } public boolean rrdUpdate(String dsName, double value){ try { Sample sample = this.rrdDb.createSample(); long time = System.currentTimeMillis() / 1000; sample.setTime(time); sample.setValue(dsName, value); sample.update(); } catch (IOException e) { e.printStackTrace(); return false; } return true; } public boolean rrdUpdate(double...values){ try { Sample sample = this.rrdDb.createSample(); long time = System.currentTimeMillis() / 1000; sample.setTime(time); sample.setValues(values); sample.update(); } catch (IOException e) { e.printStackTrace(); return false; } return true; } /** * 6、查询数据 * */ public FetchData rrdQuery(ConsolFun fun, long start, long end){ FetchData fetchData; FetchRequest request = this.rrdDb.createFetchRequest(fun, start, end, 1L); try { fetchData = request.fetchData(); System.out.println("== Data fetched. " + fetchData.getRowCount() + " points obtained"); System.out.println(fetchData.toString()); } catch (IOException e) { e.printStackTrace(); return null; } return fetchData; } public FetchData rrdQuery(ConsolFun fun, long start, long end, long resolution){ FetchData fetchData; FetchRequest request = this.rrdDb.createFetchRequest(fun, start, end, resolution); try { fetchData = request.fetchData(); System.out.println("== Data fetched. " + fetchData.getRowCount() + " points obtained"); System.out.println(fetchData.toString()); } catch (IOException e) { e.printStackTrace(); return null; } return fetchData; } /** * 7、导出与恢复 * */ public void exportToXml(String xmlPath){ try { rrdDb.exportXml(xmlPath); } catch (IOException e) { e.printStackTrace(); } } public static RrdDb restoreFromXml(String restoredPath, String xmlPath){ RrdDb rrdDb = null; try { rrdDb = new RrdDb(restoredPath, xmlPath); } catch (IOException e) { e.printStackTrace(); } return rrdDb; }}
3、POM依赖
<dependency> <groupId>org.rrd4j</groupId> <artifactId>rrd4j</artifactId> <version>3.1</version></dependency>
4、测试
public static void main(String[] args) throws InterruptedException{ final Random random = new Random(); long START = System.currentTimeMillis() / 1000; RRDUtil rrdObj = new RRDUtil("demo.rrd", START - 1, 2); rrdObj.addDataSource("users", DsType.GAUGE, 4, 0, Double.NaN) .addDataSource("devices", DsType.GAUGE, 4, 0, Double.NaN) .addArchive(ConsolFun.AVERAGE, 0.5, 1, 1 * 2 * 60 * 60) .addArchive(ConsolFun.AVERAGE, 0.5, 5, 5 * 2 * 60 * 60) .build(); Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { rrdObj.rrdUpdate(new Pair<>("users", 1.1 + random.nextInt(1000)), new Pair<>("devices", 2.2 + random.nextInt(1000))); //rrdObj.rrdUpdate("users", 1.0); } }, 100, 2000); while(true){ rrdObj.rrdQuery(ConsolFun.AVERAGE, START, System.currentTimeMillis() / 1000, 2); Thread.sleep(2000); }}
阅读全文
0 0
- RRD数据库读写
- rrd数据库
- 2、创建rrd数据库
- RRD 数据库简介及操作
- bdb数据库学习 ,rrd数据文件学习
- 将RRD数据库中数据导入MYSQL中
- 磁盘读写和数据库读写
- RRD文件格式分析(一)
- Python and RRD
- rrdtool info **.rrd
- Python and RRD
- lvs-rrd 监控LVS
- RRD文件格式分析
- Cacti-rrd安装
- rrd安装和使用
- 数据库读写图片
- C#,数据库读写XML
- C#,数据库读写XML
- InfluxDB数据备份与恢复
- Hdu-5902-GCD is Funny (gcd)
- stl-hash_map
- ARM 内存对齐总结
- InfluxDB数据库读写
- RRD数据库读写
- HDU 4101Ali and Baba (bfs)
- 7-14 总结
- Json字符串与java对象互转(Java版本)
- 一个屌丝程序猿的人生(七十)
- 【LectCode】230. Kth Smallest Element in a BST
- Android App图片轮播效果的组件化
- 第十三周 leetcode Add to List 55. Jump Game(Medium)
- Markdown编辑器使用说明