| Polling Configuration |
This chapter describes all the backend collection and collation processes. It is used to describe new host or interface types and is how you add new sorts of checks. Unfortunately it is pretty complicated to wander your way around. The good news is you may not need to edit any of these tables for a default JFFNMS setup.
At first there are pollers, that collect data, and backends, that do something with the data that are collected by the poller. An interface type determines what values are stored and how autodiscovery is used. Finally a Poller Group creates a type which is a single interface types and a collection of pollers.
FIXME - Poller Group and Interface types have a cross reference, why? FIXME - it was for filtering ease, and Interface Types needs a Default PollerGroup and PollerGroups need to be filtered by InterfaceType on the Interfaces Screen.
The Interface Types are what drive the polling part of JFFNMS. These are the key to all other attributes such as what values to get, the graphs that are displayed and how interfaces are discovered and polled.
The list of Interface Types is shown with the Administration menu item Internal Configuration => Polling & Discovery => Interface Types. The table has a set of actions that can be performed on each Interface Type. Edit and Del edit and delete the Interface Type respectively. The View link displays the Interface Type Fields while the rest of the columns contain attributes about the Interface Type.
RRA:AVERAGE:0.5:1:<resolution><
resolution> is replaced by the interface type resolution defined in the RRDTool Resolution Field.
The fields are used by the discovery, poller and graph plugins so whether or not you need any fields depends on if there is a value you want either an operator to put in or for the poller to track.
You may need to put some RRDToolDS type fields if you want to monitor some value. Without these type fields no RRD file is created.
Each interface type requires a set of interface fields. These fields are the containers which hold values for the interfaces. The fields are the same for each Interface Type, but the values that are held in the fields are different for each interface. Table * gives the list types of Interface Type fields.
|
Field | Description |
| Index | A field that is unique for this Interface Type for a particular host. This is used by JFFNMS to determine which interface is what. For example, for SNMP interfaces JFFNMS uses the ifIndex SNMP OID. |
| Boolean | A value that can only be Yes or No. |
| Description | Interface icons that appear in the maps have the value for the description fields in them. |
| Other | A text field that is not part of the Index or used for Description. |
| RRDTool DS | A Data Source (DS) definition for a RRD file. |
There should be only one field that has the Index type. Multiple Index fields will cause parts of JFFNMS to fail, such as the verify interface number backend.
Interface Type Fields are displayed by clicking on the View link for the desired Interface Type row. A new table appears below the Interface Type table that shows all the selected fields. Each row has an Edit and Del link as well as attributes of the fields
As previously mentioned, the Position attribute sets the orders of fields of the same type. For Description field types, it is the order of the fields that are displayed in the Interface maps. The top-most field having the lowest position number.
RRDTool DS fields also use the Position attribute for ordering. Generally a Poller Group will collect information. The definition of RRD files is out of the scope of this document, the general idea is the same for all RRD files not just ones defined in JFFNMS. Each RRDTool DS field has 4 attributes that define the Data Source.
The first is the DS type which uses the standard definitions of an RRD. The type can be Counter, Gauge or Absolute. The Min field is for the minimal value. Any value under this minimum is not added to the RRD.
Maximum value can be fixed or be derived from another field. If it is fixed then the value goes in the box immediately to the right of the Max: label. For maximums that come from another field, put the field name (Internal Name) in the Use box and check the "for Max:" checkbox.
A Poller Group can be consider a device type where you want to collect the same information and status. It uses a single interface type which you then apply multiple pairs of pollers and backends.
Generally for most poller groups, they follow a standard order of things that need doing.
For JFFNMS to determine the state of some host's interface, it needs to measure something using some method. The poller table determines what command is used and what parameters as passed to that command. The commands are found in <JFFNMS>/engine/pollers directory. The pollers are called from the main program engine/poller.php
The table has the following fields:
The following commands are defined:
The following predefined values are available on this table. They are written in the Parameter column with angles like <fieldname>
The job of the poller is to get some value or string which is then passed onto the specified backend. It is there the backend that determines what value the poller function should return. See the next section about backends for a description of the types and their expected values.
Backends are programs that are found in engine/backends. Like the pollers, the backends are called by engine/poller.php. The main difference between a poller and a backend is the poller collects more data while a backend works on existing or received from the poller data.
There are 4 supplied backend types that come with JFFNMS: alarm, verify_interface_number, rrd and buffer.
The alarm backend is used for sending alarms to interfaces. Unless you want the backend to do absolutely nothing, it must have a parameter that is the ID event type to raise or clear. The type is found in the Event Types table and is the ID column. The relevant poller will supply the backend with the string "up" or "down" which generates the relevant event for that interface, using the event type supplied.
The verify_interface_number has no parameters. The poller gives it the current interface id for the specific interface. The backend then checks this id with the existing one in the database and updates the database with the current one if they are different.
The RRD backend is used to update and create the RRD files. Unlike any of the other backends, this one does not use a corresponding poller (use No Poller). It retrieves the information from the temporal buffer and then saves the information in the RRD files.
The buffer backend takes the information from its poller and stores it in a buffer. This buffer is used by subsequent RRD backends. It takes no parameters.
JFFNMS can produce graphs for anything the pollers collect and put into an RRD file. The Graph Types table is used to tell JFFNMS what graphs are available for what Interface Types. Assuming they use the same variables, different Interface Types can use the same graph backend.
For each graph type, you can have two graphs on the same page. Not every graph type needs two graphs.
An aggregate graph is one that is able to show simultaneously data from multiple graphs of the same Interface Type. The filename for the aggregate is like the standard graph, except it has _aggregate in it. For example if the graph filename is traffic.inc.php, the aggregate filename will be traffic_aggregate.inc.php
The function arguments are similar to that of the standard graph function except that the interfaces are in an array with an index of the interface ID. The array contains the standard Interface Parameters (see table * ).
The Autodiscovery Policies are used by JFFNMS to change what it does for the autodiscovery polling. Each policy can have enabled any of the options from list below.
The Policies are found in the Administration menu item Polling & Discovery => Autodiscovery Policy.
|
Option | Desctiption |
| Default Poller | New interfaces use the default poller as defined by the interface's Interface Type. If this option is not used, then No polling will be performed on new interfaces. |
| Permit Add | Allow the Autodiscovery process to add new interfaces if an interface is found but not in the database. |
| Permit Delete | Allow the Autodiscovery process to delete existing interfaces when they are not found in host. |
| Alert on Delete | Create an event when deleting an interface. |
| Permit Modify | Allow the Autodiscovery process to change interface attributes. |
| Permit Disable | Allow the Autodiscovery process to disable an interface. |
| Skip Loopback | Do not discover loopback interfaces (Interface name begins with "loopback", "lo" or "null" or IP address is 127.0.0.1) . |
| Check State | Only interfaces that are operationally up will be discovered. |
| Check Valid Address | Interfaces need a valid IP address before they are discovered. |
It is unlikely that you will need to change anything on this table but JFFNMS does allow you to edit or add new policies. The options are hard coded deep inside the JFFNMS discovery code and would be difficult to change.
The standard set of Autodiscovery Policies should cover most situations and have the following features.
|
Policy Name | Description |
| Standard (for switches) | As can be assumed from the name, use this for switches. They can be added or deleted but must be operationally up. This is the only policy that doesn't need a valid address for the interface. |
| Standard | Most network devices should use this policy. Interfaces are added and alarmed if deleted. |
| Just Inform | This policy will only alert on changes to the list of interfaces and does not make and changes to the database. |
| Automagic | Allows the process to do everything it needs to. |
| Administrative | This policy is like Standard except it doesn't use the default poller and it can delete interfaces. |
JFFNMS Manual, last changed July 3, 2008
| Polling Configuration |