Logstash中的数学函数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (290)

我期待对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 /(1024 * 1024)

我可以看到一个链接它说Logstash具有数学过滤器,但这是不可见这里

提问于
用户回答回答于

logstash-filter-math不是核心插件,但它是可用在这里。您可以按顺序执行后续步骤或安装它:

> 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 {
   ruby {
      code => "event['data']['doc_size_mb'] = event['data']['doc_size'].to_i / (1024 * 1024)"
   }
}
用户回答回答于

我尝试使用上面的方法将现有字段乘以因子值,并通过Logstash 7.0.1中的这个新的缩放值更新事件中现有字段的值,但它没有按预期工作。我修改它以使用事件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)
          }
       }

所属标签

可能回答问题的人

  • 应用案例分享

    1 粉丝490 提问6 回答
  • o o

    4 粉丝495 提问5 回答
  • 找虫虫

    5 粉丝0 提问5 回答
  • uncle_light

    5 粉丝518 提问4 回答

扫码关注云+社区

领取腾讯云代金券