[Table of Contents][Index]



spong-server-mod-template - how to build a spong-server data module


This template will be a simple example that will write incoming 'cpu' status updates into a queueing directory. Each file will have the host's name plus the current time are it's file name.

The file name of the module must begin with 'data_'. The registry key can be anything, but it should be consistent with the procedure's name. And the registry must be unique among the other loaded modules; otherwise, one module will overlay the other.

The line that has the assignment to $DATAFUNCS{'registry-name'} is the key to the registry mechanism. It's what ties the registry name to the your data module.


  # Register the routine with the plugin registry
  $DATAFUNCS{'cpu_queue'} = \&data_cpu_queue;

  $CPU_QUEUE_DIR = "/var/spool/spong-queue";  # The spooling directory

  sub data_cpu_queue {
     my( $host, $service, $color, $start, $time, $sum, $message ) = @_;

     if ( $service ne 'cpu' )  { return; }

     my( $file ) = "$CPU_QUEUE_DIR/$host-" . time();

     if (! open(FH,"> $file") ) {
        &main::error("plugin::data_cpu_queue: Could not open file $file: $!");

     print FH "hostname: $host\n";
     print FH "color: $color\n";
     print FH "start-time: $start\n";
     print FH "last-update: $time\n";
     print FH "summary: $sum\n";
     print FH "message:\n$message\n";

     close FH;

     &main::debug("plugin::data_cpu_queue: event written to file $file",5);

  # I'm included perl code, I need this line.

Please note the final line. It is always required for a module file.

You should use the &main::error() function to log any error encountered in your module. The &main::error() function is used to write output whenever something interesting happens in your module.

Any configuration variables needed for your data modules can be put into the Global section of your module as shown above. Of it can be added into the spong.conf or spong.conf.<host> configuration files. Configuration variables for your module should be named to match them up with the name of your customized check.


the developer-guide entry elsewhere in this document, the spong-server entry elsewhere in this document, the spong.conf manpage


Stephen L Johnson <>


Based on code/ideas from Sean MacGuire (BB), and Helen Harrison (Pong). Ed Hill original converted Big Brother ( into Perl which diverged from Big Brother to become Spong. Ed Hill continued Spong development until version 2.1. Stephen L Johnson took over development in October, 1999 with his changes which became Spong 2.5.

[Top] Generated by Pod::HTML 0.43 on Wed Jun 13 11:17:44 2001