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, a warning is triggered to show that the system +has been restarted recently. +<br> +<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> +<br> +</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> 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 yellow or red +status. +<p>Swap space is also checked by using the <i><tt>&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> +<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>&get_swap</tt></i> +function are returned. +<br> +<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 +and paramters to be run to get file systems used information. +<p><b><i><tt>&get_swap()</tt></i></b> +<br>An OS 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> </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> +</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>. 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> +<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> +<br> +</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>  </td> +<td>Text based query program, reports information about hosts that are +monitored.</td></tr> + +<tr><td><b>spong-client</b>  </td> +<td>Reports host based information (disk, cpu, logs, etc.)</td></tr> + +<tr><td><b>spong-network</b>  </td> +<td>Reports on network based services (smtp, ping, http, etc.)</td></tr> + +<tr><td><b>spong-server</b>  </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.<os> 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.<os> +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 <os></code> where <os> 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.<os> 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: + <*>.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>