【问题标题】:Logstash Ruby Code to calculate average of array valuesLogstash Ruby 代码计算数组值的平均值
【发布时间】:2022-11-12 06:14:59
【问题描述】:

对于 SNMP CPU 利用率,我正在获取以下格式的数据 -

"cpmCPUTotalTable": [
      {
        "1.1.23": 0,
        "1.1.4": 11,
        "1.1.10": 12,
        "1.1.16": 0,
        "1.1.2": 1000,
        "1.1.12": 1555064,
        "1.1.19": 0,
        "1.1.22": 0,
        "1.1.14": 221420,
        "index": "1000",
        "1.1.11": 0,
        "1.1.9": 5,
        "1.1.21": 0,
        "1.1.18": 0,
        "1.1.5": 10,
        "1.1.15": 1734314400,
        "1.1.3": 12,
        "1.1.13": 2376240,
        "1.1.6": 12,
        "1.1.20": 0,
        "1.1.17": 0,
        "1.1.8": 10,
        "1.1.7": 11
      },
      {
        "1.1.23": 0,
        "1.1.4": 2,
        "1.1.10": 2,
        "1.1.16": 0,
        "1.1.2": 2000,
        "1.1.12": 1537672,
        "1.1.19": 0,
        "1.1.22": 0,
        "1.1.14": 221420,
        "index": "2000",
        "1.1.11": 0,
        "1.1.9": 5,
        "1.1.21": 0,
        "1.1.18": 0,
        "1.1.5": 2,
        "1.1.15": 1752823768,
        "1.1.3": 2,
        "1.1.13": 2393632,
        "1.1.6": 2,
        "1.1.20": 0,
        "1.1.17": 0,
        "1.1.8": 2,
        "1.1.7": 2
      },
      {
        "1.1.23": 0,
        "1.1.4": 2,
        "1.1.10": 1,
        "1.1.16": 0,
        "1.1.2": 3000,
        "1.1.12": 1191980,
        "1.1.19": 0,
        "1.1.22": 0,
        "1.1.14": 221420,
        "index": "3000",
        "1.1.11": 0,
        "1.1.9": 5,
        "1.1.21": 0,
        "1.1.18": 0,
        "1.1.5": 1,
        "1.1.15": 2013293636,
        "1.1.3": 1,
        "1.1.13": 2739324,
        "1.1.6": 1,
        "1.1.20": 0,
        "1.1.17": 0,
        "1.1.8": 1,
        "1.1.7": 2
      }
    ]

现在,我需要使用 Ruby 代码计算 Logstash 配置中“1.1.8”值的平均值。例如这里我的输出应该是 - ((10+2+1)/3 = 4.3)。

我对 logstash 和 ruby​​ 很陌生,并被困在这里。如果有人可以就此提供解决方案或建议,那将是一个很大的帮助。

提前致谢。

【问题讨论】:

    标签: ruby logstash


    【解决方案1】:

    假设所有这些输出都是一个散列,例如,存储在变量data 中,解决方案可能是:

    values = data[:cpmCPUTotalTable].map { |data_set| data_set[:"1.1.8"] }
    average = values.sum(0.0) / values.count
    

    【讨论】:

      猜你喜欢
      • 2013-10-25
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多