From: Stephen L Johnson <sjohnson@monsters.org>
Date: Thu, 4 Nov 1999 22:57:54 +0000 (+0000)
Subject: Initial import
X-Git-Tag: start~29
X-Git-Url: http://git.etc.gen.nz/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=619310ec144fd4f4cee5258da6c22018fb848084;p=spong.git

Initial import
---

diff --git a/www/docs/changes.html b/www/docs/changes.html
new file mode 100755
index 0000000..5cebdc2
--- /dev/null
+++ b/www/docs/changes.html
@@ -0,0 +1,181 @@
+<html>

+<head>

+<title>Spong v1.1 - ChangeLog</title>

+</head>

+<body>

+

+<h1>Spong v1.1 - ChangeLog</h1>

+<hr>

+

+This file documents the changes that have been made to spong from release to

+release, currently I have only updated spong once, but I will be adding new

+features and change things around from time to time, and this document will log

+those changes.  Here is a quick overview of significant changes, scroll below

+for a more detailed summary:<p>

+

+<ul>

+<li><a href="#1_1">v1.1</a> - Fixed various bugs, including the problem with defunct processes

+left behind by spong-server.  Added DNS checks.  Added configuration options

+(http, and spong-message mostly).

+<li>v1.0 - Initial release, based on BB 1.04.

+</ul>

+

+Thanks to those (even my co-workers) who have contributed either code or just

+suggestions.  I have tried to put names next to changes where people

+contributed patches.  I'm not promising that I used the contributed code as is,

+but I tried to stay true in most cases to what was asked for.  If I left off

+someone's name I apologize.<p>

+<hr>

+

+<h2><a name="1_1">Changes between spong 1.0 and spong 1.1</a></h2>

+

+Released 04/15/1997<p>

+

+This is primarily a bug fix release with a few minor features added.

+Everything done in this release is based on feedback that I got from my

+co-workers and people who decided to take a look at spong after my message to

+the BB list.  The most significant changes are:<p>

+

+<ul>

+<li>BUG: fixed problem with defunct processes under Solaris.

+<li>FEATURE: Made the http check more configurable.

+<li>FEATURE: Added a DNS check (if you have the Net::DNS library installed)

+<li>FEATURE: Added the ability to check multiple interfaces on a host.

+<li>CHANGE: Got rid of the Makefile, now build/installation is done via a 

+simple perl build script.

+</ul>

+

+Here is a more detailed summary of changes, organized by file(s).<p>

+

+<dl>

+<dt><b>all:</b>

+<dd><li>changed the way that the hostname was determined so that it got set to

+the FQDN regardless of how you define the hostname on the host.  (Russell

+Street)

+<dd><li>Converted the hostname to lowercase to ward off problems with names not

+matching up correctly. (Carlos Canau).

+<p>

+

+<dt><b>spong-server:</b>

+

+<dd><li>stoped ignoring child processes, this fixes a problem with defunct

+processes under Solaris

+

+<dd><li>changed the accept() loop to make it identical to the one in the latest

+camel book - was having odd problems with the way that I had it.

+

+<dd><li>dumps it's pid to a file in the spong directory, and if you kill -HUP

+the process it will now re-exec itself, effectively re-reading the

+spong.conf/spong.hosts files.  Also added two new command line options:

+--restart will cause the running spong-server to reread it's config files (it

+really just restarts itself), and --kill will kill the current running

+spong-server program. (Russell Street)

+

+<dd><li>added a configuration option ($SEND_MESSAGE) so that you can decided if

+you want to send a message every time there is a red report, or only if there

+is a change in state of some service (send a message when it goes red, and send

+it again when it goes green).

+

+<dd><li>stopped filtering out blank lines in messages sent from the clients.

+<p>

+

+<dt><b>spong-network:</b>

+

+<dd><li>added a DNS check.  If a system is running a DNS server, the dns server

+will be asked to resolve it's own name, and if it can then all is assumed to be

+ok, otherwise an error is generated.  This check will only take place if you

+have the Net::DNS perl module installed (available from CPAN -

+http://www.perl.com/CPAN/) (Russell Street - although probably less then he

+wanted 8-)

+

+<dd><li>sleep the standard amount plus some random 10% time period just so

+things don't get in some goofy pattern...

+

+<dd><li>made the http check more configurable, it now allows you to specify what

+port to check, and what file(s) to check for - you can now use the http check

+to check on proxy servers.

+

+<dd><li>dumps it's pid to a file in the spong directory, and if you kill -HUP

+the process it will now re-exec itself, effectively re-reading the

+spong.conf/spong.hosts files.  Also added two new command line options:

+--restart will cause the running spong-network to reread it's config files (it

+really just restarts itself), and --kill will kill the current running

+spong-network program. (Russell Street)

+

+<dd><li>added a new host attribute (ip_addr) in the spong.hosts file that allow

+you to specify if a machine has multiple network interfaces (you need to list

+each interface's IP address) the app, and then spong-network will attempt to

+ping each interface

+

+<dd><li>stopped doing traceroutes to machines that are down.  It took too long,

+and can overload your network.  I now just show the ping output as the message

+when the host is down.

+<p>

+

+<dt><b>spong-client:</b>

+

+<dd><li>sleep the standard amount plus some random 10% time period just so

+things don't get in some goofy pattern...

+

+<dd><li>spong-client: Added single quotes around process check so that you can

+check for strings with spaces and other odd characters.

+

+<dd><li>adjusted the regular expression so that it doesn't leave off the first

+part of the mount point (Russell Street)

+

+<dd><li>Checked against both the filesystem and mounted on directory for

+strings to ignore.

+

+<dd><li>spong-client: dumps it's pid to a file in the spong directory, and if

+you kill -HUP the process it will now re-exec itself, effectively re-reading

+the spong.conf/spong.hosts files.  Also added two new command line options:

+--restart will cause the running spong-client to reread it's config files (it

+really just restarts itself), and --kill will kill the current running

+spong-client program. (Russell Street) <p>

+

+<dt><b>spong-display: </b>

+

+<dd><li>changed the "stale" time to 3 times the sleep time, with the new

+randomness of the sleep, and given that it can take a while for spong-network

+to do its thing, a value of 3 seems better then 2 for now.

+<p>

+

+<dt><b>spong-message:</b>

+

+<dd><li>added "color" as another argument, this was needed when I added the

+ability to send a message just based on a change of state.

+

+<dd><li>added a couple of configuration variables so that you can alter how

+often you want messages sent.

+<p>

+

+<dt><b>other files:</b>

+

+<dd><li>README: updated to include licensing information, also moved away from

+the readme.pod file to just creating it based on the readme.html file (since

+pod2html doesn't make the readme page look good enough in HTML).

+

+<dd><li>Got rid of Makefile, decided that since you have to have Perl to use

+this program, I just wrote a simple build script in Perl - this gets around

+problems I had with the Makefile, and different versions of make (thanks though

+to those who gave me patches for the Makefile).  The new "build" script also

+fixes the following couple of problems:

+

+<ul>

+<li>No chown/chgrp to root - let people install it how they like...

+<li>if you make more then once, the OS specific stuff gets added each time

+<li>adds more instructions to the installation process

+</ul>

+

+<dd><li>new spong.conf.linux: from (Baba Z Buehler)

+<dd><li>added spong.conf.solaris: from (Baba Z Buehler)

+

+</dl>

+<hr>

+Most recently updated on Apr 3, 1997 by

+<a href="http://strobe.weeg.uiowa.edu/~edhill/">Ed Hill</a>

+(<a href="mailto:ed-hill@uiowa.edu">ed-hill@uiowa.edu</a>)

+

+

+</BODY>

+</HTML>

diff --git a/www/docs/check_cpu.html b/www/docs/check_cpu.html
new file mode 100755
index 0000000..a710f91
--- /dev/null
+++ b/www/docs/check_cpu.html
@@ -0,0 +1,68 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.6 [en] (WinNT; I) [Netscape]">
+   <title>check_cpu</title>
+</head>
+<body>
+
+<hr WIDTH="100%">
+<h1>
+<a NAME="check_cpu.name"></a>NAME</h1>
+check_cpu - check cpu load levels and uptimes
+<p>
+<hr WIDTH="100%">
+<h1>
+<a NAME="check_cpu.description"></a>DESCRIPTION</h1>
+This is a client check that is run by <i>spong-client</i> that checks the
+client host's cpu load levels and uptime. <i>check_cpu </i>used the output
+of the <i>uptime</i> command by checking the the second load average number
+(a.k.a 5 minute load average). The load average is checked against the
+<b>$CPUWARN</b>
+and <b>$CPUCRIT</b> levels. If the load level exceeds <b>$CPUWARN</b>,
+it triggers a warning - yellow, and if the load level exceeds <b>$CPUCRIT</b>,
+it triggers an alert - red.
+<p>The uptime is client host is also checked. If the uptime of the system
+is less then one hour,&nbsp; a warning is triggered to show that the system
+has been restarted recently.
+<br>&nbsp;
+<h1>
+<a NAME="check_cpu.output"></a>OUTPUT RETURNED</h1>
+In the status summary field, the system uptime, 5 minute load average,
+current number of users logged in and the total number job running on the
+system are returned.
+<p>If the system ps command is capable of it, the top 10 processes, sorted
+by cpu percentage, are returned in the status detailed message field.
+<h1>
+<a NAME="check_cpu.configuration"></a>CONFIGURATION</h1>
+Here is a list of all of the configuration variables used by <i>check_cpu</i>.
+<blockquote><b>$CPUWARN</b>, <b>$CPUCRIT</b>
+<br>A number inidicating the CPU load that triggers a problem (<b>$CPUWARN</b>
+triggers warning - yellow, and <b>$CPUCRIT</b> triffers alerts - red).
+<p><b>$UPTIME</b>
+<br>An OS specific variable that contains the full path to the <i>uptime</i>
+command and any other commands needed to get the uptime output needed for
+parsing.
+<p><b>$PS</b>
+<br>An OS specific variable that contains the full path to the <i>ps</i>
+command with the paramters needed to the ps command output to display in
+the status detailed messages field.</blockquote>
+<b><font face="Arial, Helvetica, sans-serif"><font size=+2>FILES</font></font></b>
+<dl>
+<dt>
+<b>/usr/local/etc/spong/spong.conf</b></dt>
+
+<dd>
+Configuration file. This contains variables that detail spong and OS specific
+definitions used by spong-client. This file also contain variables describing
+threshold levels. See <i>spong.conf</i> for additional documentation.</dd>
+</dl>
+<b><font face="Arial, Helvetica, sans-serif"><font size=+2>AUTHOR</font></font></b>
+<p>Stephen L Johnson (<a href="MAILTO:stephen.johnson@mail.state.ar.us">stephen.johnson@mail.state.ar.us</a>)
+or (<a href="MAILTO:sjohnson@monsters.org">sjohnson@monsters.org</a>),
+Unix System Administator, DIS - State of Arkansas
+<br>&nbsp;
+<br>&nbsp;
+</body>
+</html>
diff --git a/www/docs/check_disk.html b/www/docs/check_disk.html
new file mode 100755
index 0000000..b34fab4
--- /dev/null
+++ b/www/docs/check_disk.html
@@ -0,0 +1,79 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

+<html>

+<head>

+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+   <meta name="GENERATOR" content="Mozilla/4.61 [en] (X11; U; Linux 2.2.12-20 i686) [Netscape]">

+</head>

+<body>

+

+<hr WIDTH="100%">

+<h1>

+<a NAME="check_disk.name"></a>NAME</h1>

+<b>check_disk</b> - disk space client check modules

+<p>

+<hr WIDTH="100%">

+<h1>

+<a NAME="check_disk.description"></a>DESCRIPTION</h1>

+This is a client check that is run by <i>spong-client </i>that checks disk

+space and swap space on the client host. <i>check_disk</i>&nbsp; uses the

+output of the <i>df</i> command by checking the percentage of space used

+by each mounted file system. The percentage of space used is checked against

+<b>%DFWARN</b>

+and <b>%DFCRIT </b>levels to generate an appropirate&nbsp; yellow or red

+status.

+<p>Swap space is also checked by using the <i><tt>&amp;get_swap() </tt></i>function

+which returns a message and a percentage of total space space used. This

+percentage is checked against the <b>$DFWARN{'page'}</b> and <b>$DFCRIT{'page'}</b>

+entry levels to generate an appropriate yellow or red status.

+<br>&nbsp;

+<h1>

+OUTPUT RETURNED</h1>

+<b>SUMMARY MESSAGE FIELD</b>

+<br>If all statuses are green, check_disk returns the largest file system

+in use. Otherwise If any file systems are in red status, a list all of

+the mount points with the percent of space used is returned.

+<p><b>DETALED MESSAGE FIELD</b>

+<br>The output of the <i>df</i> command and the message returned by the

+<i><tt>&amp;get_swap</tt></i>

+function are returned.

+<br>&nbsp;

+<h1>

+CONFIGURATION</h1>

+Here is a list of all of the configuration variables used by <i>check_disk.</i>

+<blockquote><b>@DFIGNORE</b>

+<br>A list of regular expression strings that are matched against the raw

+file system names. If matched, then that file system is ignored. For example,

+having ``:'' in this list will cause NFS file system mounts to be ignored.

+<p><b>%DFWARN</b>, <b>%DFCRIT</b>

+<br>A hash of file systems (or the word ``ALL''), and the percentage that

+should trigger a problem (<b>%DFWARN</b> triggers warnings - yellow, and

+<b>%DFCRIT</b>

+triggers alerts - red). If a file system is not explicitly listed in this

+hash then it will fall back to the value of the ``ALL'' entry.

+<p><b>$DF</b>

+<br>An OS specific variable that contains the path to the df command&nbsp;

+and paramters to be run to get file systems used information.

+<p><b><i><tt>&amp;get_swap()</tt></i></b>

+<br>An OS&nbsp;specific function that get the total space space usage information.

+It returns two paramaters: <b>message -</b> a strings containing the swap

+usage information to be returned in the detail message field of the status

+message, and <b>total_swap</b> - a percentage of the total amount of space

+space in use.

+<br>&nbsp;</blockquote>

+<b><font face="Arial, Helvetica, sans-serif"><font size=+2>FILES</font></font></b>

+<dl>

+<dt>

+<b>/usr/local/etc/spong/spong.conf</b></dt>

+

+<dd>

+Configuration file. This contains variables that detail spong and OS specific

+definitions used by spong-client. This file also contain variables describing

+threshold levels. See <i>spong.conf</i> for additional documentation.</dd>

+</dl>

+<b><font face="Arial, Helvetica, sans-serif"><font size=+2>AUTHOR</font></font></b>

+<p>Stephen L Johnson (<a href="MAILTO:stephen.johnson@mail.state.ar.us">stephen.johnson@mail.state.ar.us</a>)

+or (<a href="MAILTO:sjohnson@monsters.org">sjohnson@monsters.org</a>),

+Unix System Administator, DIS - State of Arkansas

+<br>&nbsp;

+</body>

+</html>

diff --git a/www/docs/check_processes.html b/www/docs/check_processes.html
new file mode 100755
index 0000000..3d62007
--- /dev/null
+++ b/www/docs/check_processes.html
@@ -0,0 +1,63 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="Author" content="noman">
+   <meta name="GENERATOR" content="Mozilla/4.6 [en] (WinNT; I) [Netscape]">
+   <title>check_processes</title>
+</head>
+<body>
+
+<hr WIDTH="100%">
+<h1>
+<a NAME="check_processes.name"></a>NAME</h1>
+<b>check_processes</b> - running processes client check module
+<br>
+<hr WIDTH="100%">
+<h1>
+<a NAME="check_processes.description"></a>DESCRIPTION</h1>
+This is a client check that is run from the spong-client that checks to
+ensure that critical processes are running on the client host system. check_processes
+uses the output of the <b>$PS</b> command to check against <b>@PROCSWARN</b>
+and <b>@PROCSCRIT</b>.&nbsp; Any jobs not found in the <b>@PROCSWARN</b>
+list of processes generates a warning - yellow. Any jobs not found in the
+<b>@PROCSCRIT</b>
+list of processes generates an alert - red.
+<br>&nbsp;
+<h1>
+<a NAME="check_processes.output"></a>OUTPUT RETURNED</h1>
+<b>SUMMARY MESSAGE FIELD</b>
+<br>If no warning or alerts, check_processes returns "processes OK". Otherwise,
+if are any warning or alerts, a list of the processes that are not running
+is returned.
+<p><b>DETAILED MESSAGE FIELD</b>
+<br>A <b>$PS </b>output line of every instance is returned for every running
+process.
+<h1>
+<a NAME="check_processes.configuration"></a>CONFIGURATION</h1>
+This is a list of configuration variable that are used by <i>check_processes</i>.
+<blockquote><b>@PROCSWARN</b>, <b>@PROCSCRIT</b>
+<br>A list of processes that should be running, if they are not running,
+then trigger a problem (processes in <b>@PROCSWARN</b> trigger a warning
+- yellow, and processes in <b>@PROCSCRIT</b> trigger an alert - red).
+<p><b>$PS</b>
+<br>An OS specific contains the full path to the ps along with any parameters
+need to get the desired formated output.</blockquote>
+<b><font face="Arial, Helvetica, sans-serif"><font size=+2>FILES</font></font></b>
+<dl>
+<dt>
+<b>/usr/local/etc/spong/spong.conf</b></dt>
+
+<dd>
+Configuration file. This contains variables that detail spong and OS specific
+definitions used by spong-client. This file also contain variables describing
+threshold levels. See <i>spong.conf</i> for additional documentation.</dd>
+</dl>
+<b><font face="Arial, Helvetica, sans-serif"><font size=+2>AUTHOR</font></font></b>
+<p>Stephen L Johnson (<a href="MAILTO:stephen.johnson@mail.state.ar.us">stephen.johnson@mail.state.ar.us</a>)
+or (<a href="MAILTO:sjohnson@monsters.org">sjohnson@monsters.org</a>),
+Unix System Administator, DIS - State of Arkansas
+<br>&nbsp;
+<br>&nbsp;
+</body>
+</html>
diff --git a/www/docs/spong-2_0.html b/www/docs/spong-2_0.html
new file mode 100755
index 0000000..fb386b9
--- /dev/null
+++ b/www/docs/spong-2_0.html
@@ -0,0 +1,399 @@
+<HEAD>

+<TITLE>Simple System/Network Monitoring - spong v2.0</TITLE>

+</HEAD>

+<BODY>

+

+<H1>Simple System/Network Monitoring - spong v2.0</H1>

+<hr>

+

+<H2>Description</H2>

+This is a <b>simple</b> system monitoring package called spong.  It has the

+following features:

+<p>

+

+<ul>

+<li>client based monitoring (CPU, disk, processes, logs, etc...)

+<li>monitoring of network services (smtp, http, ping, pop, dns, etc...)

+<li>grouping of hosts (routers, servers, workstations, PCs)

+<li>rules based messaging when problems occur

+<li>configurable on a host by host basis

+<li>results displayed via text or web based interface

+<li>history of problems

+<li>verbose information to help diagnosis problems

+</ul>

+

+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

+todo list).<p>

+

+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:<p>

+

+<ul>

+<table width=90% border=0 cellpadding=0 cellspacing=0>

+<tr><td><b>spong</b> &nbsp</td>

+<td>Text based query program, reports information about hosts that are

+monitored.</td></tr>

+

+<tr><td><b>spong-client</b> &nbsp</td>

+<td>Reports host based information (disk, cpu, logs, etc.)</td></tr>

+

+<tr><td><b>spong-network</b> &nbsp</td>

+<td>Reports on network based services (smtp, ping, http, etc.)</td></tr>

+

+<tr><td><b>spong-server</b> &nbsp</td>

+<td>Collects information reported and responds to queries about that

+information.</td></tr></table>

+

+</ul>

+

+Spong is currently at version 2.0.  If you are using an older version and want

+to see <a href="#whats_new">what's new</a> in version 2.0, please look at the

+bottom on this page.<p>

+

+<H2>Availability</H2>

+

+Perl is require to run spong.  If you don't have Perl installed you can

+retrieve it from the CPAN (<a

+href="http://www.perl.com/CPAN/">http://www.perl.com/CPAN/</a>) 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 CGI.pm module as well).  You can get the latest version of Perl at:<p>

+

+<ul>

+<a href="http://www.perl.com/CPAN/src/latest.tar.gz">http://www.perl.com/CPAN/src/latest.tar.gz</a>

+</ul>

+

+You can retrieve the latest version of spong from my machine at:<p>

+

+<ul>

+<a href="http://strobe.weeg.uiowa.edu/~edhill/public/spong/spong.tar.gz">http://strobe.weeg.uiowa.edu/~edhill/public/spong/spong.tar.gz</a>

+</ul>

+

+You can see some screen shots of spong in action (note these are just examples

+of HTML that is produced - not the actual programming running - most people

+don't want this level of system information public to the world (if they can

+help it).<p>

+

+<ul>

+<li><a href="./example/main.html">Main Spong Page</a>

+<li><a href="./example/unix.html">Spong showing only Unix machines by group</a>

+<li><a href="./example/history.html">History of problems</a>

+<li><a href="./example/host.html">Host summary page</a>

+<li><a href="./example/service.html">Service specific summary page</a>

+</ul>

+<p>This distribution contain the spong source, documentation, and gif images.

+<p>

+

+<h2>Notification</h2>

+

+I have sent up a mailing list that I will post to when I have released a new

+version of spong.  Anyone can join this list, but the traffic will be only one

+way (me posting information about new-releases).  If enough people are

+interested in creating a list for discussion spong in general, I will set one

+up at that time.  I try to answer any questions that are sent to me.<p>

+

+To join the spong-announce mailing list, send a message to <a

+href="mailto:majordomo@strobe.weeg.uiowa.edu">

+majordomo@strobe.weeg.uiowa.edu</a> with the sentence:<p>

+

+<ul><code>subscribe spong-announce</code></ul>

+

+in the <i>body</i> of the message.  To have yourself removed from the

+spong-announce mailing list, send a message to <a

+href="mailto:majordomo@strobe.weeg.uiowa.edu">

+majordomo@strobe.weeg.uiowa.edu</a> with the sentence <code>unsubscribe

+spong-announce</code> in the <i>body</i> of the message.<p>

+

+The traffic on the list will be very light - about 1 message per month at

+most.<p>

+

+

+<h2>Dependencies</h2>

+

+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.<p>

+

+These scripts should run on any Unix system (and to ``some'' degree any

+environment where Perl is available).  I will try to make sure the scripts run

+under NT when I have better access to an NT machine.<p>

+

+

+<h2>Installation</h2>

+

+To build and install the spong server do the following on the machine running

+your web server.  <p>

+

+<ol>

+<li>Edit the "build" script, and set the variables at the top of that script

+according to where you want spong installed, and where certain programs that

+spong relies on are located.<p>

+

+<li>Check to make sure there is a config/spong.conf.&ltos&gt file corresponding

+to your operating system, if not - create one.  This file contains paths and

+command line arguments to helper programs that are used to determine things

+like disk usage, etc...  If you have to create your own spong.conf.&ltos&gt

+file, then please email it to me so that I can add it to the distribution.

+<p>

+

+<li>Make sure you are in the directory that you unpacked spong in and type:

+<code>./build &ltos&gt</code> where &ltos&gt is the name corresponding to your

+operating system.  You can type <code>./build help</code> to generate a list of

+valid operating system strings.<p>

+

+When the build completes, you will be left with some new directories in the

+folder that you unpacked spong in.  The build process takes the spong source

+(and documentation), and replaces some "tokens" with values that you have

+supplied at the top of the build script.  The build process also creates a

+spong.conf file, and generates various types of documentation based on the POD

+files that come with spong.<p>

+

+<li>Now, type <code>./build install</code>.  Note that the install process

+makes no assumptions about what user you want to run spong as (you <b>don't</b>

+have to run it as root).  This means that you have to be a little more careful

+when you install spong (making sure it has the correct permissions, and that

+you have permission to copy the www pages into your web server's document

+tree).<p>

+

+<li>Now edit the spong.conf, and spong.hosts files that you just installed and

+season to taste.  You should now be able to read the manual pages for each.<p>

+</ol>

+

+Now you will have the executables and configuration files in place on the

+server.  You need to start the spong-server and spong-network programs.  The

+spong-server program will listen for reports from various agents, and the

+spong-network program will start testing the hosts you have defined for any

+problems.  After starting those programs, you should start seeing files show up

+in the SPONGSTATUS directory that you defined in the spong.conf file.  <p>

+

+For each client machine you will need to install the just the spong-client and

+a spong.conf file and make sure they start up when your system is rebooted.

+<p>

+

+<h2>Documentation</h2>

+

+Don't let the amount of documentation scare you, I still think spong is simple

+to setup and use.<p>

+

+The documentation is provided in HTML format (the old Perl pod format just

+didn't do all that I wanted).  It is located in the docs directory and is self

+contained (the links will still work if you move it), so you should be able to

+copy it to whatever location that you want.<p>

+

+There are four main documents that describe spong from different

+perspectives.<p>

+

+<dl>

+<dd><b><a href="overview.html">Overview</a></b>

+<dd>Just that, gives a quick 5 minute overview of what spong is and what it can

+do.<p>

+

+<dd><b><a href="users-guide.html">User's Guide</a></b>

+<dd>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.<p>

+

+<dd><b><a href="admin-guide.html">Administrator's Guide</a></b>

+<dd>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.<p>

+

+<dd><b><a href="developer-guide.html">Developer's Guide</a></b>

+<dd>Written for the person who wants to have spong look differently, or what to

+add some new feature in their version of spong, or whats to incorporate spong

+output in other programs.  This details the spong internals, and describes the

+various protocols that are used.<p>

+</dl>

+

+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.<p>

+

+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.<p>

+

+<h2>Files</h2>

+

+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.<p>

+

+<pre>

+    config:

+      <a href="spong.conf.html">spong.conf</a>              distributed config file

+      spong.conf.&ltos&gt         os specific config changes

+      <a href="spong.hosts.html">spong.hosts</a>             host/service config file

+      <a href="spong.groups.html">spong.groups</a>            group config file

+ 

+    src:

+      <a href="spong.html">spong.pl</a>                text based spong display client

+      <a href="spong-client.html">spong-client.pl</a>         collects/reports cpu,disk,etc info

+      <a href="spong-network.html">spong-network.pl</a>        collects/reports network service info

+      <a href="spong-server.html">spong-server.pl</a>         listens for/saves spong status updates

+      <a href="spong-message.html">spong-message.pl</a>        alerts humans there's a problem

+      <a href="spong-ack.html">spong-ack.pl</a>            text based acknowledgement program

+      <a href="www-spong.html">www-spong.pl</a>            web based spong display client

+      <a href="www-spong-ack.html">www-spong-ack.pl</a>        web based acknowledgement program

+

+    docs:

+      &lt*&gt.html                documentation for the above files

+ 

+    www:

+      gifs:                   various icons used by spong-display

+

+</pre>

+

+<h2>Licensing</h2>

+

+Copyright 1997, Ed Hill - The University of Iowa<p>

+

+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 <a

+href="mailto:ed-hill@uiowa.edu">ed-hill@uiowa.edu</a>, and I will mail you a

+copy.<p>

+

+<a name="whats_new"></a>

+<h2>Changes between v2.0 and v1.1</h2>

+

+The most significant change in version 2.0 is a rewrite and redesign of spong

+internals to move towards a more modular and OO framework.  The first version

+of spong was just a port of the BB program to perl with some of my own

+modifications, this version contains a significant rewrite of the spong-server

+program to make it more object oriented and extensible.  I believe this puts

+spong in a better position to maintain (by me) and extend (by you).

+

+The spong-client and spong-network programs are still pretty much the same

+

+Other then the redesign issue, this release has a few new features and

+programs, and some bug fixes (as well as some new introductions I'm sure).  The

+most significant changes are:<p>

+

+<ul>

+<li>CHANGE: Made spong server a single threaded process, improves performance

+on some machines significantly.

+<li>CHANGE: Changed the way that information is stored on the spong server, so

+that more features can be easily incorporated over time.

+<li>CHANGE: Upgraded the build script so that it is more useful.

+<li>CHANGE: Redesigned spong internals so things are more object oriented.

+<li>CHANGE: Made various changes to the way that information is displayed via

+the web interface.

+

+<p><li>ADDED: Added new command line spong display program.

+<li>ADDED: Replaced the spong-display program with www-spong which can act as

+both a CGI program and a command line program that generates web pages.

+<li>ADDED: Query mechanism to the spong server so that the www-spong and spong

+programs don't have be on the same machine as the spong-server.

+<li>ADDED: Added a way to acknowledge problems (spong-ack, www-spong-ack)

+<li>ADDED: Added checks for NFS and other UDP based services.

+<li>ADDED: Made group support usable.

+<li>ADDED: Added --nosleep options to the spong-client and spong-server

+programs so that you can run them from cron.

+

+<p><li>BUG FIX: DNS check was not working correctly, is now fixed.

+</ul>

+

+You can see a list of features that I hope to add to spong at:<p>

+

+<ul>

+<a href="http://strobe.weeg.uiowa.edu/~edhill/public/spong/todo.html">http://strobe.weeg.uiowa.edu/~edhill/public/spong/todo.html</a>

+</ul>

+

+

+<h2>History</h2>

+

+<table width=100% border=0>

+<tr>

+<td align=left valign=top>Version 2.0   </td>

+<td align=left valign=top>

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

+</td>

+</tr>

+<tr>

+<td align=left valign=top>Version 1.1   </td>

+<td align=left valign=top>

+Primarily a bug fix release with a few minor features (dns,http config,multiple

+interfaces) added.

+</td>

+</tr>

+<tr>

+<td align=left valign=top>Version 1.0   </td>

+<td align=left valign=top>

+Initial public release, mostly based on Big Brother package from Sean MacGuire.

+</td>

+</tr>

+</table>

+<p>

+

+<h2>Acknowledgments</h2>

+

+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...  <p>

+

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

+

+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.  <p>

+

+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.<p>

+

+<h2>Known Problems in v2.0</h2>

+

+Here are a list of problems, and possible fixes that have been reported for

+version 2.0.  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.<p>

+

+<ul>

+<li><b>Attempt to free unreferenced scalar</b> - I have not figured this one

+out yet.  It is a Perl internals message, and some say the problem is related

+to the malloc library that comes with Perl.  If you see the spong-client crash

+with this message reported, I would encourage you to run the spong-client

+program via a cron entry with the --nosleep flag as a work around.

+</ul>

+

+<h2>Author</h2>

+

+Ported and currently maintained by:

+<p>

+

+<a href="http://strobe.weeg.uiowa.edu/~edhill/">Ed Hill</a> (<a href="mailto:ed-hill@uiowa.edu">ed-hill@uiowa.edu</a>)<br>

+Internet Software Developer  at

+<a href="http://www.uiowa.edu/">The University of Iowa</a><p>

+

+<p>Please feel free to send me bug reports, patches, suggestions, or comments.

+<p>

+<hr>

+Most recently updated on Aug 1, 1997 by

+<a href="http://strobe.weeg.uiowa.edu/~edhill/">Ed Hill</a>

+(<a href="mailto:ed-hill@uiowa.edu">ed-hill@uiowa.edu</a>)

+

+</BODY>

+</HTML>

diff --git a/www/docs/spong-server.html b/www/docs/spong-server.html
new file mode 100755
index 0000000..9f984f9
--- /dev/null
+++ b/www/docs/spong-server.html
@@ -0,0 +1,215 @@
+<HEAD><CENTER><TITLE>spong-server</TITLE>

+</CENTER></HEAD>

+<BODY><p><hr>

+

+<H1> 

+<A NAME="spong-server_name_0">

+NAME</A>

+</H1>

+<STRONG>spong-server</STRONG> - save status information reported by spong programs

+<p><p><hr>

+

+<H1> 

+<A NAME="spong-server_synopsis_0">

+SYNOPSIS</A>

+</H1>

+<STRONG>spong-server</STRONG> [--debug] [--kill|--restart] [config_file]

+<p><p><hr>

+

+<H1> 

+<A NAME="spong-server_description_0">

+DESCRIPTION</A>

+</H1>

+The spong-server program starts up and listens to status reports from various

+spong clients (specifically the spong-network and various spong-client programs

+running).  It takes the information reported by the various spong clients and

+does the following:

+<p>

+<XMP>

+    * Check for valid messages, and discards any invalid ones.

+    * If the message is something worth notifying someone about, it calls

+      the spong-message program and lets it determine how/if to contact 

+      someone about the problem.

+    * Check to see if the color of this message is different then it

+      used to be, and if so generate a history item indicating the change.

+    * Save the information in the $SPONGSTATUS directory.

+

+</XMP>

+<p>Each time a message comes in, a child process is forked off to handle the above

+tasks, while the main spong-server program goes back to waiting for more

+status reports.

+<p>You should start this program in your system startup file, and it should be

+running constantly.  If you provide the --debug flag, then debugging

+information will be printed to stdout, otherwise output will only be

+produced if there is a problem.

+<p>If you provide the --restart flag, a signal will be sent to the spong-server

+process that is currently running that will cause it to reload it's

+configuration files.  If you provide the --kill flag, a signal will be sent to

+the running spong-server process causing it to exit.

+<p><p><hr>

+

+<H1> 

+<A NAME="spong-server_configuration_0">

+CONFIGURATION</A>

+</H1>

+The configuration of the spong-server program is two fold, the first part is

+the 

+<A HREF="spong-server.html#spong-server_usr_local_etc_spong_spong_hosts_0">/usr/local/etc/spong/spong.hosts</A>

+ file.  This file lists the host that are being

+monitored by the spong-network and spong-client programs.  Only status

+information on hosts in the spong.hosts file are considered valid and saved.

+<p>The second part of the configuration is the 

+<A HREF="spong-server.html#spong-server_usr_local_etc_spong_spong_conf_0">/usr/local/etc/spong/spong.conf</A>

+ file which

+define some specific variables that you probably don't need to override.  By

+default the spong.conf file is read 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.

+<p>After reading the configuration file that you specify (or the default), it then

+reads the <EM>/usr/local/etc/spong/spong.conf.[host]</EM> file where [host] 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.

+<p>Here are a list of variables in the spong.conf file that are applicable to the

+spong-server program:

+<p>

+<DL>

+<DT>

+

+<STRONG>

+

+<A NAME="spong-server_send_message_0">

+$SEND_MESSAGE</A>

+

+</DT></STRONG>

+<DD>

+

+<A HREF="spong-server.html#spong-server_send_message_0">$SEND_MESSAGE</A>

+ defines when spong-message is called by spong-server.  This

+variable can contain one of three valid values.  If it is ``RED'', then

+spong-message is called for every time a system or service reports a problem.

+If its value is ``CHANGE'', then spong-message is only called when there is a

+change of state (going from green to red, and then again going from red to

+green).  If its value is ``NONE'', then spong-message is never called.

+<p>

+<DT>

+<STRONG>$SPONGPORT</STRONG>, <STRONG>$SPONGSTATUS</STRONG>, <STRONG>$SPONGHISTORY</STRONG>, <STRONG>$SPONGNOTES</STRONG><DD>

+The port number that the server should be listening at, and some directory

+locations where status information, history information, and host specific

+documentation are kept.

+<p>

+</DL>

+<p><hr>

+

+<H1> 

+<A NAME="spong-server_files_0">

+FILES</A>

+</H1>

+<p>

+<DL>

+<DT>

+

+<STRONG>

+

+<A NAME="spong-server_usr_local_etc_spong_spong_conf_0">

+/usr/local/etc/spong/spong.conf</A>

+

+</DT></STRONG>

+<DD>

+Configuration file.  This contains variables that detail spong and OS specific

+definitions used by spong-server.  See <EM>spong.conf</EM> for additional

+documentation.

+<p>

+<DT>

+

+<STRONG>

+

+<A NAME="spong-server_usr_local_etc_spong_spong_hosts_0">

+/usr/local/etc/spong/spong.hosts</A>

+

+</DT></STRONG>

+<DD>

+Host and human configuration file.  This defines what hosts you are monitoring,

+and what human you should contact if there is a problem.  See <EM>spong.hosts</EM>

+for additional documentation.

+<p>

+<DT>

+

+<STRONG>

+

+<A NAME="spong-server_local_www_docs_spong_status_0">

+/local/www/docs/spong/status/</A>

+

+</DT></STRONG>

+<DD>

+The directory where status information is saved.  The files in this directory

+should be readable by your web server as spong-display using this information

+to generate the web pages that it displays.

+<p>

+<DT>

+

+<STRONG>

+

+<A NAME="spong-server_local_www_docs_spong_history_0">

+/local/www/docs/spong/history/</A>

+

+</DT></STRONG>

+<DD>

+The directory where history information is stored.  The files in this directory

+should also be readable by your web server.

+<p>

+<DT>

+

+<STRONG>

+

+<A NAME="spong-server_local_www_docs_spong_notes_0">

+/local/www/docs/spong/notes/</A>

+

+</DT></STRONG>

+<DD>

+The directory where host specific information is stored.  For each host that

+you monitor, if there is a file in this directory with the same name as that

+host then that file will be displayed by spong-display when the user clicks on

+a specific host.

+<p>

+</DL>

+<p><hr>

+

+<H1> 

+<A NAME="spong-server_dependencies_0">

+DEPENDENCIES</A>

+</H1>

+Perl v5.003 or greater is required.

+<p><p><hr>

+

+<H1> 

+<A NAME="spong-server_bugs_0">

+BUGS</A>

+</H1>

+It is not sufficiently paranoid.  It should probably perform more strict

+authentication to protect against bogus data.

+<p><p><hr>

+

+<H1> 

+<A NAME="spong-server_see_0">

+SEE ALSO</A>

+</H1>

+the <EM>spong-network</EM>  manpage

+, the <EM>spong-client</EM>  manpage

+, the <EM>spong-display</EM>  manpage

+, the <EM>spong-message</EM>  manpage

+,

+<EM>spong.hosts</EM>, <EM>spong.conf</EM>

+<p><p><hr>

+

+<H1> 

+<A NAME="spong-server_author_0">

+AUTHOR</A>

+</H1>

+Ed Hill (<A HREF="MAILTO:ed-hill@uiowa.edu">ed-hill@uiowa.edu</A>), Unix System Administrator, The University of Iowa

+<p>Based on code/ideas from Sean MacGuire (BB), and Helen Harrison (Pong).

+<p>

+</BODY>

+</HTML>

diff --git a/www/docs/todo.html b/www/docs/todo.html
new file mode 100755
index 0000000..a6dbce7
--- /dev/null
+++ b/www/docs/todo.html
@@ -0,0 +1,84 @@
+<html>

+<head>

+<title>Spong v1.1 - Todo List</title>

+</head>

+<body>

+

+<h1>Spong v1.1 - Todo List</h1>

+<hr>

+

+Here are the features/changes that I want to make to spong.  They are in no

+particular order, but I will probably be working on the things at the top of

+this list before I get to the ones on the bottom.  If you have any suggestions

+or comments, send email to <a

+href="mailto:ed-hill@uiowa.edu">ed-hill@uiowa.edu</a>.  I have no specific time

+schedule in mind for implementing this list.  Spong is now a night-time

+project, so I get to this things when I can.<p>

+

+I have put *'s next to the items that I am currently working on - or have

+completed in cased you are curious about my progress.<p>

+

+<ul>

+<li>(*) Rework some of the design of spong to make things more object oriented.

+The first version of spong was basically a port of BB, version 2.0 will be

+different.  This will allow me to more easily integrate new features over time.

+

+<li>(*) Add nfs (and other rpc based services) to spong-network (using the

+rpcinfo command).

+

+<li>Client support (spong-client) for NT

+<li>Server support (spong-server, spong-network, spong-display) support for NT

+

+<li>(*) Provide different interfaces (currently only web - provide a PerlTk,

+and a terminal based interface).

+

+<li>Provide the ability to view spong information (run the spong, tkspong, and

+wwwspong (currently known as spong-display) programs from machines other then

+the spong server).

+

+<li>(*) Redo the web based spong-display to make it more extensible

+<ul>

+<li>Allow people to easily put the spong-server CGI program in /cgi-bin/

+<li>Allow people to easily define their own interfaces

+<li>Allow people to easily include parts of spong-display.cgi output in

+other pages

+<li>Allow for multiple views (table, network diagram, simple host summary

+with drill down for more specific information)

+<li>Handle groups better.

+

+</ul>

+

+<li>Provide a rules based solution to sending pages - this will allow people to

+specify whatever rules they want for sending pages when there are problems.

+

+<li>(*) Add acknowledgements - so that you can say that you know a service is

+red - and that you don't want paged about it.  You can also add some text so

+that others reading spong can have an idea what the problem is, and know

+someone is working on it.

+

+<li>Make spong-network more parallel, have it perform checks from a pool of

+children, that way if a system can not be pinged - it will not slow up the rest

+of the checks.

+

+<li>Make spong-network check more often on hosts that do not respond on the

+first try

+

+<li>Optimize the communication between client and server - by pipelining

+reports through a single channel and perhaps compressing the data before

+sending it.

+

+<li>Fix the log file checking - make it smarter.

+

+<li>Make it so that you can click on a host and find out status, history, 

+configuration (inventory), and statistics. (starting to branch out).

+<ul>

+<li>Integrate my gstats (statistics collection) program. "spong-stats"

+<li>Add an inventory/configuration module. "spong-config"

+</ul>

+</ul>

+<hr>

+Most recently updated on May 8, 1997 by

+<a href="http://strobe.weeg.uiowa.edu/~edhill/">Ed Hill</a>

+(<a href="mailto:ed-hill@uiowa.edu">ed-hill@uiowa.edu</a>)

+</BODY>

+</HTML>