web-dev-qa-db-ja.com

CACTIで営業時間のみのグラフを表示するにはどうすればよいですか?

CACTIでは中断のない期間しか表示できないことに気づきました。ある期間(1週間、1ヶ月など)の営業時間のみを表示するカスタムグラフを作成できるかどうか疑問に思っています。

たとえば、先月の週5営業日(月曜日から金曜日)の午前8時から午後6時までの平均インバウンドトラフィックのグラフを表示できるようにしたいと思います。

RRDtoolのスクリプトを構成しようとしましたが、正しい構文がわかりません。いくつかのテストを行った後、異なるグラフを重ね合わせることが可能であることがわかりました。それらすべてのグラフの平均を計算しようと思っていたのですが、どうすればいいのかわかりません。

次のような設定をしたいと思います。

--startday 20120604+8h
--endday 20120604+18h
monday:          --start startday --end endday
tuesday:         --start startday+24h --end endday+24h
wednesday:       --start startday+48h --end endday+48h
thursday:        --start startday+72h --end endday+72h
friday:          --start startday+96h --end endday+96h

DEF:monday=router.rrd:gi0/1:traffic_mon:AVERAGE
DEF:tuesday=router.rrd:gi0/1:traffic_tue:AVERAGE
DEF:wednesday=router.rrd:gi0/1:traffic_wed:AVERAGE
DEF:thursday=router.rrd:gi0/1:traffic_thu:AVERAGE
DEF:friday=router.rrd:gi0/1:traffic_fri:AVERAGE

DEF:traffic_mon:traffic_tue:traffic_wed:traffic_thu:traffic_fri:AVERAGE

私はどんな助けにも感謝します。

ありがとうございました。

7
Blast Raider

ほとんどの場合、Cacti自体はこの種のグラフを生成できません。 rrdgraphを使用してRRDグラフを手動で生成する必要があります。完全なソリューションは非常に複雑ですが、基本的な要点は、営業時間外にデータを無効にするRPN方程式を使用してCDEFを作成することです。

2012-01-31 18:00:00UTCから2012-02-0108:00:00UTCまでの時間を削除する非常に基本的な例は次のとおりです。

DEF:ds0=/path/to/data.rrd:ds0:AVERAGE
CDEF:officehours=TIME,1328032800,GT,0,1,IF,TIME,1328083200,LT,0,1,IF,MAX,1,UNKN,IF
CDEF:dslimit=ds0,officehours,*
AREA:dslimit#00cc00:"Value "

CDEFofficehoursは、基本的に、サンプルの時間が午後6時から午前8時の間にあるかどうかを確認します。そうである場合、値はUNKNです。そうでない場合、値は1です。これに値を掛けると、営業時間中は実際の値が残り、営業時間外は不明な値が残ります。グラフには、営業時間外の穴が表示され、GPRINTまたはPRINTを介して出力された平均、最大値、および最小値は、営業時間外の値を考慮しません。

除外する営業時間外の期間ごとにCDEFを設定する必要があります。時間はエポックからの秒数であるため、たとえば1月1日から2月1日までのグラフを作成する場合、20のオーダーの異なる期間を除外する必要があります。 RRDには非常に優れた言語フックがあるため、単純なPerlまたはPythonスクリプトを記述して、これらのグラフをその場で生成できます。

rrdgraphrrdgraph_rpn 、および rrdgraph_examples 詳細と例についてはmanページ。

3
hrunting