Php 如何在单个rrd命令中从rrd文件中获取最大输入和最大输出值

Php 如何在单个rrd命令中从rrd文件中获取最大输入和最大输出值,php,rrdtool,rrd,mrtg,Php,Rrdtool,Rrd,Mrtg,我们已经设置了MRTG来监控网络。因此,我们正在使用RRD工具获取图形数据。现在我已经创建了一个脚本,它实际上从RRD文件中获取数据,所以从获取的数据中,我需要在24小时内输入和输出最大值。现在使用这些最大值,我计算每个客户/链接的badwidth利用率 现在我的问题是,使用单个rrd命令从rrd文件中获取最大输入、最大输出、最小输入和最小输出值 由于我是这个RRD的新手,所以如果您的解决方案中也提供了命令,我将不胜感激 请提供帮助。使用MRTG创建的RRD文件,“in”和“out”数据源分别命

我们已经设置了MRTG来监控网络。因此,我们正在使用RRD工具获取图形数据。现在我已经创建了一个脚本,它实际上从RRD文件中获取数据,所以从获取的数据中,我需要在24小时内输入和输出最大值。现在使用这些最大值,我计算每个客户/链接的badwidth利用率

现在我的问题是,使用单个rrd命令从rrd文件中获取最大输入、最大输出、最小输入和最小输出值

由于我是这个RRD的新手,所以如果您的解决方案中也提供了命令,我将不胜感激


请提供帮助。

使用MRTG创建的RRD文件,“in”和“out”数据源分别命名为“ds0”和“ds1”。存在8个RRA;这些对应于5分钟、30分钟、2小时和1天的颗粒度,包括平均值和最大值。默认情况下,这些RRA的长度为400(旧版本的MRTG)或800(新版本的MRTG),这意味着这些RRA的时间窗口可能分别为2天、2周、2个月和2年。(请注意,RRDTool 1.5可能会忽略1pdp最大RRA,因为这在功能上与1pdp平均RRA相同)

这对您的意义如下:

  • 您没有最小类型的RRA。如果在最近2天内工作,则可根据最高粒度平均RRA计算。否则,您的数据将越来越不准确
  • 您的最低粒度RRA每天保存最大值。然而,这些日子是在UCT午夜而不是当地时间午夜分开的。您没有指定需要计算哪些24小时窗口
如果您只对最近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"
关于这一点,请注意:

  • 我们使用“图形”,这样我们就可以使用一个通用的时间窗口,而不依赖于步长边界
  • 使用rrdgraph以使用通用时间窗口;fetch和xport将在步骤边界上工作
  • 我们正在动态总结最高粒度的RRA
  • 我们使用/dev/null,因为我们实际上并不需要图形图像
  • 我们必须在图中定义一条虚线,否则什么也得不到
  • DEF行指定最高粒度步骤和减少CF。如果使用5分钟步骤,则可以跳过此部分
  • 我们使用VDEF计算汇总值,然后使用print在标准输出上打印它们
  • 输出的第一行是图形大小;你可以放弃这个
从php脚本调用rrdtool::graph时,只需以与命令行操作相同的方式向其传递参数。如果您不使用Linux,则可能需要使用/dev/null以外的其他内容