Release Notes 1.6.1 =================== NetSpyGlass v1.6.1 Improvements and New Features ----------------------------- - Change of the input format in filters by component name and description in the Graphing Workbench: regular expression match should be entered in "/ /". Any text that is not surrounded with "/" is iterpreted as a subscring match rather than regular expression. Regular expression in "/ /" must match entire string and does not need to be conclosed in quotes. Examples: * if you enter `po` in the component name field (no quotes), you get a filter that matches all components with name that includes "po" somewhere, such as "port-channel1", "po1", "component". * if you enter `/po[1-9]/`, the filter matches "po1", "po2" but does not match "port-channel" or "something_po1_or_other". If you want to match the latter, use `/.*po[1-9].*/` - Added support for time range specifications used by Grafana queries such as "now/d" (beginning of the current day), "now-1d/d" (beginning of the day yesterday) and similar for week, month and year - new Python function :func:`nw2functions.linear_regression()` has been added to the module :mod:`nw2functions`. This function applies linear regression to `limit` observations at the tail end of the time series in each monitoring variable in `mvlist` and replaces these observations with values calculated using computed regression parameters. This can be useful in a few special cases. For example, it helps "fill the gaps" when data has NaNs. Another case is when NetSopyGlass collects a counter metric from a device that updates its internally at an interval that is greater than polling interval in NetSpyGlass. Since NetSpyGlass polls faster than the counter update interval, it gets the same value in consequitive polling cycles. The counter looks like it does not change, then it "jumps" and does not change again, and so on. It is difficult to calculate `rate()` of a counter like that because in general it is unknown what time interval to use in that calculation. One of the ways to compensate for this problem is to use linear regression to build a model that fits last few observations and calculate rate of the result using this model. - a function that interpolated "gaps" in time series in the response to all graphing queries has been deprecated and removed. This was controlled by the configuration parameter `graphs.bridgeGapMin`; support for this parameter has been removed as well. This makes graphing queries for the time series with large gaps for long intervals of time run much faster. Bug fixes --------- - NSGDB-81 Query servlet can now parse date/time in ISO format (this resolves the issue where Grafana would send time spec in this format for dashboards shared with fixed from and util time ) - support for Grafana time specs. now/d, now-1d/d and the same for week, month, year - support Grafana query with time stamp in the format "1234567890s" - NET-1404 server returns consistent response in case of errors (json format, a dictionary with key "error" and error message as its value) - NET-1404 add common error handler for uncaught exceptions - NET-1402 change the way we create and rotate fping.log - NSGDB-84 calculate Y axis range correctly for graphs built with two or more variables that differ by several orders of magnitude (and tests) - NSGDB-78 v2 GW link pop-up doesn't update unless closed - NSGDB-82 ability to use dashboard template variable with query "ALIAS BY" field - NSGDB-80 GWv2: adding second variable to the graph changes values of the first - NSGDB-83 Grafana query that does not match any variables and uses aggregator causes exception in the server and invalid response that Grafana cannot parse - NSGDB-79 GWv2: permanent url for the graph built using "build by rule" is broken - NSGDB-84 Graph doesn't handle different orders of magnitude correctly - NET-1400 GWv2: filter UI gets stuck when it receives 400 response from the server and rquires page reload - NET-1405 GWv2: incorrect behavior when user enters incomplete or invalid regex for the component or description filter - NET-1377 UI v2 link to reports is broken (causes JS error) - NSGDB-87 PyGraph.get_connected_device returns incorrect data sometimes - NET-1406 fix link to reports in the UI - NET-1375 fix session manager to make sure it restores sessions when server restarts. This means web sessions remain logged in when NSG server configured with local authentication restarts - NET-1382 GWv2: sorting by component name does not work - fix rotation of the web server log access.log - NET-1384 maps: font used for device labels scales too much when user zooms in and out - NSGDB-89 Generated graph links don't work with start/end dates - NSGDB-92: ifSpeed tag missing on ifOperStatus=down interfaces. Assign tag "ifSpeed" to interfaces in op state "down" - NET-1416 RRD connector fills "gaps" in the time series retrieved from the database. Gaps appear because of averaging in RRD - NET-1378: UIv2: Panel "Actions" - NSGDB-91 Add support for Juniper QFX transceiver lanes. Added discovery and monitoring of OIDs from the MIB table "jnxDomCurrentLane" and variables with names "rxLaserPowerDbmLaneNN" and "txLaserPowerDbmLaneNN" (where NN is [0,1,2,3,4])