Periodic Change Processor

For each input value, outputs the change in absolute value over a defined period. The input values must change monotonically, for example, not decrease over time.

Graph queries can optionally be used to fetch data from arbitrary nodes in the graph, such as property set nodes, and parametrize the probe.

Parameter Description
Input Types Table (number)
Output Types Table (number)
Period The duration of the processing period used to calculate the rate of change (time in seconds, integer, or an expression that evaluates to time in seconds integer value)
Graph Query (graph_query)

One or more queries on graph specified as strings, or a list of such queries. (String will be deprecated in a future release.) Multiple queries should provide all the named nodes referenced by the expression fields (including additional_properties). Graph query is executed on the "operation" graph. Results of the queries can be accessed using the "query_result" variable with the appropriate index. For example, if querying property set nodes under name "ps", the result will be available as "query_result[0]["ps"]".

In collector processors (*_collector, if_counter) it is used to choose a set of nodes for further processing (for example, all leaf devices, or all interfaces between leaf and spine devices)

In other processors it is used for general parameterization and it is only supported as a list of queries.

graph_query: "node("system", role="leaf", name="system").
              out("hosted_interfaces").
              node("interface", name="iface").out("link").
              node("link", role="spine_leaf")"
graph_query: ["node("system", role="leaf", name="system")",
              "node("system", role="spine", name="system")"]

Non-collector processors containing the graph_query configuration parameter, can be parameterized to use data from arbitrary nodes in the graph, such as property set nodes. Property sets allow you to parameterize macro level SLAs for individual business units. In the example below, graph_query matches a node of type property_set with label probe_propset. It's accessed using the special query_result variable, where Index 0 means it's the first node in query results. If a query returned N nodes, they could be accessed using indices starting from 0 to N-1. ps is what the actual node is referred to in the query; the rest depends on the structure of the node. The int() casting is required because values of property_set nodes are strings. Here it's assumed that a property set node has the label probe_propset and that the value accumulate_duration was already created.

graph_query: [node("property_set", label="probe_propset", name="ps")]
duration: int(query_result[0]["ps"].values["accumulate_duration"])

Another example is a that probes can validate a compliance requirement; the compliance value may change over time and/or it can be used by more than one probe. Also, a probe can validate NOS versions on devices. In this case, property sets can be used to define the current NOS version requirement. If it changes tomorrow: change the property set value, instead of going under the probe stage.


Flow diagram showing three sections: Input with text field value in, Periodic Change with selection field, and Output with text field value Periodic Change.
In the Add Processor window in the GUI, hover over the "Periodic Change" tooltip for a visual example of how the Periodic Change processor functions.

Periodic Change flowchart showing input data with system_id, if_name, and metrics; processor set to 20 seconds; output data with updated metrics. Message notes no other processors can connect.