Recent Entries
Archives
Search


Links
Powered by
Movable Type 2.64

2005年05月28日

snmpでメモリ残量取得

適当に書いてみる(要:snmpget) ヽ(´ー`)ノfor mrtg
#!/usr/bin/perl
#host.hrSystem.hrSystemUptime.0 .1.3.6.1.2.1.25.1.1.0 = Timeticks: (3168344309) 366 days, 16:57:23.09
#enterprises.ucdavis.memory.memTotalSwap.0 = 2096472
#enterprises.ucdavis.memory.memAvailSwap.0 = 2023480
#enterprises.ucdavis.memory.memTotalReal.0 = 1030676
#enterprises.ucdavis.memory.memAvailReal.0 = 96220
#enterprises.ucdavis.memory.memBuffer.0 = 27720
#enterprises.ucdavis.memory.memCached.0 = 232212

my ($addr, $commname) = @ARGV;

my $mibhrSystemUptime = '.1.3.6.1.2.1.25.1.1.0';
my $mibmemTotalSwap   = '.1.3.6.1.4.1.2021.4.3.0';
my $mibmemAvailSwap   = '.1.3.6.1.4.1.2021.4.4.0';
my $mibmemTotalReal   = '.1.3.6.1.4.1.2021.4.5.0';
my $mibmemAvailReal   = '.1.3.6.1.4.1.2021.4.6.0';
my $mibmemBuffer      = '.1.3.6.1.4.1.2021.4.14.0';
my $mibmemCached      = '.1.3.6.1.4.1.2021.4.15.0';
my $snmpGet = 'snmpget';

my $memAvail = `$snmpGet -Oqs -v 1 "$addr" "$commname" $mibhrSystemUptime $mibmemTotalSwap $mibmemAvailSwap $mibmemTotalReal $mibmemAvailReal $mibmemBuffer $mibmemCached`;
my @vals = split(/\n/, $memAvail);
my $val;
foreach $pair (@vals) {
  my ($k, $v) = split(/ /, $pair);
  $val{$k} = $v;
}
print 100*($val{'memTotalReal.0'}-$val{'memAvailReal.0'}-$val{'memBuffer.0'}-$val{'memCached.0'})/$val{'memTotalReal.0'}."\n";
print 100*($val{'memTotalSwap.0'}-$val{'memAvailSwap.0'})/$val{'memTotalSwap.0'}."\n";
my @upt = split(/:/, $val{'hrSystemUptime.0'});
print "${upt[0]} days ${upt[1]}:${upt[2]}\n";
print "$addr\n";
Posted by minemaz at 2005年05月28日 13:13
トラックバック
Comments

mrtg-2.9.6 つか rhasの2.1あたりでは小数点対応してないんじゃないの?
ってことで多少変更したりムニャムニャ(´ー`)

Posted by: minemaz at 2005年05月29日 10:01
Post a comment









Remember personal info?