rrdtool 图忽略 --step?
rrdtool graph ignoring --step?
我有包含多个月 PDP 数据(5 分钟间隔)的 RRD 文件。
当 rrdtool 自动决定使用哪个 RRA 来显示图形时,对于通用图形来说它很好。
但是我的一些图表在图例中包含 95 个百分点的数据,我需要根据“精确”的 5 分钟间隔数据计算这些数据,因为根据聚合数据点计算百分比可能(本质上)导致严重错误的值。'
- 我可以
fetch
步长为 300 的 RRD 文件中的数据,我将获得正确的数据来自行计算百分位数
- 问题: 当graph'ing with a step of 300, percentile value displayed depending on the
width
图表,即使时间范围相同,并且整个时间范围内有 300 秒的数据
- 如果 1 个月图表的宽度为 800 像素,则显示的百分位数(以及最大值,例如)是错误的
- 如果 1 个月图表的宽度为 8000px,则值是正确的(匹配从获取的数据中自行计算的值)
图形:
...
--step 300
...
"VDEF:perca=a,95,PERCENT",
...
创建于:
'-s', '300',
...
"RRA:AVERAGE:0.5:1:53568", # 6 months pdp
"RRA:AVERAGE:0.5:12:8904", # 1 hour, 1 year.
"RRA:AVERAGE:0.5:288:730", # 1 day, 2 years.
"RRA:AVERAGE:0.5:2016:520", # 1 week, 10 years.
"RRA:MAX:0.5:1:600", # 5 min: 2 days
"RRA:MAX:0.5:12:8904", # 1 hour, 1 year.
"RRA:MAX:0.5:288:730", # 1 day, 2 years.
"RRA:MAX:0.5:2016:520", # 1 week, 10 years
这是因为在 VDEF
计算之前执行了数据整合。
虽然您的 rrdtool graph
参数指定了 300 秒的步长,但这比图形的像素宽度小,因此在您到达 VDEF
之前,数据系列会被进一步平均。所有 CDEF
和 VDEF
函数将始终使用每像素一个 cdp 的时间序列。来自 RRDTool 手册:
Note: a step smaller than one pixel will silently be ignored.
这意味着,虽然您可以降低数据的分辨率,但不能提高它。遗憾的是,要获得准确的第 95 个百分位数,您需要更高分辨率的数据。
因此,如果您在窄图中省略 --step 300
,将会发生的情况是:
- 你要求1个月的时间window
- RRDTool 计算出 1 个像素大约为 1 小时
- DS 从 1 小时 RRA 中检索一个平均时间序列,每个像素一个 cdp(IE 小时)
- VDEF 然后将其合并到第 95 个百分位数
- 第 95 个百分位数计算不准确
与--step 300
过程略有不同,但结果相同:
- 您要求 1 个月的时间 window,步骤 300
- RRDTool 计算出 1 个像素大约为 1 小时
- RRDTool DS 从 300s RRA 中检索一个月的数据
- RRDTool 使用 Average
进一步将此数据合并为每像素 1cdp(IE 每小时)
- VDEF 然后将其合并到第 95 个百分位数
- 第 95 个百分位数计算不准确
因此,您可以看到最终结果是相同的 - 就在 300s -> 1h 整合发生的地方,无论是在 RRA 还是在图表时间。
使用宽图时,每个像素的时间变小,RRDTool 不再需要执行额外的数据合并,从而使计算更准确:
- 你要求1个月的时间window
- RRDTool计算1个像素大约5分钟
- RRDTool DS 从 300s RRA 中检索一个月的数据
- 不需要进一步整合
- VDEF 然后将其合并到第 95 个百分位数
- 第 95 个百分位数计算准确!
当您使用 rrdtool fetch
1 检索原始数据时,不会发生这种额外的合并,因此您得到:
- 您要求 1 个月的时间 window,步骤 300
- RRDTool DS 从 300s RRA 中检索一个月的数据
- 输出这些数据
- 然后您的电子表格会计算第 95 个百分位数
- 第 95 个百分位数的计算是正确的(好吧,间隔 5 分钟,尽可能接近)
您的下一个问题可能是,我该如何阻止这种情况发生?不幸的是,你不能。 RRDTool 没有 Percentile 类型的 CF,因此无法在 RRA 中执行正确的计算(这将是唯一真正的解决方案)。
MRTG 的 Routers2 前端计算了图形的第 95 个百分位数,它的方法是执行高分辨率 fetch
以获取原始数据并在将其传递到HRULE
做图的时候。换句话说,由于您遇到的这个问题,它根本不使用 VDEF
。
我有包含多个月 PDP 数据(5 分钟间隔)的 RRD 文件。
当 rrdtool 自动决定使用哪个 RRA 来显示图形时,对于通用图形来说它很好。
但是我的一些图表在图例中包含 95 个百分点的数据,我需要根据“精确”的 5 分钟间隔数据计算这些数据,因为根据聚合数据点计算百分比可能(本质上)导致严重错误的值。'
- 我可以
fetch
步长为 300 的 RRD 文件中的数据,我将获得正确的数据来自行计算百分位数 - 问题: 当graph'ing with a step of 300, percentile value displayed depending on the
width
图表,即使时间范围相同,并且整个时间范围内有 300 秒的数据 - 如果 1 个月图表的宽度为 800 像素,则显示的百分位数(以及最大值,例如)是错误的
- 如果 1 个月图表的宽度为 8000px,则值是正确的(匹配从获取的数据中自行计算的值)
图形:
...
--step 300
...
"VDEF:perca=a,95,PERCENT",
...
创建于:
'-s', '300',
...
"RRA:AVERAGE:0.5:1:53568", # 6 months pdp
"RRA:AVERAGE:0.5:12:8904", # 1 hour, 1 year.
"RRA:AVERAGE:0.5:288:730", # 1 day, 2 years.
"RRA:AVERAGE:0.5:2016:520", # 1 week, 10 years.
"RRA:MAX:0.5:1:600", # 5 min: 2 days
"RRA:MAX:0.5:12:8904", # 1 hour, 1 year.
"RRA:MAX:0.5:288:730", # 1 day, 2 years.
"RRA:MAX:0.5:2016:520", # 1 week, 10 years
这是因为在 VDEF
计算之前执行了数据整合。
虽然您的 rrdtool graph
参数指定了 300 秒的步长,但这比图形的像素宽度小,因此在您到达 VDEF
之前,数据系列会被进一步平均。所有 CDEF
和 VDEF
函数将始终使用每像素一个 cdp 的时间序列。来自 RRDTool 手册:
Note: a step smaller than one pixel will silently be ignored.
这意味着,虽然您可以降低数据的分辨率,但不能提高它。遗憾的是,要获得准确的第 95 个百分位数,您需要更高分辨率的数据。
因此,如果您在窄图中省略 --step 300
,将会发生的情况是:
- 你要求1个月的时间window
- RRDTool 计算出 1 个像素大约为 1 小时
- DS 从 1 小时 RRA 中检索一个平均时间序列,每个像素一个 cdp(IE 小时)
- VDEF 然后将其合并到第 95 个百分位数
- 第 95 个百分位数计算不准确
与--step 300
过程略有不同,但结果相同:
- 您要求 1 个月的时间 window,步骤 300
- RRDTool 计算出 1 个像素大约为 1 小时
- RRDTool DS 从 300s RRA 中检索一个月的数据
- RRDTool 使用 Average 进一步将此数据合并为每像素 1cdp(IE 每小时)
- VDEF 然后将其合并到第 95 个百分位数
- 第 95 个百分位数计算不准确
因此,您可以看到最终结果是相同的 - 就在 300s -> 1h 整合发生的地方,无论是在 RRA 还是在图表时间。
使用宽图时,每个像素的时间变小,RRDTool 不再需要执行额外的数据合并,从而使计算更准确:
- 你要求1个月的时间window
- RRDTool计算1个像素大约5分钟
- RRDTool DS 从 300s RRA 中检索一个月的数据
- 不需要进一步整合
- VDEF 然后将其合并到第 95 个百分位数
- 第 95 个百分位数计算准确!
当您使用 rrdtool fetch
1 检索原始数据时,不会发生这种额外的合并,因此您得到:
- 您要求 1 个月的时间 window,步骤 300
- RRDTool DS 从 300s RRA 中检索一个月的数据
- 输出这些数据
- 然后您的电子表格会计算第 95 个百分位数
- 第 95 个百分位数的计算是正确的(好吧,间隔 5 分钟,尽可能接近)
您的下一个问题可能是,我该如何阻止这种情况发生?不幸的是,你不能。 RRDTool 没有 Percentile 类型的 CF,因此无法在 RRA 中执行正确的计算(这将是唯一真正的解决方案)。
MRTG 的 Routers2 前端计算了图形的第 95 个百分位数,它的方法是执行高分辨率 fetch
以获取原始数据并在将其传递到HRULE
做图的时候。换句话说,由于您遇到的这个问题,它根本不使用 VDEF
。