我们设置了 MRTG 来监控网络。因此,我们使用 RRD 工具来获取绘图数据。现在我创建了一个脚本,它实际上从 RRD 文件中获取数据,所以从获取的数据中我需要在 24 小时内最大输入和最大输出。现在有了这些最大值,我计算每个客户/链接的 badwidth 利用率。
现在我的问题是,单个 rrd 命令从 RRD 文件中获取最大输入、最大输出、最小输入和最小输出值。
由于我是这个 RRD 的新手,所以如果您的解决方案还提供了命令,我将不胜感激。
请帮忙。
对于 MRTG 创建的 RRD 文件,“输入”和“输出”数据源分别命名为“ds0”和“ds1”。存在 8 个 RRA;这些对应于 AVG 和 MAX 汇总的 5 分钟、30 分钟、2 小时和 1 天的粒度。默认情况下,它们的长度为 400(旧版本的 MRTG)或长度 800(新版本的 MRTG),这意味着您可能分别有 2 天、2 周、2 个月和 2 年的时间窗口。 RRA。(请注意,RRDTool 1.5 可能会省略 1pdp MAX RRA,因为这在功能上与 1pdp AVG RRA 相同)
这对您意味着以下几点:
如果您只对最近 24 小时的计算感兴趣,那么所有计算都可以使用最高粒度的 RRA。
请注意,由于步长边界都是使用 UCT 计算的,除非您居住在该时区,否则您不能使用 FETCH 或 XPORT 来获取您需要的数据,因为您需要在一般时间窗口内进行汇总。
要检索数据,您可以使用以下内容:
rrdtool graph /dev/null -e 00:00 -s "end-1day" --step 300
DEF:inrmax=target.rrd:ds0:AVERAGE:step=300:reduce=MAXIMUM
DEF:outrmax=target.rrd:ds1:AVERAGE:step=300:reduce=MAXIMUM
DEF:inrmin=target.rrd:ds0:AVERAGE:step=300:reduce=MINIMUM
DEF:outrmin=target.rrd:ds1:AVERAGE:step=300:reduce=MINIMUM
VDEF:inmax=inrmax,MAXIMUM
VDEF:inmin=inrmin,MINIMUM
VDEF:outmax=outrmax,MAXIMUM
VDEF:outmin=outrmin,MINIMUM
LINE:inrmax
PRINT:inmax:"In Max=%lf"
PRINT:inmin:"In Min=%lf"
PRINT:outmax:"Out Max=%lf"
PRINT:outmin:"Out Min=%lf"
对此有几点说明:
当您从 php 脚本调用 rrdtool::graph 时,只需以与命令行操作相同的方式将参数传递给它。如果您不使用 Linux,则可能需要使用 /dev/null 以外的其他内容。