Cacti でトラフィックを合算したグラフを作成する方法


サーバが複数台あるとwebのフロントだけで合計したらどれくらいのトラフィックになるかとか、運用上拡張を考慮しするやっぱり知りたくなる。Cactiでどうやるのか調べて出来たのでそのメモ。

以下は3つ以上のインターフェイスを合算する場合のカスタマイズ方法。2つインターフェイスの合算であれば途中のカスタマイズ作業は不要で5)からはじめればOK。

元ネタは Cactiの本家フォーラムから。

0) 作業前の前提条件
  • 合算させたいインターフェイスを持つサーバやスイッチはすでに Cacti 上の Devices として登録済みであること
  • SNMP Interface Statistics にて該当 Devices のトラフィックが Cacti にて取得できていること
1) トラフィック合計をしてくれるテンプレートを入手する

f:id:d_sea:20081105162455p:image

    • 直接ダウンロードはこちらを右クリックしてリンク先を保存する (いきなりクリックすると xml の中身が見えてしまいます)
  • Cacti コンソール画面からインポート
  • Cacti画面で、[console] – [Import/Export] – [ImportTemplates] をクリックして、ダウンロードした xml ファイルを選択して save
    • この時、Import RRA Settings は Use Defaults for this installation を選択

f:id:d_sea:20081105151321p:image

2) カスタマイズ用テンプレートの作成
  • [console] – [Templates] – [Graph Templates] をクリックして、Aggregate 2 Graph が追加されていることを確認
  • 一応、カスタマイズ用のテンプレートを別で用意するため、Aggregate 2 Graph のチェックボックスにチェックを入れて、下の Choose an action: で Duplicate を選択して go を押す
  • Title Format を任意に決めて yes を押す
    • 例えばインターフェイス8つ分であれば Aggregate 8 Graph とかにする
3) カスタマイズ用 CDEFs を作成
  • [console] – [Management] – [Graph Management] – [CDEFs] をクリック
  • 右端の Add をクリック
  • Name を任意につけて create をクリック
    • Name はトラフィックのIN/OUT用2つ作るのでわかりやすいように、Combine 8 IN とか Combine 8 OUTとかにしておく
  • 続いて、CDEF Items の Add をクリック
  • CDEF Items の CDEF Item Type を Custom String を選択し、下の CDEF Item Value が空白になるので、そこに記入して save を押す

ここでは逆ポーランド記法(RPN)で対象インターフェイスのトラフィックデータを加算してbit表示する式を書く。

合算させたいインターフェイスの数ごとに以下のようになる

インターフェイス数 IN側 OUT側
2 a,b,+,8,* c,d,+,8,*
8 a,b,c,d,e,f,g,h,+,+,+,+,+,+,+,8,* i,j,ba,bb,bc,bd,be,bf,+,+,+,+,+,+,+,8,*
14 a,b,c,d,e,f,g,h,i,j,ba,bb,bc,bd,+,+,+,+,+,+,+,+,+,+,+,+,+,8,* be,bf,bg,bh,bi,bj,ca,cb,cc,cd,ce,cf,cg,ch,+,+,+,+,+,+,+,+,+,+,+,+,+,8,*

インターフェイス数が増えれば対応するアルファベットを増やせば適用される。アルファベットの順番は a~j まで行ったら、ba~bj、その後は ca~cj というようになるようだ。INのアルファベット順に続けてOUTのアルファベットにする。

4) Graph Templates をカスタマイズ
  • 再び [console] – [Templates] – [Graph Templates] をクリックして、新しく作成された Template Title をクリック
  • 合算させたいインターフェイス数に対して足りない分の Item # を IN/OUT ともに作成する
    • Graph Template Items の Add をクリックする
    • 設定内容は既存の Data Source が (traffic_in) と (traffic_out) の内容と同様にする
    • 作成された Item # を IN/OUT それぞれ Data Source (No Task):Inbound の上になるよう上向き矢印ボタンで移動させる
  • Data Source が (No task):Inbound/Outbound/Current/Average/Maximum の Item # をそれぞれ変更する
    • それぞれをクリックして CDEF Function を先ほど作成した CDEFs を選択して save を押す</p>
      • 例では Combine 8 IN とした部分。IN側/OUT側を間違えないように

f:id:d_sea:20081105164306p:image

  • Graph Item Inputs を確認</p>
    • Graph Item Inputs の Item ** が合算させたいインターフェイスの数になっているか確認</p>
      • 一通り、記載されている Graph Item Inputs の内容を確認する
      • Name は 連番で命名。FeildType は DataSource、Associated Graph Items は順番どおりの位置にチェックされているか
      • チェックが2つ付いてしまっているケースもあるので、順番どおり1つがチェックされるように変更する
    • [Graph Template] – [Upper Limit] が 100 になっているので、1Gbpsまでトラフィックが流れる場合は 1000 に変更する
    • 一通り変更が終わったら save を押す
5) グラフを作成
  • [console] – [Management] – [Graph Management] をクリックして、Graph Management 右端の Add をクリック
  • Selected Graph Template にて、作成した Graph Template 名を選択(例だと Aggregate 8 Graph)
  • Host のプルダウンは None を選んだまま create を押す
  • Supplemental Graph Template Data – Graph Item Fields にて合算させたいインターフェイスを選択する
  • 選択したら最下部の save を押す
  • グラフが描けていればOK
  • RRDTool Command での動作確認は上部の Turn On Graph Debug Mode をクリックすれば下部に出力結果がでる

合計のみのグラフとして1つ作成させるとこんな感じに見れます。クリックするとホストのグラフと同様、weekly, monthly, yearlyのグラフが見られます。

f:id:d_sea:20081105174720p:image