This is the changes for the the enhacements that I have been adding into Spong. You can pick up this file at http://monsters.org/pub/spong/CHANGES. You can pick up the latest spong version from: http://monsters.org/pub/spong/spong.tar.gz Stephen L Johnson Version 2.6g 01/09/00 FIXED - brief.html file name was mispelled in lib/Spong/Info.pm module (thanks to Andrew Ruthven ) Version 2.6f 02/28/00 FIXED - added code to clear signal mask in handle_signals in case process inherits any blocked signals ( thanks to "mike bayliss" ) files - spong-server spong-network spong-client FIXED - added missing show() function to www-spong-ack (thanks to "Eric D. Christensen" ) FIXED - added chmod 755 to build program for directories in /lib/Spong directory ( thanks to "Eric D. Christensen" ) Version 2.6e 02/18/00 FIXED - Status.pm module was missing an eval statement around the alarm block file - lib/Spong/Status.pm ADDED - spong-server listen_for_update() function now has configuration alarm timeout for client connections. Version 2.6d 02/16/00 FIXED - np-* files were not being deleted when a service recovers while using $SEND_MESSAGE = "RED". file - spong-server.pl Version 2.6c 02/09/00 CHANGED - Spong::Status::status() is now more agressive in trying to connect to spong-server. It will try up to 30 times before aborting. file - lib/Spong/Status.pm FIXED - spong-network was die'ing when it failed to connect to spong-server. It will now just log a message and then continue. CHANGED - spong-netowrk modules check_ftp and check_smtp now sent the quit\n command to the host being check to properly terminate the connection. CHANGED - spong-network plugin check_http was changed to treat a response code of 401 (Authorization Required) as a green status. A 401 should be treated as a normal reponse from a passworded page being checking on the web server. (Thanks to Gerald Combs for this enhancement.) FIXED - spong-network was deleting the spong-client.pid file instead of it's own spong-network.pid file is --nosleep was specified on the command line. (Thanks to Gerald Combs for finding this bug.) Version 2.6b 01/24/00 FIXED - Fixed bug in Host.pm oject class which would cause spong-server to crash if a host had no service status files in the database. FIXED - spong-server data modules plugins in contrib/plugins/spong-server/ were older development versions. The proper release versions have been installed. Version 2.6a Changes 01/10/00 FIXED - Fixed notfication bug in spong-server and spong-message for contacts defined with "delay" attributes. Notification would be sent repeated after the initial delay. Version 2.6 Changes 12/08/99 FEATURE - Added data plugin mechanism to spong-server. This is a hook to the service status update to be used by output programs. Two sample plugin modules in contrib/plugins/spong-server are included. They both write data to RRD Tool databases. data_rrd_disk logs usage for file system on a host. data_rrd_la logs the load average, number of user and numbers of jobs. 12/07/99 FIXED - www-spong-ack was missing 'use Time::Local;' statement. This was causing web server error when an explicit date/time was used in the Duration field. (Thanks to Jonathan Bryne) 12/06/99 CHANGED - Moved spong-cleanup's configuration parameters to spong.conf file. CHANGED - Update documentation with new changes. 12/05/99 FIXED - Fixed bug in spong-message which cause contact with a delay and repeat attributes to be continually notified. FEATURE - Added host_groups and exclude_host_groups matching to spong-message. The hostname will be checked to see if it in any of the host groups defined in host_groups and exclude_host_groups. CHANGE - Moved the &load_msg_func() function from begging of program to after the rules scanning. They messaging functions will now only be loaded it there are notifications to be sent. CHANGE - Create module Status.pm to encapsulate the &status() function. Changed spong-network and spong-client to use the new package. files - lib/Spong/Status.pm spong-client spong-network 12/01/99 FIXED - Added error checking code to query process display routined. Querying for invalid information caused the query process to crash. 11/27/99 CHANGES - Various documenation updated and additions. 11/24/99 FIXED - spong-network and spong-client had a wrong variable name in the &status() function if the inet_aton() function failed. (Thanks to Tom Brown) files - spong-client spong-network FIXED - Changed file permissions setting of CGI programs installation in the 'build' program. The CGI programs were installed with write permission for the $WEB users in the build program. (Thanks to Tom Brown) CHANGE - The uiowa.edu "Machine Info" link on the Web Displays has been replaced with a $WWW_ACTIONBAR_CUSTOM variable in the spong.conf configuration file. If the $WWW_ACTIONBAR_CUSTOM variable is defined, the contents of the variable will be included in the Display frame's Action Bar. Only HTML code should be used in this variable. 11/22/99 FIXED - Some machines were core dumping in the spong-message program in the &load_msg_funcs() procedure on a glob() function. This function loads the messaging plugins from the library. The &load_msg_funcs was rewritten to use opendir() and readdir() instead of glob(). FIXED - spong-server had a bug in the --restart logic. It was not handling the terminated of it's child processes correctly. The HUP handler function (hup_handler) was rewritten to waitpid() explicit on the child process pids, instead of using the standard &chld_handler() function. FIXED - spong-server had another latent bug in the &chld_handler function. It was not reinitializing the $SIG{CHLD} signal handler. This has to be done on systems using System V based libraries. FIXED - spong.conf.solaris had a bug if spong-client was not run as root. The &gets_swap() function called "swap -s" without an explicit path. The fix was to call "swap -s" with the full path name to the swap command. CHANGED - Changed the check_ntp network check to be a bit less draconian with a critical error. It will not only be a critical is the service is not running. A yellow conditions will be reported if the time is more then one second off or it the ntp server is not synchonized yet. files - lib/Spong/Network/plugins/check_ntp 11/15/99 ADDED - Added code to spong-server to have it automatically daemonize itself and disconnect from the foreground. It is using a new Daemon.pm library module. files - spong-server lib/Spong/Daemon.pm CHANGED - The child process handle logic has been changed to better handle termination signals. The child processes now exit gracefull. files - spong-server CHANGED - spong-client and spong-network daemonize code has been replace with the Daemon.pm module. 11/02/99 CHANGED - Changed daemonize code to use the POSIX setsid() function to become session leader. Programs where not disconnecting from tty in FreeBSD. files - spong-network spong-client ADDED - Added new OS configure. FreeBSD. The uptime program has weird behaviour when called with full path name. ADDED - Added new client check 'check_mailq'. It checks sendmail mail queue levels against $MAILQWARN and $MAILQCRIT. It uses $MAILQ as the command to execute to display the mailq. Added $MAILQ to all spong.conf files. FIXED - spong-client program has a bug in the load_plugins subroutine. It was trying to use $HOSTS from spong.hosts, but the program doesn't use spong.hosts. Change the logic to look for $CHECKS in the spong.conf file instead. 11/01/99 FIXED - Fixed missing @@PERL@@ substitution variable for #! line of spong-clientand spong-network. 10/30/99 CHANGED - Added new client check plugin mechanism similar to spong-network. Client checks are now plugs that can be configured at runtime. Client plugs resident in the lib/Spong/Client/plugins directory. The current plugsin are the 'disk','cpu','processes','logs'. Spong-client now looks for a 'checks' field in the $HOSTS hash to see what plugins to run. The syntax the the same as the 'services' field. If no 'checks' field is present, spong-client defaults to 'disk_space cpu_load processes log_files' and &check_local if present. 10/29/99 FIX - Fixed forking and signal login of spong-server to fork off properly and terminate properly when signalled. 10/28/99 CHANGED - spong-network now, by default, forks, disconnects from the console and runs in the background. spong-network will run in the foreground if the --debug parameter is used. CHANGED - spong-message has been enchanced with a new messaging function plugin mechanism (like spong-network's). New messaging functions can be added by adding the msg_* file into the lib/Spong/Message/plugins directory. The old messaging functions converted use the new plugin mechanism, and a couple of others have been added to show the full functionality of the new code. CHANGED - spong-message contact syntax has been enhanced to allow finer control over the to whom messages are sent. Your can specify which message function/carrier to notify rather than all of a $HUMANS defined notifications. I.E.: 'sjohnson:email' or 'unix-oncall:teletouch' or 'thebosses:sprintphone'. Files - bin/spong-message etc/spong.message ADDED - You now specify an initial delay before notifications are send out (e.g. Don't page until a service has RED for at least 15 minutes). And you may also specify a repeat interval for notifications after the initial notification (e.g. Keep paging every 10 minutes until problem is acknowledged). The new synatx is detailed in the comments of spong.message configuration file. Files - bin/spong-server bin/spong-message etc/spong.message 10/12/99 ADDED - NTP (Network Time Protocol) spong-network plugin. This plugin checks the NTP offset of the server using the "ntpdate -q" command. If the ntpdate checks returns "Server not suitable for sync...", the status is red. Otherwise if the offset is not than one second the status is yellow. A $NTPDATE variable with the path to the ntpdate command must be added to the spong.conf configuration file. 10/11/99 ADDED - Secure Shell (ssh) spong-network plugin. It checks whether the Secure Shell service is running or not. 10/07/99 ADDED - A timestamp has been added to the services status file to track event duration. The start time of an event is defined as a when a change of status for a service. A new field 'stime' (Start Time) has been added to the Service.pm object. The display of the event duration has been added to the Service::display_* routines for a full format displays. Files - bin/spong-server lib/Spong/Service.pm 10/06/99 ADDED - Added code to spong-client to allow it to fork and daemionize. spong-client will not daemonize is run with --debug. version 2.5 Changes CHANGED - Updated basic help html files. spong-server ADDED - Code to handle purple colored service status files in the database. The start of code to allow spong-server to handle old status as a real status state.ADDED - Big Brother server emulation. The server can now handle Big Brother Clients. The emulation is not 100% percent yet. The client must be configured to use FQDN names. And the server can't handle PAGE commands. ADDED - Added new a type of SEND_MESSAGE rule: RED-CHANGE. The spong-server will attempt to send out messages on any status transition to or from RED. FIXED - Fixed problem with in save_acks with 2 acks bein created with-in the same second. The second ack would overlay the first ack with the same file name. spong-client CHANGED - The old log scanning code is gone. There is a new Object Oriented log scanning routine logmon. logmon monitors the log file by monitoring the end of a file like "tail -f". Events are not reported over and over again until he file is rotated or edited. They will be reported for a specified period of time and then are discard. This does not work if spong-client is run with --nosleep from a crontab. ADDED - Added new OS specified get_swap routines to check swap space levels in the disk checks. spong-network CHANGED - Change the check routines to a new plug-in mechanism. New checks can be added by writing a plug-in module and placing it in the plugin directory. The new service can be used by referencing in the spong.host file. spong-network will load the routine and it will be registered with the plugin registry. ADDED - Added a new escalation mechanism to guard against transiant network problems. A RED status is not reported until a service for host has failed a certain number of times. Otherwise it is reported as a YELLOW status. CHANGED - Added a loop to &check_tcp to check a service 3 time before reporting that it is down. This is guard against temporary network gliches. spong-message ADDED - Added new rules based messaging. The new code is configured in the new spong.message configuration file. The rules allow for host and service based include and/or exclusion, along with version flexible time and day selection. Multiple contacts can also be specified. spong-ack FIXED - Replace unreliable getlog() call with getuserbyname($<) to get user login name. FIXED - Made sure to exit with a non-zero exit code on any errors. This is to make it more script friendly. CHANGED - Change options processing to use GetOpts modules for to simplifiy checks. ADDED - Added --batch parameter which forces program to print the ack. id instead of the more verbose output. This is to make it more script friendly.