File Coverage

blib/lib/Sledge/Plugin/SNMP.pm
Criterion Covered Total %
statement 15 70 21.4
branch 0 6 0.0
condition n/a
subroutine 5 27 18.5
pod 0 17 0.0
total 20 120 16.6


line stmt bran cond sub pod time code
1             package Sledge::Plugin::SNMP;
2             # $Id: SNMP.pm,v 0.01 2006/02/10 18:00:00 TSUNODA Exp $
3             #
4             # TSUNODA Kazuya
5             #
6              
7 1     1   23565 use strict;
  1         3  
  1         41  
8 1     1   5 use vars qw($VERSION);
  1         2  
  1         62  
9             $VERSION = 0.01;
10              
11 1     1   1397 use Net::SNMP;
  1         93946  
  1         171  
12              
13             sub import {
14 0     0     my $class = shift;
15 0           my $pkg = caller;
16              
17 1     1   11 no strict 'refs';
  1         2  
  1         612  
18 0           *{"$pkg\::snmp"} = sub {
19 0     0     my $self = shift;
20 0           return $self->{snmp}; # read only
21 0           };
22              
23             $pkg->register_hook(
24             BEFORE_DISPATCH => sub {
25 0     0     my $self = shift;
26 0           $self->{snmp} = Sledge::Plugin::SNMP->new($self->create_config);
27             },
28 0           );
29             }
30              
31              
32             sub new {
33 0     0 0   my $class = shift;
34 0           my $cfg = shift;
35 0           my ($session, $error);
36 0 0         ($session, $error) = Net::SNMP->session($cfg->snmp) or die $error;
37 0           bless { session => $session, }, $class;
38             }
39              
40             sub DESTROY {
41 0     0     my $self = shift;
42 0 0         $self->{session}->close if($self->{session});
43             }
44              
45             sub request {
46 0     0 0   my $self = shift;
47 0           my $mis = shift;
48 0 0         my $result = $self->{session}->get_request( -varbindlist => [$mis] ) or die;
49 0           $result->{$mis};
50             }
51              
52 0     0 0   sub ssCpuUser { my $self = shift; $self->request('.1.3.6.1.4.1.2021.11.9.0'); }
  0            
53 0     0 0   sub ssCpuSystem { my $self = shift; $self->request('.1.3.6.1.4.1.2021.11.10.0'); }
  0            
54 0     0 0   sub ssCpuIdle { my $self = shift; $self->request('.1.3.6.1.4.1.2021.11.11.0'); }
  0            
55              
56 0     0 0   sub laLoad1 { my $self = shift; $self->request('.1.3.6.1.4.1.2021.10.1.5.1'); }
  0            
57 0     0 0   sub laLoad2 { my $self = shift; $self->request('.1.3.6.1.4.1.2021.10.1.5.2'); }
  0            
58 0     0 0   sub laLoad3 { my $self = shift; $self->request('.1.3.6.1.4.1.2021.10.1.5.3'); }
  0            
59              
60 0     0 0   sub memTotalSwap { my $self = shift; $self->request('.1.3.6.1.4.1.2021.4.3.0'); }
  0            
61 0     0 0   sub memAvailSwap { my $self = shift; $self->request('.1.3.6.1.4.1.2021.4.4.0'); }
  0            
62 0     0 0   sub memTotalReal { my $self = shift; $self->request('.1.3.6.1.4.1.2021.4.5.0'); }
  0            
63 0     0 0   sub memAvailReal { my $self = shift; $self->request('.1.3.6.1.4.1.2021.4.6.0'); }
  0            
64 0     0 0   sub memTotalFree { my $self = shift; $self->request('.1.3.6.1.4.1.2021.4.11.0'); }
  0            
65 0     0 0   sub memShared { my $self = shift; $self->request('.1.3.6.1.4.1.2021.4.13.0'); }
  0            
66 0     0 0   sub memBuffer { my $self = shift; $self->request('.1.3.6.1.4.1.2021.4.14.0'); }
  0            
67 0     0 0   sub memCached { my $self = shift; $self->request('.1.3.6.1.4.1.2021.4.15.0'); }
  0            
68              
69              
70             sub addfunc {
71 0     0 0   my $self = shift;
72 0           my $method = shift;
73 0           my $mis = shift;
74              
75 1     1   5 no strict 'refs';
  1         1  
  1         73  
76 0     0     *{$method} = sub { my $self = shift; $self->request($mis); };
  0            
  0            
  0            
77             }
78              
79              
80             1;
81              
82             __END__