如何在 rrdtool 图中打印最大值的时间?



我已经搜索了很多次,以至于我累了。

我有一个 rrdtool 数据库,用来打印最大值、最小值、平均值。 现在,我想打印存储在 rrd db 中的最大值的时间。

这是我的rrd(CPU监控(的定义:

rrdtool create CPU.rrd --start $Date 
DS:CPU_ALL:GAUGE:600:U:U 
DS:User:GAUGE:600:U:U 
DS:Sys:GAUGE:600:U:U 
DS:Wait:GAUGE:600:U:U 
DS:Idle:GAUGE:600:U:U 
RRA:AVERAGE:0.5:1:20000 
RRA:AVERAGE:0.5:1:20000 
RRA:AVERAGE:0.5:1:20000 
RRA:AVERAGE:0.5:1:20000 
RRA:AVERAGE:0.5:1:20000

这是我的图形脚本:

rrdtool graph CPUUsed.png --start -1w 
DEF:CPUTOTAL=CPU.rrd:CPU_ALL:AVERAGE AREA:CPUTOTAL#FF0000:"CPU Used" LINE2:CPUTOTAL#FF0000 
--vertical-label "CPU" 
--title "CPU " 
--width 530 
--height 380 
GPRINT:CPUTOTAL:MAX:"MAX:%6.2lf %s" 
GPRINT:CPUTOTAL:MIN:"MIN:%6.2lf %s"  
GPRINT:CPUTOTAL:AVERAGE:"MOY:%6.2lf %s"  
GPRINT:CPUTOTAL:LAST:"LAST:%6.2lf %s" 

如何生成此图,加上最大 CPU 值的时间?

好的,你在这里有几个问题。

首先,您的 RRD 配置错误。 您定义了 5 个相同的 RRA - 这没有意义。 一个 RRA 将为所有定义的 DS 保存指定分辨率的值。 但是,您可能希望在更高的粒度下拥有更多(以加快月份或年份的图形(。 您可能还需要最小或最大类型 RRA,以便您的最小和最大数字更准确。

例如,此集合定义了 MAX 和最小 RRA 以及平均值,并且还将有 4 个汇总,大致对应于每日、每周、每月和每年的图形。

RRA:AVERAGE:0.5:1:20000 
RRA:AVERAGE:0.5:6:2000 
RRA:AVERAGE:0.5:24:2000 
RRA:AVERAGE:0.5:288:2000  
RRA:MAX:0.5:1:20000 
RRA:MAX:0.5:6:2000 
RRA:MAX:0.5:24:2000 
RRA:MAX:0.5:288:2000 
RRA:MIN:0.5:1:20000 
RRA:MIN:0.5:6:2000 
RRA:MIN:0.5:24:2000 
RRA:MIN:0.5:288:2000 

其次,当你想在GPRINT行中打印单个图形时,你需要使用VDEF将你的时间序列数据(来自DEF或CDEF(转换为单个值,使用一些安慰函数。

例如,这组命令将使用之前定义的 MAX 和最小类型 DEF,然后使用 VDEF 计算它们的摘要。 当然,你可以只使用 CPUTOTAL 而不是定义 CPUTOTALMAX 和 CPUTOTALMIN(节省额外的 RRA(,但是,当你转向使用低粒度的 RRA 时,准确性会下降。 如果您没有较低粒度的 RRA,那么您将是准确的,但在图形时会使用大量额外的 CPU,并且图形创建会变慢。 使用不同分辨率的 RRA 可加快图形创建速度。

DEF:CPUTOTAL=CPU.rrd:CPU_ALL:AVERAGE  
DEF:CPUTOTALMAX=CPU.rrd:CPU_ALL:MAX  
DEF:CPUTOTALMIN=CPU.rrd:CPU_ALL:MIN  
VDEF:overallmax=CPUTOTALMAX,MAXIMUM  
VDEF:overallmin=CPUTOTALMIN,MINIMUM  
VDEF:overallavg=CPUTOTAL,AVG  
VDEF:overalllst=CPUTOTAL,LAST  
AREA:CPUTOTAL#FF0000:"CPU Used" 
LINE2:CPUTOTAL#FF0000  
GPRINT:overallmax:"MAX:%6.2lf %s"  
GPRINT:overallmin:"MIN:%6.2lf %s"   
GPRINT:overallavg:"MOY:%6.2lf %s"   
GPRINT:overalllst:"LAST:%6.2lf %s"  
GPRINT:overallmax:"Max was at %c":strftime

最后一行将打印最大值的时间而不是。 当 VDEF 计算 MAX 或 MIN 时,它实际上返回两个分量 - 值和时间点。 通常使用该值,但通过将:strftime附加到GPRINT直接引线,您可以改用时间组件。

我建议您花更多的时间浏览 RRDTool 网站上的教程和示例,这应该可以帮助您更好地了解 RRDTool 的工作原理。

相关内容

  • 没有找到相关文章

最新更新