|[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:
Text based query program, reports information about hosts that are monitored.
Web based query program, reports information about host that are monitored.
Program that runs on each monitored server. Reports host based information (disk, cpu, logs, etc.)
Reports on network based services (smtp, ping, http, etc.)
Collects information reported and responds to queries about that information.
Called by the spong-server program to send out notifications when problems occur.
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
http://www.cpan.org/CPAN/, 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 CGI.pm 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 email@example.com
with the work subscribe in the message. Or be visiting the mailing lists
home page at
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 firstname.lastname@example.org
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.
Frequently Asked Questions by users and their answers.
Geared towards the person who will be using the spong text or web based clients. This is the documentation that will be seen when the user clicks on the Help button provided in www-spong.
Written for the person who will be installing spong, and setting up the various configuration files. This provides a step by step installation process and gives some suggestions on things Spong can do that you might not have thought of.
Written for the person who wants to have Spong look differently, or what to add some new feature in their version of spong, or wants to incorporate spong output in other programs. This details the Spong internals, and describes the various protocols that are used.
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
spong.pl text based spong display client
spong-client.pl collects/reports cpu,disk,etc info
spong-network.pl collects/reports network service info
spong-server.pl listens for/saves spong status updates
spong-message.pl alerts humans there's a problem
spong-ack.pl text based acknowledgement program
www-spong.pl web based spong display client
www-spong-ack.pl 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
email@example.com, and I will mail you a copy.
The list of changes for the latest version of Spong can be found at http://spong.sourceforge.net/documentation/CHANGES.
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.
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.
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.
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.
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.