Design specification

What is it

The SnmpBooster module allows Shinken Pollers to directly manage SNMP data acquisition. This is an all Python cross-platform SNMP module. It is tightly integrated with the Shinken Poller, Scheduler and Arbiter daemons to provide the best possible user experience.

Design specification summary

  • STATUS - DESIGN SPEC PERFORMANCE
    • [Done] Functions as an integrated Shinken Poller module
    • [Done] Necessary integration code commited to Shinken official release (Integrated starting at v1.2)
    • [Done] Ability to collect thousands of SNMP metrics per second
    • [Done] Be compatible with distributed data acquisition
    • [Done] Collect data for a host/check_interval tuple via SNMP in a single pass
    • [Done] Use all builtin Shinken scheduler logic for retries, forced checks, timeouts, dependencies, parents
    • [Done] Store collected data for the duration of the check_interval in a Redis
    • [Done] On a restart, after the first collection, be able to pick up where the last check left and calculate derived values
    • [Done] Forced check are not allowed within 30 seconds of last SNMP query to the same host/check_interval, all other requests get data from the cache.
    • [Done] Only a single request to the host/check_interval via SNMP is allowed at a time, all other requests get data from the cache.
  • STATUS - DESIGN SPEC USABILITY
    • [Done] Usage documentation
    • [xxxx] SkonfUI and Discovery usage documentation
    • [xxxx] Provide sample configuration packs in Shinken
    • [Done] Provide sample config.ini with examples of all types of data
      • SNMP OIDS, DATASOURCES, DSTEMPLATES, TRIGGERS and TRIGGERGROUPS
    • [Done] Directly compatible for use with [[https://github.com/xkilian/genDevConfig|genDevConfig]] Shinken SNMP configuration generator
    • [Done] Provide meaningful feedback for users on errors
    • [Done] Capture all tracebacks and convert them to actual error or warning messages
  • STATUS - DESIGN SPEC FEATURES
    • [Done] Return state and performance metrics
    • [Done] Performance metrics can be returned in a Weathermap compatible format
    • [Done] Configuration file format is ConfigObj INI
    • [Done] Load all valid INI configuration files from a directory and merge them
    • [Done] Load a single INI configuration file
    • [xxxx] Load a list of INI configuration files
    • [Done] Configuration file describes all generic acquisition parameters (OID, DATASOURCE, DSTEMPLATE, MAP, TRIGGER, TRIGGERGROUP)
    • [Done] Supports Triggers which are calculation rules to determine states
    • [Done] Triggers support an RPN (Reverse Polish Notation) calculation engine which includes mathematical and logical operators
    • [Done] Each TRIGGER is associated with a severity level, WARNING or CRITICAL
    • [Done] Multiple TRIGGERS can be associated with a TRIGGERGROUP
    • [Done] Use builtin Python Operators
    • [Done] Support DERIVE, TEXT, GAUGE and COUNTER data types
    • [xxxx] Support TIMETICKS data type
    • [Done] Support applying RPN based calculations to received metric for scaling or conversion purposes
    • [Done] Use a Python SNMP library which supports asynchronous acquisition PySNMP
    • [Done] Datasources can use rule based runtime instance mapping
    • [Done] Set Snmp version as a check runtime option
    • [Done] Set Snmp DSTEMPLATE as a check runtime option
    • [Done] Set Snmp TRIGGERGROUP as a check runtime option
    • [Done] Set Snmp COMMUNITY as a check runtime option
    • [Done] Use Snmp version 2c GetBulk
    • [xxxx] Support Snmp version 2c GetNext if GetBulk is not supported
    • [xxxx] Support Snmp version 1 GetNext
    • [xxxx] Set Snmp Timeout as a check runtime option, instead of a hardcoded value at 5 seconds
  • STATUS - DESIGN SPEC MAINTAINABILITY
    • [xxxx] Functions documented in the source code
    • [Done] Critical functions documented in the source code
    • [Done] Locking sections identified in the code
    • [xxxx] Unit tests with at least 80% coverage
    • [xxxx] Unit tests integrated with Shinken test suite
    • [Done] Code hosted on github
    • [xxxx] configuration validity and integrity checking of all INI files
    • [xxxx] Pep8 compliant
    • [xxxx] Pylint pass

genDevConfig Plugins - Compatibility status with SnmpBooster

  • STATUS - genDevConfig maintained Plugins
    • [Done] Avaya ES switches
    • [Done] Avaya ERS routing switches
    • [Done] Cisco 29x0 switches
    • [Done] MIB-II Interfaces
    • [Done] Cisco PIX/ASA
    • [Done] JUNOS devices
    • [Done] Cisco IOS routers
    • [Done] NetSNMP unix hosts ** Validation required**
    • [Done] Packeteer devices ** Validation required**
    • [Done] Sensatronics devices ** Validation required**
    • [Done] Foundry devices ** Validation required**
    • [Done] Packeteer devices ** Validation required**
    • [Done] Cisco CSS ** Validation required**
    • [InProgress] New Cisco Access points
  • STATUS - Other maintained Plugins

Tip

  • [xxxx] Denotes a specification that is planned but not implemented
  • [InProgress] Denotes a specification that is under development
  • [Done] Denotes a specification that is implemented