SNMP-Persist - The SNMP pass_persist threaded backend

COPYRIGHT AND LICENCE

Copyright (C) 2006 Anna Wiejak

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

INTRODUCTION

The SNMP-Persist module is a backend for pass_persist feature of net-snmp.

It simplifies the process of sharing user-specified data via SNMP and development of persistent net-snmp applications controlling a chosen MIB subtree.

It is particularly useful if data gathering process takes too long. The responder is a separate thread, which is not influenced by updates of MIB subtree data.
The answer to a snmp request is fast and doesn't rely on potentially slow source of data.

QUICK START

  1. Decide on what values and data will be stored in snmp subtree

    Example:

    There are 5 applications running on the box, each outputing a new line to its own log file every 60 seconds. The aim is to:

  2. Organize the data into sets of data pairs (OID data type + value).
    Example

    Each application gets its own number. The following data pairs are set:

    • aplication number (INTEGER),
    • application name (STRING),
    • number of threads (INTEGER),
    • database connections (INTEGER
    • total memory (Counter32) Additionally each data set gets its own sequence number.
  3. Write perl script which does the following:
  4. Add calls to SNMP::Persist functions as specified in the manual and loop the data mining function (see: EXAMPLE)
  5. Attach to snmpd.conf config file

pass_persist .1.3.6.1.4.1.2021.248 <user script location>

EXAMPLE

        use SNMP::Persist qw(&define_oid &start_persister &define_subtree);
        use strict;
        use warnings;

        #define base oid to host the subtree
        define_oid(".1.3.6.1.4.1.2021.248");

        #start the thread serving answers
        start_persister();

        #set first application number

        #loop forever to update the values
        while(1) {

          my %subtree;
          my $gameName;
          my $index=1;                                          #set first application number

          foreach $gameName ("game1", "game2") {                     #for each application
            $subtree{"1." . $index}=["INTEGER",$index];              #set game index data pair
            $subtree{"2." . $index}=["STRING",$gameName];            #set game name data pair
            $subtree{"3." . $index}=["Counter32", 344.2 ];           #set total memory data pair
            $index++;                                                #next application
          }

          #new values have arrived - notify the subtree controller
          define_subtree(\%subtree);

          #don't update for next 5 minutes
          sleep(300);
        }

INSTALLATION

To install this module, run the following commands:

perl Makefile.PL
make
make test
make install

SUPPORT AND DOCUMENTATION

After installing, you can find documentation for this module with the perldoc command.

perldoc SNMP::Persist

You can also look for information at:

Search CPAN

http://search.cpan.org/dist/SNMP-Persist

CPAN Request Tracker:

http://rt.cpan.org/NoAuth/Bugs.html?Dist=SNMP-Persist

AnnoCPAN, annotated CPAN documentation:

http://annocpan.org/dist/SNMP-Persist

CPAN Ratings:

http://cpanratings.perl.org/d/SNMP-Persist