spong-server(8)
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 spongnetwork 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 spongserver 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.