[Table of Contents][Index]



Simple System/Network Monitoring - spong v2.0


This is a simple systems and network monitoring package called Spong. It has the following features:

This is hopefully a simple tool. It does not compete with Tivoli, OpenView, UniCenter, or any other commercial packages, and I have no intention of trying to turn it into one. It is not SNMP based, it communicates via simple TCP based messages. It is written in Perl, so hopefully it can be run on multiple systems (including NT - although it has not been ported yet - but is on the to-do list).

I'm a strong believer in KISS (keep it simple stupid), and hopefully this package is as simple as possible (but no simpler). Spong is broken up into components that each do a specific thing. Listed are some of the (key) components:


Spong's Home Page is at

Perl is require to run spong. If you don't have Perl installed you can retrieve it from the CPAN archive, along with other optional modules such at the Net::DNS module. I would suggest having at least version 5.004 installed (otherwise you will need to download the module as well). You can get the latest version of Perl at

You can retrieve the latest version of Spong from the Spong project at Source Forge. The 'Downloads' web is at This distribution contain the spong source, documentation, and gif images.


There are two mailings setup for Spong: spong-users and spong-announce.

spong-users is for general discussions or getting help for Spong. You can subscribe by sending a message to with the work subscribe in the message. Or be visiting the mailing lists home page at

spong-announce is a low-volume mailing which will be used for announcements and news concerning Spong. It is moderated, but feel free to submit any pertinent items. You can subscribe by sending a message to with the work subscribe in the message. Or be visiting the mailing lists home page at


Perl v5.004 or greater is all that is required to set up Spong. A web server where you can install a CGI program, and a web browser that can display tables and frames are required for use of the web interface to Spong. If you want to monitor DNS servers remotely, then you will need to install the Net::DNS Perl module (available at CPAN). Spong will run fine without this module, you just will not be able to monitor the DNS service.

These scripts should run on any Unix system (and to ``some'' degree any environment where Perl is available).


Don't let the amount of documentation scare you, I still think Spong is simple to setup and use.

The documentation is provided in perl POD format (the old Perl pod format just didn't do all that I wanted). The installation process will create HTML, text and man formatted versions of the documentation. The HTML documentation can be located anywhere. It's cross-links should survive a move intact.

There are four main documents that describe spong from different perspectives.

There are also specific "man" pages for each program and configuration file which provide detailed explanations of each option, command line argument, etc... Finally, if you are in a pinch, the code is readable enough (and well commented) to provide some help as well.

I hopefully have provided enough documentation that the only email I get are suggestions for new features and bug reports - but if you are stuck, feel free to send me email and I will respond if I can.


Here is a description of the directories and files that come in this package prior to installation. More specific descriptions of each file are available in the various documentation that comes with spong.


spong.conf distributed config file

spong.conf.<os> os specific config changes

spong.hosts host/service config file

spong.groups group config file

src: text based spong display client collects/reports cpu,disk,etc info collects/reports network service info listens for/saves spong status updates alerts humans there's a problem text based acknowledgement program web based spong display client web based acknowledgement program


<*>.html documentation for the above files

gifs: various icons used by www-spong


Copyright 1999,200, Stephen L Johnson

Like Perl, Spong may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5.0 source kit. If either file is not available to you, send email to <, and I will mail you a copy.


The list of changes for the latest version of Spong can be found at

Version 2.7
Enhanced error logging to log file, syslog, and stderr added to all programs. Command line paramters are now handle by Getopts::Long perl module to consistancy. Debugging output levels can now be specifie in all programs. Date and Time displays are now configurable using strftime() format strings.

Spong Server network code changed from single threaded to forking. Status information for for entries in the History file are now stored. Command line program for sending status message in scripts or programs added.

Change to the Web interface include displaying Hosts grouped by Host Group, option static Title frame, configuration toolbars added to multiple displays. The Spong Network checking program now has a more agressive, and configurable, error checking routine. Message templates has been added into the Spong Message notification program. And an alpha WAP interface has been added.

Version 2.6
Notification rules enhanced with matching and excluding by host groups. Added delayed and repeat notifications. Module Plugin mechanisms added to spong-client, spong-network, spong-server, and spong-message programs. Programs now automatic background themselves. Event duration added to spong-server database. NTP and SSH checks added to spong-network.
Version 2.5
First release by Stephen L Johnson. Rules based notifications added, a limited Big Brother Server emulation was to allow Big Bother Clients to be used. A new log monitoring routine which tracks last position read. Enhanced network checks to eliminate momentary network problems.
Version 2.0
A OO redesign of the spong-server and display programs, added acknowledgments and group support, added a text based interface, made www interface more extensible.

Version 1.1
Primarily a bug fix release with a few minor features (dns,http config,multiple interfaces) added.
Version 1.0
Initial public release, mostly based on Big Brother package from Sean MacGuire.


By Ed Hill

Many ideas (and some code) came from two similar packages. We have used a program call "Pong" here at The University of Iowa for about a year. Pong was written by Helen Harrison at SAS Institute and a paper on it was presented at the Usenix LISA conference. Pong would allow us to do simple monitoring of systems (via ping) and would report machine status via a web page. The name of this package (Son of PONG, but pronounced as its spelled "spong") is an obvious rip off...

Originally, the main concepts and design came from Big Brother written by Sean MacGuire. That package was written in C and sh scripts which I ``ported'' to Perl, making many changes along the way (like adding more information to the messages going from the client to the server, adding history, changing the way that information is displayed, added some configuration options, etc.).

There didn't seem to be any interest in my perl code from the author of BB, so I've changed the name so there would be any confusion between this package and its inspiration.

I'd also like to thank the many people who have contributed patches and comments, and where willing to try out spong and help me work out a few of the early problems.

by Stephen L Johnson

I first found Big Brother and liked what it did. But I was put as a bit by it being written in C and shell scripts. While perusing the Big Brother mailing lists archives I ran across references to Spong, and it being written in Perl. This was Spong 1.1

I tried it out but there were some stability problems. So I reluctantly dropped Spong in favor of Big Brother. I didn't like some of the limitations of Big Brother, so I started hacking on the source code. To me it was akin to writing in assembler and getting a tooth pulled. I don't like either one.

Fortunately I found a link to Ed Hill's installation of Spong 2.1 at the University of Iowa. I feel in love with Spong all over again. I asked Ed Hill if I could have Spong 2.1. He sent me the distribution and I started evaluating it again.

Spong 2.1 was a big improvement over Spong 1.1 in terms of stability and features. I rolled the changes that I made to Big Brother into Spong 2.1 and I have been changing things ever since.

Ed Hill had stopped development of Spong and I was spending so much time on Spong. I asked Ed if I could take over development of Spong. He gave his blessing and the torch was passed in October of 1999.

I would like to thank Ed Hill for creating Spong and allowing me to take up the development touch. The current Spong user and development community is small but growing. There are still a lot of rough edges to need to be smoothed. I would like to thank them for their patient in allowing me to whip the Spong distribution into shape and helping me work out the numerous installation problems.


Known Problems in v2.6

Here are a list of problems, and possible fixes that have been reported for version 2.8. I will update this section as bugs come in (if there are any 8-). These fixes will all be included in the next release of spong, but if you can't wait - here are some suggestions.

Memory leak in spong-network on RedHat 6.0
spong-network has a memory leak when running on a Linux system and gligc 2.1.1. The program memory core size grows after each check cycle. The fix is to upgrade the glibc from version 2.1.1 to version 2.1.2.


Ported by:

Ed Hill <> Internet Software Developer at The University of Iowa

Currently maintained by:

Stephen L Johnson <>

Please feel free to send me bug reports, patches, suggestions, or comments.

[Top] Generated by Pod::HTML 0.43 on Wed Jun 13 11:17:42 2001