处理器:累积
IBA 探针中使用的累加处理器在输出上为每个具有相同属性的输入创建一个数字或离散状态时间序列;每次输入更改时,它都会获取其时间戳和值,并将它们附加到相应的输出序列中。如果设置了总持续时间 (total_duration),并且输出时间序列的长度大于持续时间,则会从时间序列中删除旧样本,直到不再如此。如果设置了最大样本数 (max_samples),并且输出时间序列的长度(以样本数表示)大于 max_samples,则会从时序中删除旧样本,直到不再如此。
参数 | 说明 |
---|---|
输入类型 | 表(数字或离散状态) |
输出类型 | 表(数字或离散状态,累积=True) |
最大样本数 (max_samples) | 限制最大样本数或计算结果为样本数的表达式(默认值:1024) |
总持续时间 (total_duration) | 按样本的总持续时间限制样本数。(以秒为单位)或计算结果为秒数的表达式(默认值:0) |
图形查询 (graph_query) | 图形上的一个或多个查询指定为字符串,或此类查询的列表。(字符串将在将来的版本中弃用。多个查询应提供表达式字段引用的所有命名节点(包括additional_properties)。图形查询在“操作”图形上执行。可以使用具有相应索引的“query_result”变量访问查询结果。例如,如果查询名称为“ps”的属性集节点,则结果将显示为“query_result[0][”ps“]”。 在收集器处理器 ( 在其他处理器中,它用于常规参数化,并且仅支持作为查询列表。 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")"] 包含 graph_query: [node("property_set", label="probe_propset", name="ps")] duration: int(query_result[0]["ps"].values["accumulate_duration"]) 另一个示例是探测器可以验证合规性要求;合规性值可能会随时间而变化和/或可由多个探测器使用。此外,探测可以验证设备上的 NOS 版本。在这种情况下,属性集可用于定义当前 NOS 版本要求。如果明天发生变化:更改属性设置值,而不是进入探测阶段。 |
启用流式处理 (enable_streaming) | 使输出级的示例流式传输(如果启用)。默认为 False 的可选布尔值。如果设置为 True,则此处理器的所有输出级都将在通用 protobuf 架构中进行流式传输。 |
示例:累积
假设配置
max_samples: 3 total_duration: 0
假设以下输入在时间 t=1
[if_name=eth0] : "up" [if_name=eth1] : "down" [if_name=eth3] : "up"
我们在时间 t=1 时有以下输出
[if_name=eth0] : [{"up", 1 second"}] [if_name=eth1] : [{"down", 1 second"}] [if_name=eth3] : [{"up", 1 second"}]
假设以下输入在时间 t=2
[if_name=eth0] : "down" [if_name=eth1] : "down" [if_name=eth3] : "up"
我们在时间 t=2 时有以下输出
[if_name=eth0] : [{"up", 1 second"}, {"down", 2 seconds"}] [if_name=eth1] : [{"down", 1 second"}] [if_name=eth3] : [{"up", 1 second"}]
假设以下输入在时间 t=3
[if_name=eth0] : "up" [if_name=eth1] : "down" [if_name=eth3] : "up"
我们在时间 t=3 时有以下输出
[if_name=eth0] : [{"up", 1 second"}, {"down", 2 seconds"}, {"up", 3 seconds"}] [if_name=eth1] : [{"down", 1 second"}] [if_name=eth3] : [{"up", 1 second"}]
假设以下输入在时间 t=4
[if_name=eth0] : "down" [if_name=eth1] : "down" [if_name=eth3] : "up"
我们在时间 t=4 时有以下输出
[if_name=eth0] : [{"down", 2 seconds"}, {"up", 3 seconds"}, {"down", 4 seconds"}] [if_name=eth1] : [{"down", 1 second"}] [if_name=eth3] : [{"up", 1 second"}]
如果表达式用于max_samples或total_duration,则会为每个输入项计算表达式,并为每个输出项添加相应的键。
max_samples: context.ref_max_samples * 2 total_duration: context.ref_duration * 2
示例输入:
[if_name=eth0, ref_max_samples=10, ref_duration=60] : "up" [if_name=eth1, ref_max_samples=20, ref_duration=120] : "down"
输出
[if_name=eth0, max_samples=20, duration=120] : "up" [if_name=eth1, max_samples=40, duration=240] : "down"