スイッチの利用帯域を数秒平均で表示する方法

こんにちは。グローバルソリューション事業部の渡辺です。

 

 

とあるCiscoスイッチのGi1/0/47 のトラフィックグラフです。

cacti_switch_graph

1時間ごとにスパイクしています。

パッと見た感じ275Mbpsくらいがピークなんですが、Cactiは5分平均で表示するので、本当は最高でどのくらい出たか把握できません。

もしかすると、数秒間は1Gbps近く叩きだしているかもしれません。

そうなると、トラフィックが詰まる可能性があります。

 

トラフィック値は通常カウンター値であり、bps表記するためには以下を前提に実装しなければなりません。

  • bps  = (今回のカウンター値 - 前回のカウンター値) / (今回の時刻 - 前回の時刻)
  • カウンター値がある程度まで上がるとゼロに戻る(32bit値か64bit値が上限)

 

ゆるキャラならぬ、ゆるエンジニアの私としては、「だるいなー、作りたくないなー」と思っていました。

そんな中、彗星のごとく現れたのが(いや昔からありましたが)、Nagiosのcheck_snmpプラグインです。

これを利用して短い間隔でトラフィックモニターできそうです。

Nagiosのcheck_snmpプラグインの –rate オプションを試す

 

check_snmpを実行すると、何やらファイルが作成され、UnixTimeとカウンター値が保存されます。

 

結果として、check_snmpプラグインを利用した、以下のようなスクリプトで実現できました。

10147はifIndexなので、監視対象インターフェースに各自で変更してください。

 

例えば、以下のような感じでifDescrを元にifIndexを調べることが可能です。

sleep 5 で、5秒平均となるのでここを変更すれば、粒度を調整可能です。

 

実行すると、以下のようになります。

1Gbpsいってますね。。。やばい。

 

 

まとめ

Nagios プラグインいいですね。難しいところはそっちまかせです。

ifDescr を引数に取ったりして、もうちょっと汎用的な感じのスクリプトにしたいですね。

rrdtool や fluent + elasticsearch + kibanaなんかで可視化してもいいかも。

やっぱり、5分平均だけではダメだとわかりました。

Share on LinkedIn
LINEで送る
Pocket

claraer

claraer