【发布时间】:2017-03-10 21:46:37
【问题描述】:
如何在 logstash 中格式化数字? 我在过滤器插件的 ruby 代码中使用 '' % 格式表达式,但我得到 nil 作为格式结果。我尝试了 sprintf 和 format 函数,但结果相同。
下面是我的代码 sn-p。
ruby {
code => "
event.set( 'positioning', event.get('branch_lat') + ',' + event.get('branch_lon') )
event.set( 'report_datetime', event.get('report_date') + '%04d' % event.get('report_time') )
"
}
作为格式结果,我在日志中得到以下错误。
[2016-10-28T12:31:43,217][ERROR][logstash.filters.ruby ] Ruby exception occurred: undefined method `+' for nil:NilClass
我的平台信息如下。
[root@elk-analytic logstash]# rpm -qi logstash
Name : logstash
Epoch : 1
Version : 5.0.0
Release : 1
Architecture: noarch
Install Date: Thu 27 Oct 2016 01:26:03 PM JST
Group : default
Size : 198320729
License : ASL 2.0
Signature : RSA/SHA512, Wed 26 Oct 2016 01:57:59 PM JST, Key ID d27d666cd88e42b4
Source RPM : logstash-5.0.0-1.src.rpm
Build Date : Wed 26 Oct 2016 01:10:26 PM JST
Build Host : packer-virtualbox-iso-1474648640
Relocations : /
Packager : <vagrant@packer-virtualbox-iso-1474648640>
Vendor : Elasticsearch
URL : http://www.elasticsearch.org/overview/logstash/
Summary : An extensible logging pipeline
Description :
An extensible logging pipeline
添加于 2016.10.28 14:32
我的目标是将下面的 csv 列解析为 elasticsearch 中的时间戳字段。 请注意,时间的小时有 1 位和 2 位数字的混合模式。
日期,时间
20160204,1000
20160204,935
我尝试在过滤器插件中使用date 函数,但由于记录错误而无法正常工作。
[2016-10-28T11:00:10,233][WARN ][logstash.filters.date ] Failed parsing date from field {:field=>"report_datetime",
:value=>"20160204 935", :exception=>"Cannot parse \"20160204 935\": Value 93 for hourOfDay must be in the range [0,23]", :config_parsers=>"YYYYMMdd Hmm", :config_locale=>"default=en_US"}
以下是出现上述错误时的代码sn-p。
ruby {
code => "
event.set( 'positioning', event.get('branch_lat') + ',' + event.get('branch_lon') )
event.set( 'report_datetime', event.get('report_date') + ' ' + event.get('report_time') )
"
}
# Set the @timestamp according to report_date and time
date {
"match" => ["report_datetime", "YYYYMMdd Hmm"]
}
我做了一些修改,最终得到了我第一次发布的代码。
【问题讨论】:
-
您能否展示一个示例文档以及您想要实现的目标?可能还有其他方法。
-
@Val 请查看我更新的帖子。
标签: ruby elasticsearch logstash