---
name: "spong-server"
section: "8"
platform: "linux"
package: "spong-server"
version: "2.7.7-22"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/spong-server"
---

# spong-server(8)

save status information reported by spong programs

## NAME

**spong-server** - save status information reported by spong programs

## SYNOPSIS

**spong-server** \[**--debug** *n*\] \[**--kill\|--restart**\] \[-**--test**\]\
                 \[*config\_file*\]

## DESCRIPTION

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

### Configuration Files

- spong.conf

  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.

- spong.conf.\[hostname\]

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

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

- spong.groups

  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.

- $SPONG\_UPDATE\_PORT

  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.

- $SPONG\_UPDATE\_PORT

  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.

- $SPONG\_BB\_UPDATE\_PORT

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

- $SPONGDB

  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.

- $SPONGTMP

  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.

- $SPONGSTATUS

  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.

- $SPONG\_LOG\_FILE

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

- $SPONG\_LOG\_SYSLOG

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

- $SPONG\_SERVER\_ALARM

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

- $WWW\_FQDN

  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.

- $HISTORY\_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 names.

From *spong.hosts*:

- %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*:

- %GROUPS

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

## FILES

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

## DEPENDENCIES

Perl v5.005\_03 or greater is required.

## BUGS

No know bugs.

## SEE ALSO

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

## AUTHOR

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

Stephen L Johnson \<*sjohnson@monsters.org*\>

## HISTORY

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.
