首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Logstash中的数学函数

Logstash中的数学函数
EN

Stack Overflow用户
提问于 2016-06-28 15:25:58
回答 3查看 7.9K关注 0票数 7

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

输入如下:

代码语言:javascript
复制
{
  "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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-28 16:07:18

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

代码语言:javascript
复制
> 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实现同样的计算

代码语言:javascript
复制
filter {
   ruby {
      code => "event['data']['doc_size_mb'] = event['data']['doc_size'].to_i / (1024 * 1024)"
   }
}
票数 9
EN

Stack Overflow用户

发布于 2019-05-21 03:14:33

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

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

代码语言:javascript
复制
filter {
     ruby {
        code => "event['data']['myField'] = event['data']['myField'].to_i * 0.25"
          }
       }

有效的解决方案-

代码语言:javascript
复制
filter {
     ruby {
        code => "event.set('myField',event.get('myField')* 0.25)
          }
       }
票数 4
EN

Stack Overflow用户

发布于 2021-06-03 01:44:42

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38069675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档