我正在尝试使用RRD4J,但它会检索奇怪的数据。也许我在做些奇怪的事情。
我创建了具有以下功能的数据库:
// MAIN DATA SOURCES
rrdDef.addDatasource("create", DsType.COUNTER, 600, Double.NaN, Double.NaN);
rrdDef.addDatasource("copy", DsType.COUNTER, 600, Double.NaN, Double.NaN);
rrdDef.addDatasource("check", DsType.COUNTER, 600, Double.NaN, Double.NaN);
rrdDef.addDatasource("delete", DsType.COUNTER, 600, Double.NaN, Double.NaN);
// AVERAGE ARCHIVES
rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 1, 576);
rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 6, 336);
rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 24, 720);
rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 288, 540);
// MAX ARCHIVES
rrdDef.addArchive(ConsolFun.MAX, 0.5, 1, 576);
rrdDef.addArchive(ConsolFun.MAX, 0.5, 6, 336);
rrdDef.addArchive(ConsolFun.MAX, 0.5, 24, 720);
rrdDef.addArchive(ConsolFun.MAX, 0.5, 288, 540);
我更新如下:
Sample sample = rrdDb.createSample();
sample.setTime(now);
sample.setValue("create", (double)create);
sample.setValue("copy", (double)copy);
sample.setValue("check", (double)check);
sample.setValue("delete", (double)del);
sample.update();
并检索数据:
long endTime = Util.getTime();
long startTime = endTime - (12*60*60L);
FetchRequest fetchRequest = rrdDb.createFetchRequest(ConsolFun.MAX, startTime, endTime);
FetchData fetchData = fetchRequest.fetchData();
System.out.println(fetchData.dump());
但是我检索了最奇怪的数据。我输入了95、48、78和15之类的数字,并收到了+ 1.8046081071E07,+ 1.8046079370E07,+ 0.0000000000E00和+ 1.8046081013E07之类的数据
我想找回值。难道我做错了什么?
最佳答案
我找到了解决方案。
我应该使用DsType.GAUGE时使用了DsType.COUNTER。
因此,使用以下代码创建数据库解决了该问题:
rrdDef.addDatasource("create", DsType.GAUGE, 600, Double.NaN, Double.NaN);
rrdDef.addDatasource("copy", DsType.GAUGE, 600, Double.NaN, Double.NaN);
rrdDef.addDatasource("check", DsType.GAUGE, 600, Double.NaN, Double.NaN);
rrdDef.addDatasource("delete", DsType.GAUGE, 600, Double.NaN, Double.NaN);