NMIS - Network Management Information System

Table of Contents

 

NMIS Version 0.8b is writen and maintained by Keith Sinclair keith@sinclair.org.au

It is available @ SINS - Sinclair InterNetworking Services

The software has been released to the Public Domain under the GNU License. This means that it is free if you agree to the terms of the GNU License. If you would like the software under a different agreement please contact Keith Sinclair.

Download NMIS 0.8b Now!

Introduction

NMIS stands for Network Management Information System.  It is a Network Management System which performs multiple functions from the OSI Network Management Functional Areas, those being, Performance, Configuration, Fault.

It started as a SNMP polling and statistics viewer front-end to Tobi Oetiker's RRDToolRRDTool replaces MRTG but doesn't include a front end and backend to handle SNMP polling and display resulting web pages etc.  The original NMIS evolved quite rapidly to meet demands of production environments.  The backend, polling engine, uses SNMP to collect interface and health statistics for Cisco Routers, certain Cisco Catalyst Switches and Generic SNMP devices every 5 minutes. 

The backend stores the statistics in RRD's (Round Robin Databases) and ensures that devices are up, issues alerts, etc.  The front end accesses the information stored in the RRD's and displays statistics the resulting graphs, reports, etc.  

Both the front and back ends are highly extensible and features are easy to add as the structure is learnt.  For example the backend was just collecting interface statistics every poll cycle, it was easy to add collection of health (cpu, memory, buffer, etc) and response time, availability.

I will continue to spell out more about NMIS but for now, have a look at the Features and Benefits, Install it and see what it can do.

NMIS is released as GNU software, please ensure that you read the license as by using this software you are bound by it.

Features and Benefits
Features
Integrated a threshold engine which send alerts on certain thresholds.
Alerts are sent for device down or interface down, but the alert level
is set according to how important the device is.
Events are "State full" including thresholds, meaning that an event is
only issued once. At anytime a list of events is available and there is an escalation level and time the event has been active.
When events cancel they send a normal event with a time of outage
Planned outages can be put in so alerts are issued
Events are logged
Graphs can be drilled into
CPU, Interface, Memory etc. is graphable.
Summary pages of devices
Reports for utilisation, outages, etc
Dynamic handling of ifIndex changes

Installation

The packages listed in the required packages first following the instructions for each of these packages, some of these packages will have there own dependencies.

After the required packages are installed you will need to unpack (if you already haven't) the NMIS distribution.  The base directory <BASE> is up to you a Solaris way is to use /opt/<PROGRAM> like /opt/nmis.  I use /data/nmis myself.  The file system which has the database is going to need a lot of space.  You can have the program and library files stored in one file system or directory and the data files stored in another directory.  

File locations are controlled with the config.dat file, this is the link for the program files to read your configuration you can modify the source to have a different config file but all other directories and control files are stored in this files the default is /data/nmis/files/config.dat

The basic directory structure is:

Directory Required Size Type Description
<BASE>/bin small Program directory for all program files - these will change with later releases
<BASE>/cgi-bin small Program directory for CGI program files - these will change with later releases
<BASE>/files small Program configuration files and some data files - these won't change
<BASE>/lib small Proram library files - these will change
<BASE>/mibs small Program mib files used by the program - these may or may not change
<BASE>/web medium Data files which are generated for the web pages
<BASE>/system medium Data system files - generated
<BASE>/database LARGE Data database files are stored here - generated
<BASE>/logs medium Data log files

At the moment you should make all directories listed in this file, might automate this later on.  Might be a good idea to decide on a location for the data files and keep it separate from the program files as you are likely to upgrade to new program versions.

Adding devices to the device list

The nodes.dat file lists all the devices you want to manage, this is a CSV file where each line defines node,community,net,type,role,group,collect.

Where:

  • node = The Node
  • community = SNMP Community String
  • net = Network Type lan or wan
  • node type = switch or router
  • role = core, distribution or access
  • group = Nominal Location Group or the like
  • collect = true,false do or don't do stats collection

Adding links to the links list

More on this later, working on generating a lisk of Point to Point Links automatically.

Setting up web access

Apache should already be working, easiest thing to do is add aliases for the relevent directories

 

Alias /nmis/ "<BASE>/web"
ScriptAlias /cgi-nmis/ "<BASE>/cgi-bin"

 

make sure that follow sym links is enabled.  In the base htdocs directory create sym links for the web directory, the nmis.css style sheet.  In the CGI-BIN directory create a directory "nmis" then create sym links for the following files which are in the "bin" directory: stats.pl and logs.pl, if all is going well things might be working by now.

Running NMIS

<nmis base dir>/bin/nmis.pl type=collect 

Minimum! Runs collection for all nodes in the node list.

<nmis base dir>/bin/nmis.pl type=collect node=router debug=true 

Will run NMIS for gw only doing a health collection and a interface collection with debuging on.  Very handy for figuring out problems.

You can look at error messages in the file <nmis base dir>/log/nmis.log

Automate the whole lot with CRON

Add the following entries to run NMIS bits and pieces.

######################################################
# Run the Reports Weekly Monthly Daily
######################################################
54 23 * * * /data/nmis/bin/run-reports.sh day health
55 23 * * 0 /data/nmis/bin/run-reports.sh week health
5 0 1 * * /data/nmis/bin/run-reports.sh month health
0 18 * * * /data/nmis/bin/run-reports.sh day response
57 23 * * 0 /data/nmis/bin/run-reports.sh week outage
######################################################
# Run Statistics Collection
5,10,15,20,25,30,35,40,45,50,55 * * * * /data/nmis/bin/nmis.pl type=collect
######################################################
# Run the update twice a day
30 7,20 * * * /data/nmis/bin/nmis.pl type=update
# Run the interfaces once and hour with Thresholding on!!!
10 * * * * /data/nmis/bin/nmis.pl type=threshold

 

Required Packages

The following packages and versions are what NMIS was built on, it is highly likely that other versions of the same programs will work but I have not performed the regression tests.

The following MOD needs to be made to SNMP_MIB sub_loadoids.html this code can be added to the SNMP_MIB.pm file in the SNMP Simple Package.

To Do
  • Write installation script.
  • Make polling engine multi-threaded.
  • Enhance documentation.