一、背景
系统中需要按天和系统计算索引,但是日志中系统的名称大小写不一致,需求将大小写改为一致,记录下logstash字段如何进行大小写变换
二、实现
我们知道logstash提供了ruby的操作,Event API
官网中的描述如下:
Ruby Filter插件可以执行任何ruby代码并且处理事件数据
filter {
ruby {
code => 'event.set("lowercase_field", event.get("message").downcase)'
}
}
过滤器会把 message 值变为小写并且赋值给新字段 lowercase_field
我们获取的新索引名称可以设置为
index => "myindex-%{+YYYY.MM.dd}-%{lowercase_field}"
当然大小写转换还可以使用filter的uppercase、lowercase
filter {
mutate {
uppercase => ["fieldname"]
}
}
三、扩展
我们已经知道了配置方式,那么我们看一下 event set/get方法
1.Set
(1)方法
event.set(field, value)
(2)描述
该方法是可以修改字段的值并赋予新字段,我们上面看到的修改大小写即采用了get/set的方式。
2.Get
(1)方法
event.get(field)。
(2)描述
此字段的值;如果该字段不存在,则为nil。 返回的值可以是字符串,数字或时间戳值。
field是发送到Logstash或在转换过程之后创建的结构化字段。 field也可以是嵌套的字段引用,例如
event.get("[foo][bar]")