我期待着在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)
发布于 2016-06-28 16:07:18
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)"
}
}
发布于 2019-05-21 03:14:33
我尝试使用上面的方法将现有字段乘以一个因子值,并在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)
}
}
发布于 2021-06-03 01:44:42
数学过滤器或拼音是在logstash中进行数学运算的一般情况下的选项,但对于此特定用例(转换MB),则有bytes过滤器。
https://stackoverflow.com/questions/38069675
复制相似问题