RRFW SNMP Discovery User Guide

Introduction

In many (but not only) cases RRFW is used for SNMP monitoring. It provides powerful tools which automate the process of devices' MIB discovery.

The discovery tools consist of two programs: devdiscover performs the SNMP discovery, based on the discovery instructions XML file. The result of its work is a new RRFW datasource configuration file. Another utility, genddx, is a program that generates the basic discovery instructions file based on a set of commandline options.

genddx: Discovery instructions generator

  Usage: $RRFW_HOME/bin/genddx options...
  Options:
     --host=hostname         router hostname
     --hostfile=filename     space-separated router hostnames file
     --out=outfile           output file.         [discover-routers.xml]
     --discout=filename      discovery output file
            [/usr/local/rrfw-0.1/share/rrfw/xmlconfig/routers.xml]
     --domain=domain         optional DNS domain name
     --version=v             SNMP version         [2c]
     --community=string      SNMP read community  [public]
     --port=number           SNMP port            [161]
     --retries=number        SNMP retries         [2]
     --timeout=number        SNMP timeout         [10]
     --subtree=string        Subtree name         [/Routers]
     --datadir=path          data-dir parameter   [/var/snmpcollector]
     --holtwinters           Enable Holt-Winters analysis

This utility generates devdiscover instructions XML file based on commandline options and a plain list of SNMP agents' hostnames. Hostnames are apecified with one or many --host=hostname options, or a plain text file with space-separated hostnames.

Each host may have a symbolic name. This symbolic name is used as the host-level subtree name. Symbolic name follows the hostname with a semicolon.

By default, the devices are placed into /Routers/ subtree hierarchy. You may change the subtree name with the --subtree option. Single slash as subtree name would cause host-level subtrees placed at the top of the datasources tree.

By default, genddx specifies the RRFW configuration output file with absolute path pointing to xmlconfig subdirectory of the installation, with the file name <routers.xml>. You most probably will change this by using the --discout option.

Examples:

  ./bin/genddx --out=share/rrfw/discovery/ch-langenthal.ddx \
    --discout=share/rrfw/xmlconfig/ch-langenthal.xml
    --host=192.168.34.35:Langenthal_PE1 \
    --host=192.168.34.36:Langenthal_PE2 \
    --host=192.168.34.37:Langenthal_CE_Stadtverwaltung \
    --community=blahBlah \
    --subtree=/MPLS/CH/Bern/Langenthal
  ./bin/devdiscover --in=share/rrfw/discovery/ch-langenthal.ddx

devdiscover: SNMP discovery tool

  Usage: $RRFW_HOME/bin/devdiscover --in=filename.xml options...
  Options:
   --in=infile             discovery instructions XML file
   --mkdir                 create data-dir directories
   --limit=regexp          limit the discovery by output files
   --verbose               print extra information
   --debug                 print debugging information

This utility performs the SNMP discovery of devices listed in the input XML file. The output XML file is the RRFW datasources configuration. Output file name is taken from output-file parameter in the instructions XML file.

devdiscover is accompanied by a number of MIB- or vendor-specific modules, each responsible for finding specific SNMP variables in the SNMP device, and for generating a piece of RRFW configuration XML file responsible for that specific MIB. The list of supported generic MIBs and vendors is constantly growing. It is quite easy to create new discovery modules, and the internals are documented in RRFW SNMP Device Discovery Developer's Guide.

The output file automatically includes all required prerequisite generic and vendor template definition files.

Behaviour of devdiscover is controlled by variables in $RRFW_HOME/share/rrfw/devdiscover-siteconfig.pl file. Default values for those variables reside in $RRFW_HOME/share/rrfw/devdiscover-config.pl.

For large installations, it is recommended to place RRD files into a hashed directory structure. You can enable this feature by setting

  $RRFW::DevDiscover::hashDataDirEnabled = 1;

in your devdiscover-siteconfig.pl file. Then launching devdiscover with --mkdir option would automatically create the subdirectories inside data-dir.

The XML files produced by devdiscover may be automatically changed with some local site-specific scripts. See XUpdate usage example in RRFW User Guide.

Discovery Instructions File

The input file for devdiscover is an XML file. Its DTD is available in RRFW distribution in snmp-discovery.dtd.

A typical place to store the discovery XML is share/rrfw/discovery/ directory under the RRFW installation path.

Example:

    <?xml version="1.0" encoding="UTF8"?>
    <snmp-discovery>
      <file-info>
        <format-version>
    1.0
        </format-version>
      </file-info>
      <creator-info>
    RRFW version 0.1.4d
    This file was generated by command:
    /usr/local/rrfw-0.1/bin/genddx \
     --discout=share/rrfw/xmlconfig/myrouters.xml \
     --community=blahblah  --host=10.0.0.1  --host=10.0.1.1
    On Tue Dec  2 17:43:30 2003
      </creator-info>
      <param name="data-dir" value="/var/snmpcollector"/>
      <param name="domain-name" value=""/>
      <param name="host-subtree" value="/Routers"/>
      <param name="output-file" value="share/rrfw/xmlconfig/myrouters.xml"/>
      <param name="rrd-hwpredict" value="no"/>
      <param name="snmp-community" value="blahblah"/>
      <param name="snmp-port" value="161"/>
      <param name="snmp-retries" value="2"/>
      <param name="snmp-timeout" value="10"/>
      <param name="snmp-version" value="2c"/>
      <host>
        <param name="snmp-host" value="10.0.0.1"/>
        <param name="symbolic-name" value="10.0.0.1"/>
      </host>
      <host>
        <param name="snmp-host" value="10.0.1.1"/>
        <param name="symbolic-name" value="10.0.1.1"/>
      </host>
    </snmp-discovery>

XML elements

Common parameters

Parameters for RFC2863_IF_MIB

This discovery module is responsible for agent's interfaces table and interface counters. Recognized optional parameters are:

Other generic MIB parameters

Vendor parameters


Author

Copyright (c) 2002-2003 Stanislav Sinyagin <ssinyagin@yahoo.com>