Langue: en

Version: 2001-12-18 (debian - 07/07/09)

Section: 8 (Commandes administrateur)


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 file.

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 (http://spong.sourceforge.net/downloads.html) for a complete package that utilizes data modules.

Big Brother (BBSERVER) Emulation

The Spong Server has a partial Big Brother ( http://bb4.com/ ) 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 http://cpan.org/.

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 settings.
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.)
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 names.
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 names.

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, developer-guide


Ed Hill <ed-hill@uiowa.edu>, Unix System Administrator, The University of Iowa

Stephen L Johnson <sjohnson@monsters.org>


Based on code/ideas from Sean MacGuire (BB), and Helen Harrison (Pong). Ed Hill original converted Big Brother (http://www.bb4.com) 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.