【问题标题】:Siddhi query for network utilizationSiddhi 查询网络利用率
【发布时间】:2013-04-24 00:55:44
【问题描述】:

我目前正在评估 siddhi 在 snmp 环境中的使用。 POC 是围绕网络接口利用率构建的。

流定义为:

define stream interfaceStatsEvents (nodeName string, sdate double, ifSpeed long, ifIndex string, ifAdminStatus string, ifOperStatus string,
ifInDiscards long, ifInErrors long, ifOutDiscards long, ifOutErrors long, ifInOctets long, ifOutOctets long)

计算接口利用率的查询为:

from every (e1 = interfaceStatsEvents -> e2 = interfaceStatsEvents[nodeName == e1.nodeName and ifIndex == e1.ifIndex]) 
select e1.nodeName, e1.ifIndex, ((e2.ifInOctets - e1.ifInOctets) * 8 * 100) / (((e2.sdate - e1.sdate) / 1000) * e1.ifSpeed) as utilization 
insert into interfaceUtilization;

问题是查询似乎只运行一次。 interfaceStatsEvents 流中添加了 4 个事件。预计会为 interfaceUtilization 生成 3 个事件,而不是仅生成一个事件。

有没有人知道原因或如何修复查询?

【问题讨论】:

    标签: wso2 siddhi


    【解决方案1】:

    这里的问题是你对整个模式使用every,因此这将输出每个e1,e2组合

    from every (e1 = interfaceStatsEvents -> e2 = interfaceStatsEvents[nodeName == e1.nodeName and ifIndex == e1.ifIndex])
    

    要获得预期的输出,即对于每个 e1 后跟 e2,您必须将查询更改为

    from every e1 = interfaceStatsEvents -> e2 = interfaceStatsEvents[nodeName == e1.nodeName and ifIndex == e1.ifIndex]
    

    这里的 every 只适用于 e1 而不适用于 e1-e2 组合。

    【讨论】:

    • 谢谢。这是有道理的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    相关资源
    最近更新 更多