(This is still a work in progress, please ignore typo's and weird gramatical bits for the moment)

JFFNMS is a php front end to rrdtool graphs. By default it will walk through an snmp device and auto-detect any standard SNMP interfaces it can find, such as CPU information, byte counters per network interface, etc etc.

If you want to make JFFNMS graph other things, such as SNMP information out of a custom MIB, you need to add support into JFFNMS to do this. Once the support is into JFFNMS, it will allow you to monitor that interface on all machines, and if you have Autodiscovery enabled for a host, it may even automatically add the graph with no user intervention.

Unfortunatly the user interface for JFFNMS could do with some work, and the documentation is not much better.

For my application I wanted to monitor a new SNMP based temperature and humidity sensor ( we purchased.

This assumes that you have got JFFNMS installed and working correctly, and that you have some understanding of how to write PHP and how SNMP works. This is based off of version 0.7.5 of JFFNMS. Earlier versions have a different UI and way to edit the fields.

Some JFFNMS terms:

  • Interface - The basic unit which you can monitor. An obvious example is a port in a router. An interface may have multiple statistics gathered about it. (Eg. packet loss rates, bytes in, bytes out). However an interface might be something like a disk, or a temperature sensor
  • Host - An entity that contains interfaces. You define the IP address to talk to and the community string to use at a host level.
  • Interface Type - A type of interface, a host may contain multiple instances of each interface type. (Eg. physical_interface, temperature sensor)

    • Each statistic or bit of info gatered about an Interface Type is called an Interface Type Field
  • Poller - A script that when given a paramerter (what to poll) will return a single value. (Eg. There is a single snmp poller which when passed an OID will return it's current value)
  • Poller Item - A defination of how to get a specific parameter for an Interface by using a poller (Eg. The "Bytes In" poller item uses the snmp poller and provides it the OID to fetch the bytes in value for a specific interface.)
  • Poller Group - A group of poller items which collect and store all the stats relating to an Interface Type.
  • Graph Type - For each Interface Type you will need a Graph Type to graph each statistic you are collecting about that Interface.

There are actually inter dependencies when creating these things, so you have to create them in a specific order, and often have to go back and add bits once you have created more stuff.

You also will probably have to write some scripts, such as an auto discovery script and perhaps a custom poller and/or a custom grapher. More about those later.

Web Configuration

This section details the configuration you need to do using the web frontend to add a new custom Interface type.

Goto Administration -> Internal Configuration -> Polling and Discovery -> Interface Types

Click Add

The fields are as follows:

  • Description - Name of the Interface Type
  • AD Enabled - Is auto discovery enabled for this interface type. If it is not, JFFNMS will never go looking for this type of interface either when auto discovery is set for a host or when you use the WYSIWYG interface selector.
  • Validate in AD - ??
  • AD Function - The name of the Auto Discovery script - leave it set to none until you have written you AD script (see later section).
  • AD Paramaters - Parameters passed to the AD script, allows you to use the same AD script for multiple different Interface Types by passing differnt param's
  • AD Default Poller - The default poller used to poll for data for this interface type. Leave it set to No Poller until you have created your poller
  • Internal Update Handler - ??
  • Break by Card - Allows you to split interfaces based on the card (read big routers here) the interface is on. Not sure how it works.
  • Have Graph - Leave unchecked until you have a graph type configured
  • RRD options - Leave until your graph stuff is sorted.

lib/main.php:944: Notice: PageInfo: Cannot find action page

lib/main.php:839: Notice: PageInfo: Unknown action