RRDTool 图表数据是每周和每月之间的差异

RRD Tool Graph data is different between weekly and monthly

当我为每周生成图表时,该值为 4 但当我为每月生成时,该值约为 2.1

我尝试获取数据,结果是4。 使用 week/month

的时间戳获取时数据相同

Weekly_Graph

Monthly_Graph

我的 rrd 信息:

filename = "icscf_1_tpip_total.rrd"
rrd_version = "0003"
step = 900
last_update = 1610441186
header_size = 6176
ds[max_in].index = 2
ds[max_in].type = "GAUGE"
ds[max_in].minimal_heartbeat = 1000
ds[max_in].min = NaN
ds[max_in].max = NaN
ds[max_in].last_ds = "2.0"
ds[max_in].value = 1.7200000000e+02
ds[max_in].unknown_sec = 0
rra[0].cf = "AVERAGE"
rra[0].rows = 96
rra[0].cur_row = 85
rra[0].pdp_per_row = 1
rra[0].xff = 0.0000000000e+00
rra[0].cdp_prep[2].value = NaN
rra[0].cdp_prep[2].unknown_datapoints = 0
rra[1].cf = "AVERAGE"
rra[1].rows = 96
rra[1].cur_row = 34
rra[1].pdp_per_row = 1
rra[1].xff = 0.0000000000e+00
rra[1].cdp_prep[2].value = NaN
rra[1].cdp_prep[2].unknown_datapoints = 0
rra[2].cf = "AVERAGE"
rra[2].rows = 2880
rra[2].cur_row = 1828
rra[2].pdp_per_row = 1
rra[2].xff = 0.0000000000e+00
rra[2].cdp_prep[2].value = NaN
rra[2].cdp_prep[2].unknown_datapoints = 0
rra[3].cf = "MAX"
rra[3].rows = 52
rra[3].cur_row = 43
rra[3].pdp_per_row = 672
rra[3].xff = 0.0000000000e+00
rra[3].cdp_prep[2].value = 4.0000000000e+00
rra[3].cdp_prep[2].unknown_datapoints = 489

我的 RRD 命令: 每周:

rrdtool graph /.../Maximum_incoming_call.png 
--start 1610104905 
--end 1610709705 
--title Maximum_incoming_call 
--lower-limit 0 
--alt-autoscale-max 
--slope-mode 
--units=si 
--alt-y-grid TEXTALIGN:left COMMENT:"1 G = 1.000.000.000 | 1 M = 1.000.000 | 1 k = 1.000 \n"  
DEF:test0="/..../icscf_1_tpip_total.rrd":max_in:AVERAGE 
LINE:test0#FF0000:"tpip total" 
--width 600 
--height 352

每月:

rrdtool graph
/.../Maximum_incoming_call.png
--start 1608117756 
--end 1610709756 
--title Maximum_incoming_call 
--lower-limit 0 
--alt-autoscale-max 
--slope-mode 
--units=si 
--alt-y-grid TEXTALIGN:left COMMENT:"1 G = 1.000.000.000 | 1 M = 1.000.000 | 1 k = 1.000 \n"
DEF:test0="/..../icscf_1_tpip_total.rrd":max_in:AVERAGE 
LINE:test0#FF0000:"tpip total" 
--width 600 
--height 352

我不知道为什么每周显示效果很好,但每月显示只有想象中的一半。

我的 rrdtool 获取:

rrdtool fetch icscf_1_tpip_total.rrd AVERAGE --start 1610104905 --end 1610709705
                max_in 
.....
1610418600:  4.0000000000e+00
.....


rrdtool fetch icscf_1_tpip_total.rrd AVERAGE --start 1608117756 --end 1610709756
                    max_in  
....   
1610418600: 4.0000000000e+00  
....

这是因为图表中的隐式平均。

首先,让我们抛开为什么你的RRA 0、1和2都是AVERAGE类型,1cdp=1pdp的问题。您的 RRA 0 和 1 完全多余。您可能想查看如何创建 RRD 文件。

当您执行 rrdtool graph 时,您将使用 1cdp=1pdp RRA,这实际上是原始数据。但是,一旦数据宽度大于每像素 1cdp,RRDTool 将在显示之前隐式合并数据。

如果您显示的是每周图表,那么您最终会得到每个 cdp 1 个像素(实际上 672 cdp 代表 600 个像素,但已经足够接近了),因此您将显示存储的值在 RRA 中(在本例中为 4.0)。然而,当你这样做一个月后,你将拥有 4 倍多的样本,但像素数量相同。因此,您显示的像素实际上是 4 个数据点的平均值(准确地说是 4.48cdp)。这意味着,如果数据不规则,它将平滑数据并且您将获得较低的峰值,这就是您所看到的(示例中的值为 2.1)。

当您执行 rrdtool fetch 时,您将直接从 RRA 中提取数据而无需合并(除非您明确要求)。所以,在这种情况下,您会再次看到 4.0。

如何处理这取决于你想看到什么。由于您拥有更高分辨率的 MAX RRA,因此您有几个选择 -

  • 为您的月度图表绘制两条线 - 平均值和最大值。您可能还想添加 MIN RRA 并显示该行,具体取决于数据的尖锐程度。
  • 使用您的 AVERAGE RRA,但明确告诉 RRDTool(在 DS 定义中)使用 MAX 作为辅助合并方法。这不是很好,因为它给出了误导性的高价值,但它更符合您的期望
  • 保持这种方式,并添加一些文本来解释数据是图表像素时间间隔内的平均值
  • 使图表宽 4 倍,这样像素数再次与 cdp 数匹配,不需要额外的合并