腾讯云 Elasticsearch 进阶篇(二十六)Logstash讲解与实战
- 2020 年 3 月 7 日
- 笔记
前言|
在讲下一个关键插件filter插件前,简单说一些Codec编码插件,普及一下这个概念,方便后面学习。
一、Logstash编码插件(Codec)
其实我们就已经用过编码插件codec了,也就是这个rubydebug,它就是一种codec,虽然它一般只会用在stdout插件中,作为配置测试或者调试的工具。 编码插件(Codec)可以在logstash输入或输出时处理不同类型的数据,因此,Logstash不只是一个input–>filter–>output的数据流,而是一个input–>decode–>filter–>encode–>output的数据流。
Codec支持的编码格式常见的有plain、json、json_lines等。下面依次介绍。
1、codec插件之plain
plain是一个空的解析器,它可以让用户自己指定格式,也就是说输入是什么格式,输出就是什么格式。下面是一个包含plain编码的事件配置文件,如图:

那么我们启动一下服务?

我们验证一下:随便通过键盘输入一些字符“hello world”,看输出:如下

从结果我们可以看到:经过Logstash处理的日志加了几个字段,一个是时间戳 一个是主机名,这2个字段是必加的。
所以,输入什么,输出就是什么。这就是Plain 编码格式
2、codec插件之json、json_lines(最经常使用的编码格式)
如果发送给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),非常重要,跟着我来吧。。