腾讯云 Elasticsearch 进阶篇(二十六)Logstash讲解与实战

前言|

在讲下一个关键插件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格式的输出,可以看出,json每个字段是key:values格式,多个字段之间通过逗号分隔。有时候,如果json文件比较长,需要换行的话,那么就要用json_lines编码格式了。操作方法跟上面一样,将JSON改为JSON_lines即可

JSON换行输出

二、总结:

本节简单讲解了一下Logstash的编码格式插件。通过它,我们可以定义输入输出的格式。总的来说,Logstash是一个input-->decode-->filter-->encode-->output的数据流。下一节,我们重点来讲Logstash的过滤器插件(filter),非常重要,跟着我来吧。。