gpt4 book ai didi

rrdtool - rrd4j 归档类型

转载 作者:行者123 更新时间:2023-12-02 05:01:31 34 4
gpt4 key购买 nike

我无法创建类型正确的存档。我错过了什么?我的例子和https://code.google.com/p/rrd4j/wiki/Tutorial上的官方例子非常相似

RRD 创建:

rrdDef.setStartTime(L - 300);
rrdDef.addDatasource("speed", DsType.GAUGE, 600, Double.NaN, Double.NaN);
rrdDef.addArchive(ConsolFun.MAX, 0.5, 1, 24);
rrdDef.addArchive(ConsolFun.MAX, 0.5, 6, 10);

我添加了一些值:(每个步骤 1,2,3)

long x = L;
while (x <= L + 4200) {
Sample sample = rrdDb.createSample();
sample.setAndUpdate((x + 11) + ":1");
sample.setAndUpdate((x + 12) + ":2");
sample.setAndUpdate((x + 14) + ":3");
x += 300;
}

然后我获取它:

FetchRequest fetchRequest = rrdDb.createFetchRequest(ConsolFun.MAX, (L - 600), L + 4500);
FetchData fetchData = fetchRequest.fetchData();
String s = fetchData.dump();

我得到结果:(希望找到最大值)

920804100:  NaN  
920804400: NaN
920804700: +1.0000000000E00
920805000: +1.0166666667E00
920805300: +1.0166666667E00
...
920808600: +1.0166666667E00
920808900: +1.0166666667E00
920809200: NaN

我想在这里看到最大值。也用 total 进行了尝试,我得到了相同的结果。

我必须更改什么,才能一步发送的最大值,或者一步发送的值的总和。

谢谢

最佳答案

MAX 不是最大值输入,而是最大合并数据点。举个例子,你对 rrd 说的是

  1. 在某个时间点,我会以 1MPH 的速度行驶
  2. 一秒钟后我将达到 2MPH
  3. 两秒钟后我将达到 4MPH

rrd 现在有 3 个数据点,涵盖 300 秒间隔中的 3 秒。 rrd 应该存储什么? 1、2 还是 3?以上都不是它必须以某种方式对数据进行归一化,以便在 X 和 X+STEP 之间说速率是 Y。

使事情复杂化的是,您不能确定您的 3 个数据点是否以相同的 300 秒间隔着陆。您的前 2 个数据点可能在一个间隔内,而 4MPH 可能在下一个间隔内。这是因为存储的起始数据点不完全是start+step。即,如果您从 14090812456 开始,即使您的步数是 300,它也可能类似于 14090812700

使用 GAUGE 存储精确输入值的唯一方法是在 rrd 存储数据点的精确步长时间推送更新。我将在 x 时以 1MPH、在 x+300 时以 2MPH、在 x+300 时以 4MPH,其中 x 从第一个数据点开始。

这是一个 bash 示例,显示了使用您的 rrd 设置的工作原理,我使用的是恒定的开始时间和 x 从我知道的 rrd 的第一个数据点开始。

L=1409080000
rrdtool create max.rrd --start=$L DS:speed:GAUGE:600:U:U RRA:MAX:0.5:1:24 RRA:MAX:0.5:6:10
x=$(($L+200))
while [ $x -lt $(($L+3000)) ]; do
rrdtool update max.rrd "$(($x)):1"
rrdtool update max.rrd "$(($x+300)):2"
rrdtool update max.rrd "$(($x+600)):3"
x=$(($x+900))
done

rrdtool fetch max.rrd MAX -r 600 -s 1409080000
speed

1409080200: 1.0000000000e+00
1409080500: 2.0000000000e+00
1409080800: 3.0000000000e+00
1409081100: 1.0000000000e+00
1409081400: 2.0000000000e+00
1409081700: 3.0000000000e+00
1409082000: 1.0000000000e+00

不是很有用,但如果你将分辨率提高到 1200 秒,你就会开始在更大的时间间隔内获得最大值

rrdtool fetch max.rrd MAX -r 1200 -s 1409080000
speed

1409081400: 3.0000000000e+00
1409083200: 3.0000000000e+00
1409085000: nan
1409086800: nan
1409088600: nan

关于rrdtool - rrd4j 归档类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909125/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com