負荷値取得プラグイン Sledge-Plugin-SNMP 作りました。

ワンランク上の負荷対策を Web アプリに実装するには・・・(Sledge編)」で、SNMP 経由でサーバの負荷を取得する Sledge / Catalyst プラグインが欲しいって書きましたが、急に作る必要がでたので Sledge 版を書きました。Net::SNMP 使ってます。

※CPAN に登録しようとしてドキュメントずーっと読んでいたのですが、全然わからなかったので取りあえず公開・・・|ι´Д`|っ

Sledge-Plugin-SNMP-0.01.tar.gz

- スポンサーリンク -

ドキュメントを pod2html で作成したっぽく公開しておきます。初めてやる作業ばかりで、変なところで時間を食う・・・orz

NAME

Sledge::Plugin::SNMP - Object oriented interface to SNMP

SYNOPSIS

package Foo::Pages::Bar;
use Sledge::Plugin::SNMP;

sub dispatch_baz {
  my $self = shift;
  $self->snmp->laLoad1;
  $self->snmp->addfunc( disk => '.1.3.6.1.4.1.2021.9.1.9.1' );
  $self->snmp->disk;
}

DESCRIPTION

SNMPプラグインは、SNMPでターゲットとするサーバリソースを取得する機能を提供します。addfunc メソッドで取得したい MIB(Management Information Base) を、お好きな method 名で登録(上書き)することができます。

METHODS

use Sledge::Plugin::SNMP を宣言することで、そのクラスで snmp メソッドが利用可能になります。snmp メソッドは Sledge::Plugin::SNMP クラスのインスタンスへの read only accessor で、標準で以下のメソッドを実装しています。

 ssCpuUser()
 ssCpuSystem()
 ssCpuIdle()
 laLoad1()
 laLoad2()
 laLoad3()
 memTotalSwap()
 memAvailSwap()
 memTotalReal()
 memAvailReal()
 memTotalFree()
 memShared()
 memBuffer()
 memCached()
 addfunc( method-name => MIS-value )

また、Config/_common.pm で Net::SNMP クラスのインスタンスを生成するための引数を以下のように定義しておく必要があります。引数の詳細は Net::SNMP を参照下さい。

$C{SNMP} = {
  -hostname => 'localhost',
  -community => 'public',
  -port => 161
};

作った自分が言うのも何ですが、思った以上に便利! Page クラスに Ajax インタフェースを用意しておいて prototype.js 使って Call するってのを作りまして、いろんな管理画面に貼り付け開始中!prototype.js の Ajax.PeriodicalUpdater つかって 10 秒ごとにリフレッシュとかさせれば、かなりウマーな感じ。(ってか、mrtg のような車輪の再開発?)

※になるはずなのですが、何故か IE では旨くリフレッシュされず調査中・・・

- スポンサーリンク -