Logstash中的数学函数

浏览 71关注 0回答 3得票数 7
原文

我期待着在Logstash中接收到的输入上使用数学运算,但无法看到任何这样的过滤器

输入如下:

{
  "user_id": "User123",
  "date": "2016 Jun 26 12:00:12",
  "data": {
    "doc_name": "mydocs.xls",
    "doc_size": "8526587",
  }
}

"doc_size“字段将有字节,我想添加一个名为"doc_size_mb”的新字段,它将包含以MB为单位的大小。

所以我想要一个简单的除法运算,如下所示:

doc_size_mb =doc_size/(1024x1024)

我可以看到一个link,上面写着Logstash有数学过滤器,但这不是可见的here

原文
SuperCoder提问于2016-06-28 15:25

3 个回答

高票数最新
OneCricketeer
修改于2018-06-03 21:20
已采纳
得票数 9

logstash-filter-math不是一个核心插件,但它是可用的here。您可以按顺序执行以下步骤或安装它:

> git clone https://github.com/robin13/logstash-filter-math.git
> cd logstash-filter-math
> gem build
> $LS_HOME/bin/logstash-plugin install logstash-filter-math-0.2.gem

如果你不想安装第三方插件,你也可以很容易地用ruby filter实现同样的计算

filter {
   ruby {
      code => "event['data']['doc_size_mb'] = event['data']['doc_size'].to_i / (1024 * 1024)"
   }
}
aamir23
回答于2019-05-21 03:14
得票数 4

我尝试使用上面的方法将现有字段乘以一个因子值,并在Logstash7.0.1中用这个新的缩放值更新事件中现有字段的值,但没有达到预期的效果。我将其修改为使用Event API的set()get()方法,这对我来说是可行的。

最初的方法(不起作用)-

filter {
     ruby {
        code => "event['data']['myField'] = event['data']['myField'].to_i * 0.25"
          }
       }

有效的解决方案-

filter {
     ruby {
        code => "event.set('myField',event.get('myField')* 0.25)
          }
       }
Badger
回答于2021-06-03 01:44
得票数 0

数学过滤器或拼音是在logstash中进行数学运算的一般情况下的选项,但对于此特定用例(转换MB),则有bytes过滤器。

页面原文内容由SuperCoder、Val、OneCricketeer、Kxrr、aamir23、sastorsl、Tasneem Hyder、Badger提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:https://stackoverflow.com/questions/38069675复制

扫码关注腾讯云开发者

领取腾讯云代金券