LOTS of tidy up in general.
Stopped loading MIBS all the time.
NMIS support multiple config files ALOT better, it was basically
fine for nmis.pl but not the CGI stuff, should be fine now.
Simplified the algorithm calculating group status. This is
now done by weighting each status level and adding them together and
then averaging. You can tweak the results in the
overallNodeStatus subroutine.
Fixed up reports.pl and run-reports.sh, I would actually like to
rewrite the entire reporting subsystem, but it won't happen in a
hurry.
Deprecated some config elements and subroutines which were
redundant.
Escalation now done based on Group instead of sysLocation, more
logical! Maybe notification should too!
Converted links to CSV! Careful with conversion, should be
fairly easy.
Fixed links functionality!
Added checkConfig subroutine and type=config nmis directive which
checks the nmis configuration file and makes sure everything is
OK. This will be run every time type=update is run but
passively.
Added printApache subroutine and type=apache nmis directive which
displays a sample Apache configuration for the NMIS configuration
file.
Added metrics.pl which is a tiny dash with just the basic NMIS
network metrics.
Multilevel debug now, debug is 0-9 where 0 is false, and then the
level of debugging you would like. This means more debugging can
be added at varying levels of verbosity.
Lots of code tidy ups, indenting, whitespace, etc to make it a
little easier to follow.
Zoomed up nmiscgi.pl a little by adding arrow icons for metrics,
ie red is decreasing, green increasing. I have put this through
all metrics, to help indicate where problems are coming from.
Added config entries for icons and changed all icons in cgi
scripts to reference config file.
Changed getGroupSummary to handle statics which might be NaN,
this was effecting color display for valid stats.
Reweighted getGroupSummary total, so that reachability is 40%,
health is 40% and availability is 20%. This should produce a
slightly truer metric.
ifTypes are now handled as a CSV file, this had removed the need
for loadInterfaceTypes in NMIS.pl. It is necessary to ensure
that iftypes.csv is copied to the conf directory and the ifTypes table
entries are included in the nmis.conf, samples have been included in
the nmis-sample.conf. This allows new interface types to be
added without changing the code or compiling new MIBS.
Updated whole bunches of nmiscgi.pl, updated the style and
revamped it a little bit, looks a bit better now.
Now using "auto directory finding option" so don't have
to edit scripts as much on install, uses Perl FindBin.
Many new config.dat options and configuration items exist and now
called nmis.conf and in <nmis base>/conf
Added a Generic event type to handle any new UP/Down events you
might like, also created event.pl, a CGI script for distributed event
management, or creating events in NMIS for a device from other
processes, like Unix daemon down/up. Proactive events are
already generic ie any event starting with "Proactive"
passed with a level=whatever will create an event, and passed with
level=normal will close it. Could be handy.
Simple SNMP error checking in updateUptime which creates an SNMP
Down event and checks for SNMP Down if SNMP is up. Prevents
problems with people changing the SNMP community string or disabling
SNMP. Assumes that if SNMP is up for UpTime ie working for
system SNMP variables then it should be working for everything.
NMIS now has Web based configuration using view.pl. View.pl
allows editing of the CSV configuration files. Will hopefully
add abilitiy to edit the nmis.conf file too.
Health metric now includes interface component, all interface
input and output utilisation are each subtracted from 100, added
together and then averaged, this number is the interface weight, this
will contribute 20% of the health metric and should be quite
responsive to interface utilisation. I also think this will
assist in pinpointing link utilisation problems through the use of the
health metric.
Health metrics have been re-weighted to better suit pinpointing
network problems with the health metric. Weighted as follows:
Updated logs.pl with a better parsing algorithm, handles the
weird messages in syslog which routers and switches send.
Added map.pl which enables NMIS to display group status colored
icons for each group on a HTML map using CSS. Icons will change
color with group status, also display summary network metrics and
allows drill in to NMIS for each group. (not auto-discovery or drag
and drop). Adds a bunch of config.dat elements and requires
setting up map.csv with icon placement co-ordinates.
- Changed the way events are handled by implementing eventPolicy
subsystem, all event levels and notifications are now controled
through the events.csv file.
- Added real escalation subsystem with escalationPolicy and
runEscalate, modularised stuff a bit more to support this.
- Optimised the runThreshold subroutine a little bit.
- Added in-addr.arpa and DNS LOC entries to the DNS function in
nmiscgi.pl.
- Error checking added to csv.pm to validate data in each record.
- logs.pl fixed up to do handle unknown records a little better parse.
- nmiscgi.pl now displays summary stats for each group and a raising
falling indicator for metric (could do with some graphics I am sure
but more to do).
- Improved support for the Cisco Catalyst IOS switches, not really
tested.
- NMIS Large Dash now has a config option.
- NMIS and nmiscgi.pl now uses embedded PNG graphics generated at
runtime, this should improve polling scaling. This also assists
in distributed management, etc. All automatic graphing has been
turned off in nmis.pl by setting the $graph = "false".
This just improved the poll cycle from real 0m10.33s, user 0m6.72s,
sys 0m0.43s to real 0m5.61s, user 0m2.31s, sys 0m0.32s.
- Automatically handling of interfaces which have been shutdown
between update cycles, this will recreate the interface files on
demand.
- Added query.pl to enable NMIS to be used in a distributed manner,
returns easily passed text data over HTTP. Eg query.pl?query=list
or query.pl?query=status&group=Sydney.
- Added summary.pl to enable NMIS to be accessed by ANY HTML device
like WAP! Just provides basic lists and summary information.
- query.pl and summary.pl show how easy it is to develop mini NMS apps
which use the NMIS "api" to easily access all the collected
information.
Added email field to contacts table.
Added support for default locations and contacts for devices
without sysLocation and sysContact being set.
notify subroutine now uses the email field from the contacts
table to issue notifications.
Added CGI graphing to nmiscgi.pl which does the NMIS graphing on the fly,
cool, now you can embed NMIS graphs where ever you want! Have
started embedding this into all CGI scripts which display
graphs. All NMIS graphs will be drawn on the fly.
Changed the loadConfiguration subroutine to handle variables in
the configuration file. This will make installation a little
easier for people.
Added Interface thresholding for input utilisation, output
utilisation and interface availability.
Updated the nmiscgi.pl with a summarised dash and left the
nmisMenuLarge as another option. Also created a new summary for
each group, allows a little more the concept of drill in!
Enhanced NMIS documentation.
Brian gave NMIS a logo.
Tested with RRDTool 1.0.33.
Added IP addresses to interface info and fixed up the
"find" function so that you can search the interfaces for an
IP address (this could be handy for big networks).
New PING routine using Perl Ping with ms timeout too! Code
provided by Richard Kuehnle (this
requires root privilages for the NMIS programs)
Added support for a enterprises file for identifying vendors.
Worked on createInterfaceFile and added ability to capture IP
addresses from the ipAddrTable MIB.
Added a view table function which allows the easy integration of
other data sources.
Added Locations and Contacts Tables which use the view table
script.
Did a fairbit of Cascading Style Sheet Integration into
nmiscgi.pl. This means if you want to change the way NMIS looks
you can just edit the NMIS Style Sheet nmis.css and wallah.
Fixed up that a node with collect = false would not store
response time stats.
Fixed up SNMPv2 Support, now getNodeInfo tests for SNMPv2 support
and then if available caches as part of system attributes.
Added more MIBs to the OID files, and enhanced the existing MIBS
to include other common interesting things.
Fixed it so that the nodeType, netType, and role from the nodes
file overrides the getNodeInfo information.
NMIS is considerable modularised. This is to make the
system a little easier to improve with new changes only being added in
one file not effecting other files. This includes new packages:
Added an IP subnetting program to assist with those nasty
subnetting calculations.
Memory stats now contribute to health statistics.
Added a notification method for paging. There is now a
sendPagerMessage to integrate into an existing paging system.
SNMP_Simple now included in the NMIS distribution library
directories (much easier).
This includes several minor
fixes to the logic and some more considerable changes like using
SNMPv2 for collection on Routers and Switches. New options in
the config file.
NMIS now produces a single metric which summarises the network.
The first version of the documentation
has been added.
FAQ's added.
- The PING routine seems to be the biggest problem and I am working on
a better cross platform fix but for now Linux users will have to apply
there own patch as there seems to be some vast differences to PING
across Solaris and Linux.
- NMIS has been tested and updated to work with RRDTool 1.0.27, I
found some unexplained core dumps with 1.0.28 so have decided to go
back one and investigate those further.
- Thanks to the Contributors for
assisting in the debugging and development of NMIS.