我正在使用rrd graph
根据通过PNP4Nagios收集的RRD手动生成聚合数据图。 我的问题是,当我尝试聚合两个以上的来源,我得到一个空白图。
我相信我有正确的CDEF格式,生成聚合数据源,基于以下内容: http : //oss.oetiker.ch/rrdtool/tut/cdeftutorial.en.html (请参阅“将您的愿望转换为RPN”)。
基于这篇文章,我使用:
CDEF:rx=rx1,rx2,+,rx3,+,rx4,+,...,rx10,+,rx11,+
如果我在语句中汇总前两个数据源,那么只有当我做了3个或更多,我得到一个空白图表。
我不明白为什么这是? 工作图和非工作图之间的唯一区别是CDEF声明。
作品: CDEF:rx=rx1,rx2,+
不起作用: CDEF:rx=rx1,rx2,+,rx3,+
以下是完整工作的RRDgraphics语句,只有两个源汇总:
rrdtool graph bw_graph.png -a PNG --start=1389348873 --end=1392096786 --step 30 -w 597 -h 188 -v "Interface Traffic (bps)" \ 'DEF:rx1=/path/to/data/cust1/eth0.rrd:1:AVERAGE' \ 'DEF:tx1=/path/to/data/cust1/eth0.rrd:2:AVERAGE' \ 'DEF:rx2=/path/to/data/cust2/eth0.rrd:1:AVERAGE' \ 'DEF:tx2=/path/to/data/cust2/eth0.rrd:2:AVERAGE' \ 'DEF:rx3=/path/to/data/cust3/eth0.rrd:1:AVERAGE' \ 'DEF:tx3=/path/to/data/cust3/eth0.rrd:2:AVERAGE' \ 'DEF:rx4=/path/to/data/cust4/eth0.rrd:1:AVERAGE' \ 'DEF:tx4=/path/to/data/cust4/eth0.rrd:2:AVERAGE' \ 'CDEF:rx=rx1,rx2,+' \ 'CDEF:tx=tx1,tx2,+' \ 'AREA:rx#0F5BFF:RX' \ 'AREA:tx#FF9933:TX' \ GPRINT:rx:MAX:"RX Max %6.2lf %s" \ GPRINT:rx:MIN:"RX Min %6.2lf %s" \ GPRINT:rx:AVERAGE:"RX Avg %6.2lf %s" \ GPRINT:rx:LAST:"RX Curr %6.2lf %s\n" \ -t bw_graph
我发现在这种情况下的问题不是我添加了两个以上的数据源 – 这很好。 问题是我刚添加的一个数据源恰好有未定义的数据,而这反过来又导致整个graphics无效。
我通过实验发现了这一点 – 我尝试添加rx3,rx4,+
,发现graphics还是断了,只有那两对。 似乎rx3是我的问题的原因。
为了进一步确认我的问题,我决定合计4,5,6: rx4,rx5,+,rx6,+
工作正常,并生成一个图表。
经过一番search,我find了一篇文章提到这个问题: http : //rrd-mailinglists.937164.n2.nabble.com/adding-DS-values-from-multiple-rrd-files-tp5368188p5512061.html
然后,从这个文件的一些额外的帮助,关于如何使用UN
取代未知数据0: http : //oss.oetiker.ch/rrdtool/tut/cdeftutorial.en.html
基本上,在我的CDEF声明中, rx1
将变为rx1,UN,0,rx1,IF
。 而rx2
成为rx2,UN,0,rx2,IF
等…
最终的CDEF可能如下所示:
CDEF:rx=rx1,UN,0,rx1,IF,rx2,UN,0,rx2,IF,+,rx3,UN,0,rx3,IF,+
试试以下内容:
CDEF:rx=rx1,rx2,rx3,+,+
它为我工作。