web-dev-qa-db-ja.com

RRDGraphで3つ以上のRRDを集約すると、空のグラフが返されます

使ってます rrd graph PNP4Nagiosを介して収集されたRRDに基づいて、集計データのグラフを手動で生成します。私の問題は、3つ以上のソースを集計しようとすると、空白のグラフが表示されることです。

以下に基づいて、集約データソースを生成するための正しいCDEF形式があると思います。 http://oss.oetiker.ch/rrdtool/tut/cdeftutorial.en.html (「変換」を参照) RPNへのあなたの願い」)。

その記事に基づいて、私は使用します:

CDEF:rx=rx1,rx2,+,rx3,+,rx4,+,...,rx10,+,rx11,+

これは、ステートメントの最初の2つのデータソースを集計した場合にのみ機能します。3つ以上を実行すると、空白のグラフが表示されます。

なぜなのかわからないのですか?動作中のグラフと動作していないグラフの唯一の違いは、CDEFステートメントです。

作品:CDEF:rx=rx1,rx2,+

動作しません:CDEF:rx=rx1,rx2,+,rx3,+

これは、2つのソースのみが集約された完全に機能するRRDグラフステートメントです。

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
1
Geekman

この場合の問題は、3つ以上のデータソースを追加することではないことがわかりました。それは問題ありませんでした。問題は、追加したデータソースの1つにたまたま未定義のデータがあり、その結果、グラフ全体がnullになることでした。

私は実験によってこれを見つけました-rx3,rx4,+を追加しようとしましたが、グラフがまだ壊れていて、それらの2つのペアだけであることがわかりました。 rx3が私の問題の原因であるように見えました。

問題を確認するためにさらに一歩進んで、4,5,6を集計することにしました。rx4,rx5,+,rx6,+は正常に機能し、グラフを生成しました。

いくつか検索した後、この問題に言及している記事を見つけました: 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ステートメントでは、rx1rx1,UN,0,rx1,IFになります。そして、rx2rx2,UN,0,rx2,IFなどになります。

最終的なCDEFは次のようになります。

CDEF:rx=rx1,UN,0,rx1,IF,rx2,UN,0,rx2,IF,+,rx3,UN,0,rx3,IF,+

1
Geekman