# ======================================================================== # CHANGELOG # ======================================================================== # # Possible change types: enhancement, feature, bugfix, add, extra # # ---------------------------------------------------------------------- # * 1.01 # ---------------------------------------------------------------------- # # ---------------------------------------------------------------------- # * 1.00 # ---------------------------------------------------------------------- # - feature: added EMC Datadomain support (new nodetype "datadomain") # - bugfix: fix for non allowed special chars with Config-General perl module >= 2.57 # - bugfix: fix empty node list at first page load # - bugfix: fix some php warnings when the variables are empty (thanks lxf1992521) # - bugfix: fix perl regex warning (thanks lxf1992521) # - bugfix: fix unixsnmp when use of snmpwalk may fail in case of out-of-order OIDs # - enhancement: better support of NetApp cDOT OnTAP 9.3+ # - enhancement: use Perl from env instead of a fixed path # - enhancement: favicon.ico requests prevention (thanks lxf1992521) # - extra: documentation and tools now on github as markdown pages (allowing PR for example) # # ---------------------------------------------------------------------- # * 0.06 (not published) # ---------------------------------------------------------------------- # - feature: use ifname instead of ifdesc (thanks freneticf) # - feature: added Netapp cDOT support (new nodetype "netapp-cdot") # - feature: added HPUX support (new nodetype "hpux") # - feature: added --trafficwithpkt option # - feature: added --snmp-maxmsgsize option # - feature: added nagiosxi as grapher solution # - feature: added graphite support (thanks Israel Ochoa) # - feature: added --exclude-but-calculate option, allowing calculation of interface data for excluded # interfaces and showing them in the interfacetable. (thanks lazyfrosch) # - bugfix: filter special characters for grapher compatibility # - enhancement: added support of HP NC522SFP Dual Port 10GbE Server Adapter (speed info problem) # - enhancement: inGraph grapher now use serviceDescription for parentService (thanks mxhash) # - enhancement: remove the speed on Cisco vlans as not relevant and generates wrong alerts # - enhancement: added support of HP NC522SFP Dual Port 10GbE Server Adapters # - enhancement: remove port change on SNMP domain specification (thanks lazyfrosch) # - enhancement: more snmp error messages handled # - enhancement: fix ifSpeed when aggregated interfaces (faced on Netapp filers when multiple 10Gbps # interfaces) # - enhancement: added another way of calculation, extending traffic load tracking limit for 32-bits # counters. Calculation of the octet traffic based on interface MTU config and Pkt counters. # Allow traffic calculation for high speed interfaces get all interface mtu + in/out traffic pkt counters (Unicast and Non-Unicast counters) # - extra: adjusted build for packaging and added example spec for use with icinga (thanks Martin Hauke, Dirk Götz) # # ---------------------------------------------------------------------- # * 0.05-1 # ---------------------------------------------------------------------- # # - feature: nagios 4.x support # - feature: added more variants of the pps graph(s) # - bugfix: fix for vlan on hp switches # - bugfix: fix on StandardizeSNMPOutputBehaviour for unixsnmp mode where the oid was cleaned of the output # - bugfix: denormalize func fix when text empty # - enhancement: looking at other oids for cisco model/serial info when the common ones don't provide the info # # ---------------------------------------------------------------------- # * 0.05 # ---------------------------------------------------------------------- # # - enhancement: support of ifDescr in HEX-String (i.e. ifDescr used by Windows SNMP-Service in case # of umlauts) (by Enfileyb) # - enhancement: snmpsim recorder reorg and update # - enhancement: more tolerancy for unaccessible oids # - enhancement: config table enhancements (exclusions reviewed: no repetitions in non global # exclusion for globally excluded interfaces, other messages not displayed for # excluded interfaces) # - enhancement: snmp functions merge and standardization: now 2 functions (get and walk), # returning a hash of oids and values # - enhancement: snmp functions enhancement: # * can receive multiple oids as arguments, # * new cache storage methods (based on Storable library), # * exceptions (errors) handling, including oid details on error # * unixsnmp now use exclusively snmpget/snmpbulkget instead of perl bindings # * result hash can be built with indexes as keys (outputhashkeyidx param) # * result hash empty check (checkempty param) # * results concatened by key when querying multiple oids # - enhancement: link to html table now persistent when exist, even in case of an UNKNOWN # error (ex: when target not accessible) # - enhancement: switched to a cleaner and more standard exception handling system (based on # the Exception::Class perl library) # - enhancement: lots of functions revamped and cleaned # - enhancement: new option --(no)ipinfo, to enable/disable the ipinfo. Enabled by default # - enhancement: protection against interface descriptions including double-quotes. # - enhancement: extended support of the following nodetypes: # * extended netscreen nodetype: ipinfo, nsrp state and corresponding operstatus alarm # rule # - enhancement: easier device support extension # - enhancement: nodetype change protection (changing the nodetype will reset the table) # - enhancement: don't use utils.pm anymore (utils.pm deprecated soon) # - enhancement: oids in a hash format with related info (mib, conversion, ...) + renamed lots of # oids for quick understanding # - enhancement: most of the properties are now optional (to select only the wanted columns, and also # reduce snmp queries). Use the following options: --alias, --ipinfo, --stp, --duplex, # --vlan. Note that the use of the option --alias-matching automatically enable the # --alias option. # - enhancement: settings.cfg renamed settings.cfg-sample to avoid settings overwrite during upgrades # - feature: option to sort on Name column at first page load (--default-table-sorting) # - feature: option to write the debug in a file (--debugfile=/aaa/bbb/ccc) # - feature: information tooltips to describe some columns (i.e. oper and admin status) # - feature: added interface type property (--type option) # - feature: the interface table can be splitted by interface type (--table-split option) # - feature: add the graph popups directly on the interface tables. # - feature: new support of the following nodetypes: # * new bigip nodetype: support of "BIG-IP Local Traffic Manager" (and maybe other # devices of that vendor) # * new netapp nodetype: support of Netapp filers (model/product node info + 64-bit # counters + extended 32-bit counters (low/high)) # * new bluecoat nodetype # * new brocade nodetype: firmware model, serial, portnames (~ interface alias) # (incl/excl possible) # * new brocade-nos nodetype # * new nortel nodetype: model, serial, vlan ids per port # - feature: notes, recommendations and warnings in the config table # - feature: new option snmp v3 contextname # - feature: convert sysLocation from hex to string when needed # - feature: max bandwidth monitoring capacity, recommendation on switching to 32/64 counters # and delta # - feature: added total bytes to graph in pnp4nagios templates # - bugfix: missing snmp session close # - bugfix: speed detection works when having ifHighSpeed only # - bugfix: remove problematic '#' char from perfdata servicename # - bugfix: fix on ipinfo gathering function to garantee correct ip (mainly for Bluecoat device) # - bugfix: pipe removed from snmp results via unixsnmp # - bugfix: fix nodenames with " " (idroj) # - bugfix: fix servicename with "." (idroj) # - bugfix: fix for unixsnmp when object not available # - bugfix: fix when pkt errors/discards not all available # - bugfix: fix wrong old variable in settings.cfg # - bugfix: fixing an issue with the speed info and related calculations # # ---------------------------------------------------------------------- # * 0.04-1 # ---------------------------------------------------------------------- # # - enhancement: history stats reset if node restart # - enhancement: revamped table sorting feature: new design, all column sortable even with # unusual data types # - enhancement: new ifOperstatus status rules, preventing unexpected alarms: # * no ifOperstatus alarms when ifAdminstatus is down # * no ifOperstatus alarms when ifOperstatus is changing from down to anything # - enhancement: added directory perm check, debug option, always back button # - enhancement: added ifAlias in plugin output # - feature: installer reviewed to support tuned installation via the following ./configure # options: --exec_prefix, --libdir, --sysconfdir, --datarootdir # - feature: nagios/icinga environment macros automatically used as default values for some # options: # * hostdisplay can take the NAGIOS_HOSTNAME macro value # * perfdataservicedesc can take the NAGIOS_SERVICEDESC macro value # - feature: when using pnp4nagios as graphing solution, performance data can now be written # in a spool directory directly without going throught nagios/icinga. It could be used in # case of monitored nodes with huge number of interfaces. Thanks to Markus Frosch # - feature: option --htmltablelinktarget to specify the target (new page, current frame,...) # for opening the html table page. Thanks to Markus Frosch # - bugfix: correction on icinga-alternate1 for firefox web browser # - bugfix: installer options --with-htmlurl and --with-cgiurl (for apache config file) now # accept correctly all kind of url # # ---------------------------------------------------------------------- # * 0.04 # ---------------------------------------------------------------------- # - enhancement: extended info on used delta for bw calculations # - enhancement: long interface description reformatting for: Firewall Services Module # in Cisco Catalyst 6500 Series Switch or Cisco 7600 Internet Router, Nokia firewall # (Checkpoint IPSO Firewall) # - enhancement: delta extension for dataset cleaning is now dynamic (before static at 200s) # - enhancement: now handle devices for which max Counter32 for ifSpeed is 4294967294 # - enhancement: better caching # - enhancement: extended accessmethod (buttons, multiple and custom links) # - enhancement: multiple interfaces with same descr/physical address handling # - enhancement: unified the GetTablexxx snmp functions # - enhancement: code simplification # - enhancement: revamped generated html structure, introduced buttons, all styles in css # - enhancement: better node reboot handling # - enhancement: new plugin version detection # - enhancement: new state file format # - enhancement: logic now based on a generated ifName instead of index # - enhancement: improved vlan property checks # - enhancement: code restructuration and cleaning # - enhancement: interface duplex mode collect now more robust # - enhancement: 32/64bits counter change detection, # - enhancement: 5 debug levels, reworked to be more readable # - feature: sortable columns on interface tables # - feature: added max-repetitions, timeout and retries snmp options # - feature: added a snmp oid recorder for device simulation purpose (for testing phase). # win32 precompiled for easy use, and howto # - feature: new option --alias-matching (alias incl/excl matching now separated) # - feature: netmask conversion from quad to dec notation # - feature: added spanning tree state tracking (cistp only) # - feature: much better performances by retrieving tables/bulks instead of single values # - feature: batch files to simplify taking device snapshot for simulation # - feature: nodetype option handling cisco, hp, and netscreen node types # - feature: Juniper Netscreen support (zone,vsys,mng,IPs) # - feature: support of snmp transport domain udp, tcp, udp6 and tcp6 # - bugfix: added php denormalization for Q5F # - bugfix: fix for cache duration not honored correctly # - bugfix: fix problem where empty snmp query result from cache was not used and overwritten # every time # - bugfix: ifAlias undef fix # - bugfix: fixed space problem in action column on ie/opera # - bugfix: undef speed fix # # ---------------------------------------------------------------------- # * 0.03-2 (not published) # ---------------------------------------------------------------------- # - bugfix: workaround for devices with same interface name 'Ethernet Interface'. # waiting for some planned tasks of 0.04 for better and general duplicates detection # # ---------------------------------------------------------------------- # * 0.03-1 # ---------------------------------------------------------------------- # - enhancement: interface coming from 'empty' operstatus to another operstatus does not # trigger an alert of operstatus change (ex: newly added interface) # - feature: introducing ifdescr preformating, applied to Cisco ASA specific interfaces # - bugfix: remove single quote from perfdata names and url to pnp # - bugfix: fixed major bug - config option -wp and -cp now honored (Birger Schmidt) # - enhancement: negative value for err/disc pkt tracking disable the specific tracking. # - ex: --warning 50,0,-1 --critical 80,100,-1 disable discard packet tracking # - enhancement: better support of graphing solutions # - add: new nagiosgrapher templates # # ---------------------------------------------------------------------- # * 0.03 # ---------------------------------------------------------------------- # - add: link to node selector # - bugfix: bad path in log message for missing css file (Birger Schmidt) # - add/enhancement: reinsert alias matching on in-/exclude regexmatching (Birger Schmidt) # - add/enhancement: changes to support netways grapher v1 (nagiosgrapher) again # - add: new alternate css, more adapted to multiple properties tracking. Also to give # an example of custom css. # - bugfix: blanks removed from property comparaison only from current value (from # bugfix release 0.02-4) # # ---------------------------------------------------------------------- # * 0.03b3 # ---------------------------------------------------------------------- # - bugfix: added missing ifoperstatus possible values (reported by Michael Gumbinger) # - enhancement: extended the non-tracking of ifoperstatusr: now from "xxx" to "up" # - change: pkt err thresholds now high by default # - change: one digit precision for pkt err rates # - add/enhancement: full use of perl's netsnmp and avoid use of Unix snmp # utils. Need more testing in real environment, so still EXPERIMENTAL. # - add: plugin version on html page # - change: now 3 levels of inclusion/exclusion and a new traffic # tracking logic: # * global # + globally include/exclude interfaces to be monitored # + excluded interfaces are represented by black overlayed rows in the # interface table # * traffic tracking # + include/exclude interfaces for which the load and the packet # errors/discards will be tracked # + excluded interfaces are represented by a dark grey (css dependent) # cell style in the interface table # * property tracking # + include/exclude interfaces for which the property changes will be # tracked # + excluded interfaces are represented by a dark grey (css dependent) # cell style in the interface table # - change: option perfdatashort moved to perfdataformat which permit # to choose the perfdata types to return # * full (default) : generated performance data include plugin related stats, # interface status, interface load stats, and packet error # stats # * loadonly : generated performance data include plugin related stats, # interface status, and interface load stats # * globalonly : generated performance data include only plugin related # stats # 'loadonly' should be used in case of too many interfaces and consequently # too much performance data which cannot fit in the nagios plugin output buffer. # By default, its size is 8k and can be extended by modifying # MAX_PLUGIN_OUTPUT_LENGTH in the nagios sources (icinga.h/nagios/h). # - enhancement: detect incoherent load > if speed (in case of node restart, # switch from v1 to v2c,...) and avoid bad performance data # # ---------------------------------------------------------------------- # * 0.03b2 # ---------------------------------------------------------------------- # - bugfix: fixed badly-used options warning/critical # - enhancement: added checks of undefined variables # - enhancement: reviewed debug/verbose mode to be clearer and better # understandable # - enhancement: SnmpUtils.pm now more robust and verbose in case of problem # - bugfix: port option (-P) now working # - bugfix: fixed some snmpv3 authentication problems # - feature: config file. Using the --config option, a config file can be # loaded. (really useful? lets see...) # - bugfix: now "noSuchObject" response is handled correctly for all snmp # versions. By default, v1 always returns an empty string, and v2c/v3 return # "noSuchObject". Now all the modes translate noSuchObject to an empty string, # and some extra debug info in case of v2c/v3 # - feature: new property tracked ifDuplexStatus, which is the operation mode # of the interface (duplex mode) (kudos Oliver Windt for the idea) # - enhancement/bugfix: reviewed the way config::general is used to be more # robust and compatible with last versions of the module # # ---------------------------------------------------------------------- # * 0.03b1 # ---------------------------------------------------------------------- # - feature: all styles are now handled in an external css stylesheet. # 3 stylesheets currently available: # * classic.css: follow the style of previous versions of the plugin # * icinga.css: follow the style of the icinga classic ui # * nagiosxi.css: follow the style of the nagiosxi ui # - change: moved javascript to external file & reviewed to not generate conflicts # with styles defined in css stylesheets # - feature: new interface inclusion/exclusion system distinguing properties and # traffic load: # * include/exclude interface from load tracking. Load tracking consists # in a check of the bandwidth usage of the interface. By default, all # the interfaces are included in this tracking. Excluding an interface # from that tracking is usually done for interfaces that we don't want # any tracking (e.g. loopback interfaces) # * include/exclude interface from property tracking. Property tracking # consists in the check of any changes in the properties of an interface, # properties listed via the --track option. By default, only the # "operstatus" property is tracked. You have the ability to exclude/include # some interfaces from that check. This would be done for exemple for # ports on which printers are connected (indeed, some printers going in # standby mode has also their network interface going done, generating # an non-wanted alert) # - feature: new "Action" column, which currently contains a graph icon link, replacement # of the "link on row" in previous versions of the plugin. This field allows # other actions to be added in future. # - feature: installer (./configure; make; makeinstall...) for an easier install. It # includes: # * the check of all required softwares / perl libraries. # * automatic sudo and apache/httpd configuration # - change: extracted snmp related and more general functions from the scripts and # created libraries of functions, for better maintenance and to be used in # other future plugins # - change: commonly used options are now default. # - change: detailed output and performance data (if enabled) are now default (use # of outputshort/perfdatashort options to reduce them). # - feature: error/discard packets: # * checked against thresholds (rates) # * presented via a specific column in the interface table. Cell background color # changes in case of warning/critical state # - change: new format for warning & critical commandline options for more simplicity: # --warning/--critical ,, # 1. unique threshold for in/out statistics (ex: loadin/loadout) # 2. one option for all traffic checks (load, pkt errors, pkt discards) to avoid # too many options # ex: --warning 50,0,0 --critical 80,100,100 # - enhancement: colorcode function standardized for other use (not only for load statistics) # - change: some options renamed, but will certainly change again # - enhancement: check and remove the % character if any in some commandline arguments # - feature: snmp v2c & v3 support # - feature: 64bit counters support (octets in/out & speed) for interfaces >=10Gbps # - bugfix: colorcode rewritten for correctly handle colors between a warning and a # critical threshold # - feature: testing install option # # ---------------------------------------------------------------------- # * 0.02-3 (bugfix release) # ---------------------------------------------------------------------- # - bugfix: exclude/include options now behave correctly on plugin # output, not only on html file and performance data # # ---------------------------------------------------------------------- # * 0.02-2 (bugfix release) # ---------------------------------------------------------------------- # - bugfix: fixed problem with the grapher options # - bugfix: the "excludeportperf/includeportperf" options now work # # ---------------------------------------------------------------------- # * 0.02-1 (bugfix release) # ---------------------------------------------------------------------- # - bugfix: fixed redondant short options # - bugfix: forcing conversion of oper/admin status from integer to string # - bugfix: fixed a variable substitution in interface evaluation # # ---------------------------------------------------------------------- # * 0.02 # ---------------------------------------------------------------------- # - enhancement: cleaner and step-by-step output when resetting stats # - feature: finished option 'track', replacement of nochange, which # list the field concerned by tracking. Default: only ifOperStatus. # - enhancement: replaced column name/field notations from csv style to # arrays # - enhancement: clearly referenced html tables in variable names for # better maintenance # - bugfix: some typo fixes # - bugfix: readded 'human' option (previously missed) # - bugfix: some 'variable not defined' problems # - feature: added operstatus as performance data for interface status tracking # - enhancement: don't alert for interfaces OperStatus going to "up" # - bugfix: vlan column moved to the correct place # - bugfix: avoid global perfdata to be returned in case of initial # run or no history, as the perfdata are wrong and produce drops on # graphs # - enhancement: rewrite the plugin to follow the nagios plugin development # guidelines: # * use of "use warnings" # => multiple reviews and finally done # - enhancement: added excludeportperf and includeportperf, allowing # to filter which tracked interfaces generates performance data # - bugfix: port performance data now depend on what data are # available. ex: unrouted vlans doesn't have ifOctetIn statistics on catalyst # - enhancement: last traffic calculation a bit cleaned and commented for # better maintenance # - bugfix: corrected and completed physical interface pattern matching in # check_for_unused_interfaces # - bugfix: readded 'regexp' option (previously missed) # - bugfix: cachedir/statedir naming including hostquery # - bugfix: never ignore case in options # - enhancement: reviewed the way the ports are counted. based on the # speed property availability, this seems to permit a correct counting # for most of the possible nodes (cisco, windows, linux, ...) # - feature: option "cisco" for specific cisco info requests and printing # - bugfix: fixed some options no properly interpreted # - bugfix: now checking the IP info <-> interface mapping # - feature: 2 new output cases, reflecting the leak of data for # calculation. For initial run and for no valid historical dataset # - feature: operstatus in pnp4nagios port templates, for easier # interface status tracking. # - enhancement: normal plugin output includes now load thresholds # - feature: --grapher and --grapherurl options to specify which grapher # solution is used. And alternative url can be specified. # - feature: --short or --long options for less or more detailed plugin # outputs. Using --long allow to clearly identify problematic interfaces # directly in the output of the plugin # - enhancement: some options can now be specified multiple times and are # concatenated. Exemple: --exclude 'pat1' --exclude 'pat2,pat3'. # Concerned options: track, exclude, include, excludeportperf, # includeportperf # - feature: added an option to print the default values of the options # - enhancement: updated the pod doc and moved to end for better reading. # - enhancement: data::dumper sorting # - enhancement: removed man option (prefered perldoc reading) # - enhancement: reviewed the way the operstatus is presented for # $display_operstatus = 1 (separate graph for operstatus) # ---------------------------------------------------------------------- # * 0.01 # ---------------------------------------------------------------------- # - enhancement: better pnp4nagios integration # - enhancement: better documentation on usage # - enhancement: parameters treatment block code, for easier maintenance # - enhancement: debug mode review # - enhancement: arrays in option hash to avoid reformating in sub # functions # - enhancement: cleaning of unused blocks of code. might be reviewed # in the future # - enhancement: added comments # - feature: added bits output feature for performance data # - enhancement: check_multi perfdata output type with interface name. # Global and Port perfdata types # - enhancement: rewrite the plugin to follow the nagios plugin development # guidelines: # * use of "use warnings" # - feature: pnp6 templates # - enhancement: separate history cleaning and dataset selection from bps # calculation # - enhancement: restricted the html link generated as the pluging output # to "[detail]", for better integration in third party tools such as # nagstamon,... # # ========================================================================