NMIS FAQ - Frequently Asked Questions
Page moved to NMIS Wiki at NMIS:FAQ
Last updated: 10 March 2007

Online Version

NMIS Home Page

NMIS FAQ Maintained by Greg Ferro gferro@gfactor.com.au

NET-SNMP IS NOT REQUIRED TO RUN NMIS BUT IS REAL HANDY

FAQ Introduction
  • This FAQ is built from the combined musings of the many good folks on the NMIS User http://groups.yahoo.com/group/nmis_users mailing list . When a question comes up more than once I try to put it in here. If your question is not answered here, then the mailing list is your next best option.
  • The FAQ is maintained erratically and is completely arbitrary in nature. This means that you can send me things and we can put them in.
  • I can be contacted on gferro@gfactor.com.au
  • If you have documented your install, please send us a copy, it would sure help a lot of people.
Tips: A couple of things to check before you start to panic !!
  • Always check your file permissions, the files should be in the right group and the HTTP Daemon should be able to read the files as well as write some directories.
  • Did you check your config against the nmis-sample.conf?
  • Did you run "nmis.pl type=config" to make sure the config was right?
  • Have you run a "nmis.pl type=update debug=true"?
  • Have you been running NMIS for more then 1 hour?
File Sizes:

NMIS creates lots of rrd's Round Robin Databases for each device it manages.  The current statistics options make the file sizes as follows:

  • health rrd 2.5megabytes
  • reachability rrd 756kilobytes
  • interface rrd 568kilobytes.

All of these RRD's make up the database and for a few routers could become quite large quite quick.

Q. What is the format for the "interfaces" file?

A. The interfaces file is automatically generated by the NMIS system.  You don't need to manually make these interface files.  There is also an interfaces.dat which is all the interface data for all the devices put together also generated automatically by the update process.

Q. There are problems with the loadoids_file subroutine?

A. This is a modification to the SNMP Simple package, SINS has made up a distribution of SNMP_Simple availble here SNMP_Simple_NMIS.tar.gz

Q. How do I add support for my "name of box" to NMIS ?

A. NMIS was written to support Cisco routers and switches. Well, thats not quite true. NMIS can and does use the standard MIB-II SNMP statistics that are available on modern equipment. So if you want to monitor a server, printer or some other brand of equipment just identify it as a "server" in the nodes.csv.

Of course, you aren't going to get the cool graphs that NMIS does for CPU, Memory or Buffers. This is because they are not standard info and moust be hardcoded into the Perl code. So if you want to monitor a Nortel router or a Cabletron switch you will have to get the MIBs and read which ones you want, then code into NMIS. This is not difficult but you do need some Perl skills and you would have to be able to read a MIB and generate an OID file. (Of course, networking knowledge would also be required to configure the SNMP agent on the device).

Q. How do I add mibs to NMIS?

A. You need to edit the loadmibs.pl script, put the names of the mibs into the script and generate the OID files.  Not straight forward if you don't program in Perl but quite easy really.  Something like:

mibdump.pl mibdir=/usr/local/share/snmp/mibs mibs=router outfile=/data/nmis/mibs/cisco-router.oid
You will need copies of MIBS, some available at http://www.sins.com.au/public/
Q. I am having problems with Ping?

A. NMIS now uses Perl Net::Ping and requires NMIS to be run with Root privileges.  For backwards compatibility the old routines are included which execute Unix Ping.

Q, Why do my Catalyst (4000, 5000, 6000) Switch Interfaces not appear in NMIS?

A. NMIS requires a description in the configuration on the switch interfaces before it will collect data on them.

This is a good idea. You normally only want to monitor ports that connect to servers or uplinks and who wants to spend time unmarking the interfaces you don't want. Far better to put a description and let NMIS build the config dynamically, than to spend time selecting which one of the {large number} of interfaces you want to monitor (a la MRTG when you use configmaker).

Q.I have a Linux server that I would like to test reachability of, and preferably graph interface statistics for. I've got the ucd snmp server on it, and an snmpwalk from the box nmis is running on to it gives me all the information I would think would be needed.

If I run an update or collect with debug true, it always tells me: "No system file exists creating one."

and once I'm done, neither <BASE>/var/$node.dat nor <BASE>/var/$node-interface.dat exists. This is the case when the node type is server or router.

Also, <BASE>/database/health/server/$node-reach.rrd exists, but with no data in it, and <BASE>/database/interface/server/$node/ exists, but there are no files in it.

A. "The main thing is the removal of the check on system.sysServices, as ucd-snmp doesn't define this (so NMIS will always think that SNMP is not working for Linux boxes). "

Q. Do I need to do anything to SNMP Simple ?

A. No. SNMP Simple is now a part of the NMIS files and is already in place. You can ignore those files.

You should take a few seconds to have a look through it and familiarise yourself with what it does though. Its not compulsory just a good idea.

Q. What does SNMP Simple do ?

A. SNMP Simple is a set of Perl 5 modules that perform SNMP access requests. They written by Simon Leinen simon@switch.ch. Check his website for full information. The SNMP Simple package contains Perl 5 modules SNMP_Session.pm and BER.pm, which, when used together, provide rudimentary access to remote SNMP (v1/v2) agent.

This module differs from existing SNMP packages in that it is completely stand-alone, i.e. you don't need to have another SNMP package such as NET-SNMP (as other monitoring packages do). It is also written entirely in Perl, so you don't have to compile any C modules (very handy and easy to use). It uses the Perl 5 Socket.pm module and should therefore be very portable, even to non-Unix systems (so therefore works on a unusual platforms like Amiga, Alpha and even Microsoft Windows ).

The SNMP operations currently supported are "get", "get-next", "get-bulk" and "set", as well as trap generation and reception. NMIS doesn't use the trap features at this time.

Q. What does RRDtool do ?

A. RRDtool refers to Round Robin Database tool. Round robin is a technique that works with a fixed amount of data, and a pointer to the current element. Think of a circle with some dots plotted on the edge, these dots are the places where data can be stored. Draw an arrow from the center of the circle to one of the dots, this is the pointer. When the current data is read or written, the pointer moves to the next element. As we are on a circle there is no beginning nor an end, you can go on and on. After a while, all the available places will be used and the process automatically reuses old locations. This way, the database will not grow in size and therefore requires no maintenance. RRDtool works with with Round Robin Databases (RRDs). It stores and retrieves data from them.

NMIS uses RRDtool as the database for SNMP information and the graphing tool. Since NMIS does all of the requests to and from RRDtool, the average NMIS user has little or no interaction with RRDtool.

Q. Does NMIS work on Microsoft Windows (any version)?

A. You aren't going to like this. The short answer is no. The long answer is yes, but.....

NMIS uses the Perl language and an Open Source Perl distribution is available from ActiveState. However, NMIS uses a couple of modules to provide Time to the program flow and these do so at very high resolution. From what we (those good people on the mailing list) can tell it seems that these modules are Unix/Linux specific. Its seems that everyone uses a Unix/Linux variant at this time (usually Red Hat or Debian although Keith wrote NMIS on Solaris i386) so no-one has gotten around to fixing the problem. Some people have reported problems with RRDtool on Microsoft platforms also but this is unconfirmed.

A couple of other points. One.The general consensus is that this program is well suited to Linux/Unix environment and you are broadly encouraged to do so as well. Two. Since very few people, or perhaps no-one, is using Microsoft Windows then support is going to be a bit limited. Three. It would be great if you can get it working on Microsoft Windows and let us know. Then we can get a more people using NMIS and develop the software even further than it is now.

Q. Why Don't ping and traceroute work?

NMIS was written on Solaris so until version 2.2 is finalised there are some hard-coded file locations you might have to change in /bin/admin.pl change the file locations for ping, traceroute etc. to suit your machine (the command 'which ping' will tell you where it lives)

You may need to change the syntax of ping - for eample the following works in Linux at about line 89 of /cgi-bin/admin.pl


if ($admin eq "ping") {

                $adminoutput=`/bin/ping -c 5 -s 64 $node`;

        }

The same applies for other commands. This will be automagically fixed in 2.2 :)

Q. Why Aren't I getting any stored reports?

Change the first line of run-reports.sh to #!/bin/sh if you don't have ksh at /bin/ksh ('which ksh' will tell you where it is or report an error if you don't have it at all.) Check that the path listed in the script will find all the commands listed in the file eg. date, col etc. Again, you can find their locations with 'which commandname

Q. How is the Group Summary metric derived ?

Reachability is 40%, health is 40% and availability is 20%.

Q. What are the weighting for the Health Metric ?

A. This more fully explained in the NMIS Changelog but the basic info is:

  • reachability is 30%
  • interface utilisation is 20%
  • response time is 20%
  • availability is 10%
  • CPU is 10%
  • MEM is 10%
  • Interface Utilisation consists of 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.

    Q. Can NMIS handle SNMP traps and syslog?

    A. No.  But the NMIS event subsystem could be used in a real time event system.  It would be possible to integrate NMIS into the Perl Syslog Daemon @ http://www.weirdness.net/acd/code/syslogacd or into NET-SNMP which includes a trap daemon, some details are available @ http://www.sins.com.au/nmis/net-snmp.html.

    Q. Can't locate loadable object for module RRDs in @INC

    A. If you try to look at NMIS via a web browser at something like http://<your-web-server>/cgi-nmis/nmiscgi.pl and you get an error message have a peek in your logs files (usually /usr/local/apache/logs/error.log). If the last entry mentions "Can't locate loadable object for module RRDs in @INC" then there are a couple of possibilities

    1. You did install RRDTool didn't you?
    2. It should also say what's in @INC. If you don't see a directory there like /usr/local/rrdtool/lib/perl  then go back to wher your rrdtool source is and do a 'make site-perl-install' and try the webpage again
    3. Check where RRDs.pm is (find /usr/local -name RRDs.pm -print should do it). If that's in one of the paths in @INC then check each and every dir and subdir from the root down to it is r_x by the apache user (usually nobody or httpd).