$Id: CHANGES,v 1.9 1998/11/30 04:01:21 trockij Exp $

Changes between mon-0.38pre1 and mon-0.38pre2
---------------------------------------------

-Some fixed from brian moore to correct client hangups

-netappfree.monitor changes, including --list option to
 list the filesystems on the filers for help in building a config file.

-Trap handling changes, including packet format. More provisions
 for direct SNMP handling. I might add direct provisions for mon to take
 SNMP traps directly. UCD SNMP trap handling callback mechanism doesn't
 fit into mon very well.

-"list opstatus" output is now different

-Time::HiRes is now required. The trick is that handle_io() wants
 to spend $SLEEPINT handling I/O from clients. Some OSs allow select(2)
 to return the time remaining, which we want because if select returned
 in say, 0.2 seconds then we want to call select with a timeout of 0.8
 seconds so that we get the full second of waiting for I/O. Some OSs
 do *not* return the time remaining from a select call, and time(2)
 doesn't return sub-second resolution, so we need gettimeofday(2) to
 figure out how long select spent waiting. I guess the whole point here
 is to try to handle traps as soon as they come in.

-Fixed @last_failures discrepancy with traps.

-Added Gilles' alias record stuff to config file

-Included Jon Meek's up_rtt.monitor which checks the availability of
 hosts and logs some statistics, like min/mean/max round trip times.
 Requires Time::HiRes and Statistics::Descriptive.


Changes between mon-0.37l and mon-0.38
---------------------------------------

-Asynchronous trap handling. A remote agent may deliver a trap
 to trigger some action to be performed by a centralized mon
 server.

-Client I/O entirely re-written to support multiple simultaneous
 non-blocking clients.

-New client commands: test, set opstatus, list descriptions

-Descriptions are now allowed in service definitions

-Added Gilles' my-mon.cgi web interface.

-Added Jing Tan's dependency code

-When a service comes back up, it resets _first_failure
 so that alertevery does the right thing.

-When handling a "term" from the client, kill -15 children
 instead of -9.

-A fix from brian moore which corrected the client timeouts.

-Added "servertime" client command.

-Fixed moncmd to be more batch-friendly.

-Some security patches to mon.cgi from Roderick Schertler, including
 and changes to mon and the documentation for Debian compatability.

-Added "reload auth" command, which reloads the authentication table.

-Added per-service environment variable passing to monitor and alert scripts.

-Fixed '"no summary" with upalerts' problem reported by
 Eric Buda <eric@protoclown.nis.newscorp.com>. The output of successful
 monitors could be lost under certain circumstances.

-Fixed a small problem with upalerts reported by
 Josh Wilmes <josh@hitchhiker.org>. Upalerts would be triggered for
 everything the first time mon is started.

-process.monitor may optionally not load the MIBs upon startup.

-"-A" option would not make itself relative to the directory
 that mon was started from.

-netpage.alert not calls sendmail rather than "mail -s". Another fix
 from Josh Wilmes.

-A trivial tweak to nntp.monitor.

-Fixed problem with hostgroups named with periods reported by several
 people. This would cause a monitor process to not ever get cleaned up.

-Changed how load_auth handles errors

-fping.monitor adds a newline (right after removing it with tr :)

-changed the debug behavior to allow multiple debug levels


Changes between mon-0.37k and mon-0.37l
---------------------------------------
-Config parser change from Michael Griffith <grif@cadence.com> that
 complains when "alertafter" will never trigger an alert.

-Added "savestate" and "loadstate". Currently these only save
 and load the state of things disabled.

-The server now can authenticate clients using a simple
 configuration file which can restrict certain users to
 using only some (or all) commands. "moncmd" was updated
 to support this feature.

-Addition of "upalerts" which may be called when a service
 changes state from failure to success. "upalerts" can be
 controlled by the "upalertafter" parameter.

-"alertevery" now ignores detailed output when it decides
 whether or not to send an alert. Patch submitted by
 brian moore <bem@cmc.net>.

-"hostgroup and hyphen" patch. This simple patch will allow
 hyphens and periods in hostgroup tags.

-Multiline output fixes in smtp.monitor <roderick@argon.org>

-Now monitors are not called when no host arguments are supplied. This
 can be overridden with the per-service "allow_empty_group" option.

-A fix to ftp.monitor by Tiago Severina <ts@uevora.pt> which allows
 for multiple 220 lines in the greeting from the FTP server.

-Added snpp.alert, contributed by Mike Dorman <mdorman@debian.org>.
 This requires the SNPP Perl module.

-Added ldap.monitor, contributed by David Eckelkamp <davide@tradewave.com>.
 This requires the Net::LDAPapi module.

-Added dns.monitor, contributed by David Eckelkamp <davide@tradewave.com>.
 This requires the Net::DNS module.

-Monitor definitions can now include shell-like quoted words, as defined by
 the Text::ParseWords module (included with perl5). e.g.:
 	monitor something.monitor -f "this is an argument" -a arg

-"allow_empty_group" is a new per-service option. If set, monitors will
 still be run even if all hosts in the applicable hostgroup have been
 disabled. The default is that allow_empty_group is not set.

-Monitors are now forked with stdin connected to /dev/null.

-Added "stop" and "start" commands which let make the server cease from
 scheduling any monitors. While stopped, clients can still be handled. The
 server may be started[sic] in "stopped" mode with -S. There is now a
 "reset stopped", which is an atomic version of "reset" and "stop". This
 is useful if you want to re-disable things immediately after a reset,
 so there will be no race conditions after the reset and before you
 disable things.

 opstatus.cgi now also reports the state of the scheduler.

-Updated documentation for monitors, the main "mon" manual,
 and the "moncmd" manual.

-Fixed a few problems in handle_client that had to do with shutting
 the server down.


Changes between mon-0.37j and mon-0.37k
---------------------------------------
-ftp.monitor defaults to the SMTP port instead of FTP! Thanks to
 ryde@tripnet.se for pointing this out :)

-alanr@bell-labs.com added "-u" flag to http.monitor so that you
 can specify the URL to get.

-Added hpnp monitor, which uses SNMP to query your HP JetDirect
 boards in your printers, and warns you when things go awry.
 For example, if there is a paper jam, mon can send out email
 telling you exactly that, and it includes in the mail the
 current readout on the printer's LCD.

-Added netappfree.monitor, which uses SNMP to get the free space
 from Network Appliance filers. Uses a configuration file to
 set low-watermarks for each filer.

-Added process.monitor (thanks to Brian Moore), which 
 queries the UCD SNMP agents to determine if there are errors with
 particular processes on a machine. This is very useful for monitoring
 those processes which seem to die off on occasion :)


Changes between mon-0.37i and mon-0.37j
---------------------------------------
Tue Apr 14 19:22:13 PDT 1998

-Configuration parser now dies when a watch is "accidentally" re-defined.

-Added process throttle to prevent a number of forked processes
 to go beyond a given value. This is a paranoia "safety net" setting.


Changes between mon-0.37h and mon-0.37i
---------------------------------------
Sun Apr  5 13:59:07 PDT 1998

-Added "randstart" and "randskew" parameters that can help balance
 out the load from services which are sheduled at the same interval.

-Added "exit=range" argument to "alert", which allows triggering
 alerts based on the exit status of a monitor script.

-Added an IMAP monitor, and an SNMP "reboot" monitor

-Added http_t.monitor, which times HTTP transactions

-Merged in patches supplied by Roderick Schertler
    - Changes to mon:
        - Support a pid file.  This is necessary for the system's
          daemon control script (which stops and starts the daemon, plus
          tells it to reload its configuration) to work.
        - Treat SIGINT like SIGTERM (for interactive debugging).
        - Allow a `hostgroup' line in mon.cf which doesn't have any host
          names (useful for putting each host name on a line by itself).
        - Add `d' (meaning `days') to the list of suffixes accepted by
          the interval and alertevery keywords.
        - Squelch extra blank line output by alerthist and failurehist
          commands if there are no corresponding history entries.
        - Bug fix:  fork() returns undef, not -1, on error.
        - Set umask 022, no 0.
    - Changes to mon.cgi:
        - Set -T mode.
        - Allow all local info fields to be blank, and set them that way
          by default.
        - Use the same default mon host as the other interfaces.
        - Use $ENV{SCRIPT_NAME} as the default $url.
        - Don't hardcode the path to mon, assume it is in the path.
        - Vet the name passed to the `list group' command.  The old code
          would allow remote users to run arbitrary local commands.
    - Changes to opstatus.cgi:
        - Set -T mode.
        - Correct port, was 32768 should be 32777.
        - Add missing Content-Type to html_die().
    - In monstatus correct the my() line in populate_group(), and add
      missing $group initialization.
    - Tweak typesetting in the mon.1 and moncmd.1 man pages.


Changes between mon-0.37g and mon-0.37h
---------------------------------------
Mon Jan 19 07:22:14 PST 1998

-I didn't merge back in a change to fping.monitor which
 sorts the output of fping, this causing alerts to go off unnecessarily
 when fping would return hosts in a different order each time it is
 run. An alert is send once every "alertevery" interval, unless the
 output changes. This is where it messed things up.

-added GPL header to all source files.


Changes between mon-0.37f and mon-0.37g
----------------------------------------
Sat Jan 10 10:40:26 PST 1998

-Fixed memory leak, with the help of Martin Laubach and Ulrich Pfeifer.
 The Perl 4.004_04 IPC::Open2 routine has a leak in it.

-Now includes the SkyTel 2-way pager interface for mon! What a hack,
 but it works pretty well!

-Also includes Art Chan's interactive web interface. It has buttons
 and graphics and all that other stuff that everyone wants!

-Removed the Perl 5.003 Sys::Syslog patches. I don't want to encourage
 anyone to use an outdated version of Perl, especially since there have
 been plenty of bug fixes since then.

-Server now handles multiple commands per client connection, and opstatus.cgi
 has been changed to take advantage of this. It's much faster now.


Changes between mon-0.37e and mon-0.37f
----------------------------------------
Fri Oct  3 06:14:50 PDT 1997

-Fixed a small typo in "mon.d/freespace.monitor" that would correctly
 detect a failure condition for low disk space, but the text that it
 would report was incorrect.

-As per Sean Robinson's suggestions, renamed the syslog patches to
 Perl 5.004 to accurately reflect what versions of Perl they patch.

-In "mon.d/http.monitor", fixed problem with what matches as a valid
 HTTP response. "200 OK" is incorrect, because the text that follows
 the 200 is undefined in the specs.

