RRD4J获取检索奇怪的值

时间:2013-04-17 11:09:42

标签: java rrd

我正在尝试使用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等数据

我想要找回值。我做错了吗?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。

当我应该使用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);