The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

SNMPMonitor - Perl extension for writing SNMP Monitors

SYNOPSIS

  use SNMPMonitor;
  my $monitor = SNMPMonitor->new ($root_oid);

DESCRIPTION

This module is designed to allow easy creation of custom SNMP monitors by using a pluggable architecture. By far, the easiest way to implement this module is to include the following lines in /etc/snmpd.conf

  perl use SNMPMonitor;
  perl my $monitor = SNMPMonitor->new;

This will include all plugins in $INSTALLDIR/SNMPMonitor/Plugin/

You may, however, use the above toinitialize the module from a script and simply include this script in /etc/snmpd.conf (obviously, omit the 'perl'):

  perl do '/path/to/script.pl'

EXPORT

None by default. It's an object...

Writing Plugins

Plugins are self containd Perl scripts. There are five basic requirements, as long as these are met, anything is possible.

Requirements,

-Package Name that matches the file name -isa relationship with SNMPMonitor::Plugin -sub set_plugin_oid -sub monitor -module returns a true value and ends with '__END__'

Plugin Template

  listing: PluginTemplate.pm

  package SNMPMonitor::Plugin::PluginTemplate;
  use common::sense;

  use NetSNMP::ASN     (':all');
  use parent qw(SNMPMonitor::Plugin);

  sub set_plugin_oid { '0.0.0' };


  sub monitor {
      my $self = shift;
      my $request = shift;
      my $FH = shift || 'STDERR';

      # Print some debug output, optional
      print $FH "--> Request in: " . $self->name . "\n";
      print $FH "--> reporting 'Test Successful'\n";

      $request->setValue(ASN_OCTET_STR, "Test Successful");
  }

  1;
  __END__

SEE ALSO

Net-SNMP Documentation

Caveats

Currently, there are some, but I don't remember right now. Something about something... Good, I know right?

AUTHOR

Jon, <Jon@localdomain>

COPYRIGHT AND LICENSE

Copyright (C) 2011 by Jon

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.