Provided by: spong-server_2.7.7-12_all bug


       spong-server - save status information reported by spong programs


       spong-server [--debug n] [--killâ”│--restart] [---test]


       The spong-server is the central core program of Spong. The program
       received status reports from various spong clients (specifically spong-
       network and various spong-client program running). If the message is
       worth notifying someone about, it calls the spong-message program.  The
       status messages messages are stored into an internal database with
       significant changes being logged into a history event log. Queries from
       spong interface programs (like spong and www-spong) seeking to display
       the data in the spong-server database.

       Running the program

       You should start this program in you system startup file, and it should
       be running constantly. If no parameters are provided, spong-server will
       fork and detach itself from the console to run as a daemon.

       If you provide the --debug n flag then debugging information will be
       printed to stderr. The n is an integer from 1 to 9. A higher number
       means more verbosity in the debugging output.

       If you provide the --restart flag, a signal will be sent to the spong-
       server process that is currently running. It will release reload it’s
       configuration and restart. If the --kill flag if provided, a signal
       will be sent to the running spong-server process causing it to exit.

       The --test parameter has no effect in the spong-server program itself.
       If specified on the comment line, the --test parameter will be passed
       to the spong-message program when it is called. The <--test> paramter
       will cause spong-message to skip the actual send of notifications.

       An alternate configuration file can be specified on the command line.
       This file will be read instead of the default spong.conf configuration

       Theory of Operation

       The spong-server has a main process that spawns a number of child
       processes to handle all of the work. There are a query process which
       handles queries into the Spong database, an update process which
       handles Spong formatted update messages (see "SPONG PROTOCOL" in
       developer-guide), a BBSERVER update process which handled Big Brother
       client update messages, and possibly other process are more feature are
       added in the future. The main process monitors each of the child
       processes. It will restart any child process that dies for any reason.

       Each time a connection comes in, the child process is forks off to
       handle the the above tasks. The main child process goes back to waiting
       for more connections.

       Data Modules

       The spong-server has a plug-in module facility similar to the other
       Spong programs. One or more modules can be installed in the
       LIBDIR/Spong/plugins/ directory. The modules are loaded are run-time by
       spong-server. As each module is initialized is registers itself with
       the plug-ins registry.

       Each module is called in turn after all of the normal processing is
       done for incoming status messages. This allows you access to data of a
       status message that will eventually be discarded. Data modules can do
       virtually anything that you desire with the incoming data. The data can
       be written to a log or database or feed to another application for
       further filter or processing.

       Two sample data modules are located in the contrib/plugins/spong-server
       directory of the Spong distribution. The two modules (data_rrd_disk and
       data_rrd_la work in conjunction with a software package named RRD Tool
       to log disk and cpu information into Round Robin Databases. The modules
       are included as examples. They are not of must use by themselves. See
       the Spong-RRD  package (
       for a complete package that utilizes data modules.

       Big Brother (BBSERVER) Emulation

       The Spong Server has a partial Big Brother ( ) server
       emulation mode. This also Big Brother Clients to be used with Spong.
       The emulation mode is enabled by configuring the $SPONG_BB_UPDATE_PORT
       parameter in the spong.conf configuration file.

       Note: The Spong BBSERVER Emulation mode only supports status messages
       from Big Brother Client programs. Alert messages are not supported and
       are silently ignored by the spong-server.

       TCP Wrappers

       The spong-server can use the TCP Wrappers Library. The TCP Wrappers
       Library implements a rules-based access control languguage. This allows
       incoming connection to be validated by host names and/or IP addresses.

       To use TCP Wrappers, the libwrap.a library and the Authen::Libwrap Perl
       module must be installed. The Authen::Libwrap module be found in the
       Comprehensive Perl Archive Network (CPAN). See

       The names for the various spong-server services are as follows:

       ·   spong-update: Status message update service

       ·   spong-bb-update: Big Brother Server Emulation service

       ·   spong-query: Spong Database query service


       Configuration Files

           By default this reads the spong.conf file on startup. You can
           specify an alternate config file via a command line option and it
           will read that file instead. If you change values in the
           configuration file you will need to restart this program for those
           changes to be re-read.

           After reading the configuration file that you specify (or the
           default), it then reads the spong.conf.[hostname] file where
           [hostname] is the hostname of the machine that you are running on.
           Since these configuration files are just standard perl code that
           gets imported, the variables that you define in the host specific
           config file will take precedence over the standard configuration

           spong-server reads all of the host that are defined in the %HOSTS
           variable in the spong.hosts file.  spong-server uses this list of
           servers to validate incoming status and control messages.  And the
           list is used in format of database queries.

           The spong.groups file defines groups of hosts. spong-server uses
           these host groups to filter and format the data returned in
           database queries.

       From spong.conf:

       Yes there are a lot of variables. But all of the variables have defined
       default values. Most of these variables are used customizing the client
       web and text interfaces.

           This variable defines the port that the Spong update process
           listens on. If This variable is not defined the Spong update
           process will not be started.  The default value is 1998.

           This variable defines the port that the Spong query process listens
           on. If this variable is not defined the Spong query process will
           not be started. The default value is 1999.

           This variable defines the port that the Big Brother BBSERVER
           emulation process listens on. If this variable is not defined the
           Big Brother BBSERVER emulation process will not be started. The
           default value is 1984.

       $SPONGSLEEP (Depreciated)
           This variable is used by spong-server to determine how old a
           service status can be before it is considered stale. It’s status
           will be reported as ’purple’. The exact time to live a message is 2
           * $SPONGSLEEP.  (This variable is depreciated in favor of the new
           $SPONGSLEEP{} variables.)

       $SPONGSLEEP{’DEFAULT’}, $SPONGSLEEP{’spong-server’}
           This the new method for specifying the $SPONGSLEEP interval for
           Spong programs.  If there is not $SPONGSLEEP{} entry for the
           program, it will use the $SPONGSLEEP{’DEFAULT’} value. If no value
           is then found, spong-client fall back to using $SPONGSLEEP.

           This defined the directory where the Spong database will be stored.
           Each host will have a subdirectory in this directory which is named
           for the host.

           The directory that Spong programs use for temporary store and work
           files. It should be different a directory than /tmp for operation
           and security reasons.

           If this variable is set to 1, it will enable the storing of the
           update status message information for each event that is generated
           in the history log. This status message information is access via
           the web interface by click on the status color or icon link of an
           event in a History Listing.

           If set to 1, spong-network will log errors to a log file in
           $SPONGTMP named spong-network.log.

           If set to 1, spong-network will log errors to the syslog using the
           USER facility and the ERR priority.

           This variable defined the maximum amount of time (in seconds) that
           a incoming connection of a status message can last. Once the time
           limit is exceeded spong-server will terminated the connection. This
           action can be disables by setting the variable to zero (0).

           Set this variable to 1 to display the fully qualified domain name
           (FQDN) of hosts in Spong client displays. Otherwise only the first
           element of the FQDN will be displayed. If the host has a
           ’display_name’ attribute, it will be used in preference to the FQDN

           Set this varirable to 1 to display teh fully qualified domain name
           (FQDN) of hosts in History displays display clients. Otherwise only
           the first element of the FQDN will be displayed. If the host has a
           ’display_name’ attribute, it will be used in preference to the FQDN

       From spong.hosts:

           All of the host names defined in %HOSTS are the list of hosts that
           spong-server will accept status messages for. Any status message
           for an unknown host will be logged as an error and discarded.

       From spong.groups:

           The host groups that are defined in this variable are used to
           filter and format data queries of the Spong database.


       spong.conf, spong.conf.hostname, spong.hosts, spong.groups


       Perl v5.005_03 or greater is required.


       No know bugs.


       spong.conf, spong.hosts, spong.groups, spong-server-mod-template,


       Ed Hill <>, Unix System Administrator, The University
       of Iowa

       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.