在讲下一个关键插件filter插件前,简单说一些Codec编码插件,普及一下这个概念,方便后面学习。
其实我们就已经用过编码插件codec了,也就是这个rubydebug,它就是一种codec,虽然它一般只会用在stdout插件中,作为配置测试或者调试的工具。 编码插件(Codec)可以在logstash输入或输出时处理不同类型的数据,因此,Logstash不只是一个input-->filter-->output的数据流,而是一个input-->decode-->filter-->encode-->output的数据流。
Codec支持的编码格式常见的有plain、json、json_lines等。下面依次介绍。
plain是一个空的解析器,它可以让用户自己指定格式,也就是说输入是什么格式,输出就是什么格式。下面是一个包含plain编码的事件配置文件,如图:
那么我们启动一下服务?
我们验证一下:随便通过键盘输入一些字符“hello world”,看输出:如下
从结果我们可以看到:经过Logstash处理的日志加了几个字段,一个是时间戳 一个是主机名,这2个字段是必加的。
所以,输入什么,输出就是什么。这就是Plain 编码格式
如果发送给logstash的数据内容为json格式,可以在input字段加入codec=>json来进行解析,这样就可以根据具体内容生成字段,方便分析和储存。如果想让logstash输出为json格式,可以在output字段加入codec=>json,下面是一个包含json编码的事件配置文件,如图:
那我们来执行一下:如下图:发现从标准键盘输入:输出的格式为JSON格式
结论:
以上就是json格式的输出,可以看出,json每个字段是key:values格式,多个字段之间通过逗号分隔。有时候,如果json文件比较长,需要换行的话,那么就要用json_lines编码格式了。操作方法跟上面一样,将JSON改为JSON_lines即可
本节简单讲解了一下Logstash的编码格式插件。通过它,我们可以定义输入输出的格式。总的来说,Logstash是一个input-->decode-->filter-->encode-->output的数据流。下一节,我们重点来讲Logstash的过滤器插件(filter),非常重要,跟着我来吧。。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。