ganglia (http://ganglia.info/) 3.1以降では、データの収集を行うgmondを拡張したい場合、C言語のモジュールを書くほかに、modpython (libpython) をロードすることにより、pythonでも拡張モジュールを書けるようになっています。
なので書いてみました。
このモジュールは、ユーザが指定したネットワークインターフェースについてだけ、トラフィック(転送バイト数とパケット数)をモニタするものです。
トラフィックのモニタなら標準添付のmod_netがあります。Linuxの場合の実処理は libmetrics/linux/metrics.c でなされているのですが、こんな実装になっています:
これだと、ルータ用途などで複数の物理NICがあり、それぞれのデバイスのモニタをしたいときに困ります。
自分の場合も、タグVLAN(bond0.2とか)で論理分割している上位回線のトラフィックだけをモニタしたかったのが、このpythonモジュールを書いた動機です。
pythonでgmondモジュールを角煮は、hookポイントが定められているのでそれに従って実装します。とてもシンプルなので、
- ドキュメント http://ganglia.wiki.sourceforge.net/ganglia_gmond_python_modules
- 配布物に含まれる gmond/python_modules/ の下にある実装
を読めばすぐ書けるんじゃないかと思います。
ちなむと、ganglia 3.0の頃は、カスタムデータを追加するのに gmetric コマンドを使っていたのですが、モニタ項目が多くなると fork のコストもばかにならなくなるので、gangliaのCライブラリとリンクした拙作のPerlのXSモジュールを使っていました。
あわせて読みたい
- 作者: 柴田淳
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2009/04/11
- メディア: 単行本
- 購入: 23人 クリック: 572回
- この商品を含むブログ (84件) を見る
The Art of Capacity Planning: Scaling Web Resources
- 作者: John Allspaw
- 出版社/メーカー: O'Reilly Media
- 発売日: 2008/10/03
- メディア: ペーパーバック
- クリック: 9回
- この商品を含むブログ (2件) を見る
にあるのでこっちも必見。