logstash案例

输入:bin/logstash -e 'input { stdin { } } output { stdout {} }'

输入helloworld可以看到:

logstash案例_第1张图片

Hello World(输入)经过 Logstash 管道(过滤)变成:2017-10-27T07:17:51.034Z localhost.localdomain Hello World (输出)。

在生产环境中,Logstash 的管道要复杂很多,可能需要配置多个输入、过滤器和输出插件。

因此,需要一个配置文件管理输入、过滤器和输出相关的配置。配置文件内容格式如下:


logstash案例_第2张图片

根据自己的需求在对应的位置配置 输入插件、过滤器插件、输出插件 和 编码解码插件 即可。

在使用插件之前,我们先了解一个概念:事件。

Logstash 每读取一次数据的行为叫做事件。

在 Logstach 目录中创建一个配置文件,名为 logstash.conf(名字任意)。

输入插件允许一个特定的事件源可以读取到 Logstash 管道中,配置在 input {} 中,且可以设置多个。

修改配置文件:


logstash案例_第3张图片

其中,messages 为系统日志。

保存文件。键入:

bin/logstash -f logstash.conf

在控制台结果如下:


logstash案例_第4张图片

在控制台结果如下:


logstash案例_第5张图片

输出插件将事件数据发送到特定的目的地,配置在 output {} 中,且可以设置多个。

修改配置文件:


logstash案例_第6张图片

日志内容随便定义。

配置文件中使用 elasticsearch 输出插件。输出的日志信息将被保存到 Elasticsearch 中,索引名称为 index 参数设置的格式。

bin/logstash -f logstash.conf


logstash案例_第7张图片

可以看到数据是按照行存储的:

logstash案例_第8张图片

编码解码插件本质是一种流过滤器,配合输入插件或输出插件使用。

从上图中,我们发现一个问题:Java 异常日志被拆分成单行事件记录到 Elasticsearch 中,这不符合开发者或运维人员的查看习惯。因此,我们需要对日志信息进行编码将多行事件转成单行事件记录起来。

我们需要配置 Multiline codec 插件,这个插件可以将多行日志信息合并成一行,作为一个事件处理。

Logstash 默认没有安装该插件,需要开发者自行安装。键入

bin/logstash-plugininstalllogstash-codec-multiline


修改配置文件:

logstash案例_第9张图片

bin/logstash-flogstash.conf:




过滤器插件位于 Logstash 管道的中间位置,对事件执行过滤处理,配置在 filter {},且可以配置多个。

本次测试使用 grok 插件演示,grok 插件用于过滤杂乱的内容,将其结构化,增加可读性。

bin/logstash-plugin install logstash-filter-grok


logstash案例_第10张图片


logstash案例_第11张图片
logstash案例_第12张图片

你可能感兴趣的:(logstash案例)