在 RRDtool 图形上向 X 轴添加边距

Add margin to X-axis on RRDtool graph

我的一位客户希望更好地了解光学 SFP 发送和接收的 dBm 值。我每 5 分钟轮询一次这些值并更新 RRD 文件中的值。我以 RRD 文件作为源创建的 RRD 图是通过以下方式创建的:

/usr/bin/rrdtool graph /var/www/customer/tmp/ZtIKQOJZFf.png --alt-autoscale 
--rigid --start now-3600 --end now --width 800 --height 350 
-c BACK#EEEEEE00 -c SHADEA#EEEEEE00 -c SHADEB#EEEEEE00 -c FONT#000000 
-c GRID#a5a5a5 -c MGRID#FF9999 -c FRAME#5e5e5e -c ARROW#5e5e5e -R normal 
--font LEGEND:8:'DejaVuSansMono' --font AXIS:7:'DejaVuSansMono' --font-render-mode normal 
-E COMMENT:'Bits/s Last Avg Max \n' 
DEF:sfptxpower=/var/www/customer/rrd/sfpdbm.rrd:SFPTXPOWER:AVERAGE 
DEF:sfprxpower=/var/www/customer/rrd/sfpdbm.rrd:SFPRXPOWER:AVERAGE 
DEF:sfptxpower_max=/var/www/customer/rrd/sfpdbm.rrd:SFPTXPOWER:MAX 
DEF:sfprxpower_max=/var/www/customer/rrd/sfpdbm.rrd:SFPRXPOWER:MAX 
LINE1.25:sfptxpower#000099:'tx ' GPRINT:sfptxpower:LAST:%6.2lf%s\g 
GPRINT:sfptxpower:AVERAGE:%6.2lf%s\g GPRINT:sfptxpower_max:MAX:%6.2lf%s\g 
COMMENT:'\n' LINE1.25:sfprxpower#B80000:'rx ' 
GPRINT:sfprxpower:LAST:%6.2lf%s\g GPRINT:sfprxpower:AVERAGE:%6.2lf%s\g 
GPRINT:sfprxpower_max:MAX:%6.2lf%s\g COMMENT:'\n'

它绘制了一个图表,它应该是怎样的。但是,从中得出的图表可读性不是很好,因为 tx 和 rx 值都构成了图表的边界:

我的问题是:是否可以在 X 轴上添加某种边距(如百分比 (%)?),以便在图表上轻松看到两条线?

RRDTool 图形有四种不同的缩放模式,您可以通过选项 select:自动缩放(默认)、alt-autoscale、specified-expandable 和 specified-rigid。

Autoscale - 这会使用默认算法缩放图表以适应数据。您可以使用 --autoscale 选项(或通过省略其他缩放选项)来选择它。这将尝试使 Y 轴范围受公共范围的限制——在您的情况下,可能是 0 到 -5。有时效果很好,有时效果不好。

Alt-Autoscale - 这类似于自动缩放,但紧贴实际数据的最大值和最小值。您使用 --alt-autoscale 选择它,这就是您当前使用的。

指定,可扩展 - 这允许您为 Y 轴指定 max/min,但如果数据超出此范围,它们将被扩展。您可以通过指定 --upper-limit and/or --lower-limit 而不是 --rigid 来选择它。在您的情况下,如果您给出 -2 的上限和 -4 的下限,它看起来不错,并且如果您的数据变为 -5,图表范围将扩大。

Specified, rigid - 这与上面类似,但限制在您指定的地方是固定的。如果数据超出此范围,则不会显示该行。您可以在给出上限或下限时使用 --rigid 来指定。

请注意,对于指定类型,您只能指定范围的一端,以便在一端获得指定类型,并继续为另一端使用自动缩放类型。

据此,我建议您删除 --rigid--alt-autoscale 选项,而是指定 --upper-limit -2--lower-limit -4 以更整齐地显示您的数据。如果他们离开这个范围,那么您将继续获得当前的图表 - 这是否有效取决于数据的性质以及它们通常可以变化多少。