logstash filter的使用方法有哪些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logstash filter的使用方法有哪些?相关的知识,希望对你有一定的参考价值。

我想在使用logstash时让发送端只发送包含error warnning等字段的日是信息 大侠们知道怎么利用那个filter来实现吗?
谢谢

  Logstash是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。

  在一个典型的使用场景下(ELK):用Elasticsearch作为后台数据的存储,kibana用来前端的报表展示。Logstash在其过程中担任搬运工的角色,它为数据存储,报表查询和日志解析创建了一个功能强大的管道链。Logstash提供了多种多样的 input,filters,codecs和output组件,让使用者轻松实现强大的功能。
  依赖条件:JAVA
  Logstash运行仅仅依赖java运行环境(jre)。各位可以在命令行下运行java -version命令 显示类似如下结果:java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
为了确保成功运行Logstash建议大家使用较近期的jre版本。 可以获取开源版本的jre在:http://openjdk.java.net 或者你可以在官网下载Oracle jdk版本:http://www.oracle.com/technetwork/java/index.html 一旦jre已经成功在你的系统中安装完成,我们就可以继续了

  启动和运行Logstash的两条命令示例
  第一步我们先下载Logstashcurl -O https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz
现在你应该有了一个叫logstash-1.4.2.tar.gz的文件了。 我们把它解压一下tar zxvf logstash-1.4.2.tar.gz
cd logstash-1.4.2
现在我们来运行一下:bin/logstash -e \'input stdin output stdout \'
我们现在可以在命令行下输入一些字符,然后我们将看到logstash的输出内容:hello world
2013-11-21T01:22:14.405+0000 0.0.0.0 hello world
Ok,还挺有意思的吧... 以上例子我们在运行logstash中,定义了一个叫"stdin"的input还有一个"stdout"的output,无论我们输入什么字符,Logstash都会按照某种格式来返回我们输入的字符。这里注意我们在命令行中使用了-e参数,该参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件。
让我们再试个更有意思的例子。首先我们在命令行下使用CTRL-C命令退出之前运行的Logstash。现在我们重新运行Logstash使用下面的命令:bin/logstash -e \'input stdin output stdout codec => rubydebug \'
我们再输入一些字符,这次我们输入"goodnight moon":goodnight moon

"message" => "goodnight moon",
"@timestamp" => "2013-11-20T23:48:05.335Z",
"@version" => "1",
"host" => "my-laptop"
以上示例通过重新设置了叫"stdout"的output(添加了"codec"参数),我们就可以改变Logstash的输出表现。类似的我们可以通过在你的配置文件中添加或者修改inputs、outputs、filters,就可以使随意的格式化日志数据成为可能,从而订制更合理的存储格式为查询提供便利。

  使用Elasticsearch存储日志
  现在,你也许会说:"它看起来还挺高大上的,不过手工输入字符,并把字符从控制台回显出来。实际情况并不实用"。说的好,那么接下来我们将建立Elasticsearch来存储输入到Logstash的日志数据。如果你还没有安装Elasticsearch,你可以下载RPM/DEB包或者手动下载tar包,通过以下命令:curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.tar.gz
tar zxvf elasticsearch-1.1.1.tar.gz
cd elasticsearch-1.1.1/
./bin/elasticsearch
参考技术A 用 filter 的 grep 功能即可 grep
match => [ "@message", "mysql|GET|error" ]

使用Logstash filter grok过滤日志文件


Eason,企业一线运维实战者,马哥教育原创作者联盟成员,热爱分享Linux应用技术的感想和原创知识。”


Logstash Filter Plugin Grok


Logstash提供了一系列filter过滤plugin来处理收集到的log event,根据log event的特征去切分所需要的字段,方便kibana做visualize和dashboard的data analysis。所有logstash支持的event切分插件查看这里。下面我们主要讲grok切分。

Grok基本介绍


1.Grok 使用文本片段切分的方式来切分日志事件,语法如下:

使用Logstash filter grok过滤日志文件

SYNTAX代表匹配值的类型,例如,0.11可以NUMBER类型所匹配,10.222.22.25可以使用IP匹配。

使用Logstash filter grok过滤日志文件

可以使用如下grok pattern来匹配这种记录

使用Logstash filter grok过滤日志文件

在logstash conf.d文件夹下面创建filter conf文件,内容如下

使用Logstash filter grok过滤日志文件

以下是filter结果

使用Logstash filter grok过滤日志文件

grok内置的默认类型有很多种,读者可以自行查看。


2.使用自定义类型
更多时候logstash grok没办法提供你所需要的匹配类型,这个时候我们可以使用自定义。

第一种,直接使用oniguruma语法去匹配文本片段,语法如下

使用Logstash filter grok过滤日志文件

假设你需要匹配的文本片段为一个长度为10或11的十六进制的值,使用下列语法可以获取该片段,并把值赋予queue_id

使用Logstash filter grok过滤日志文件

第二种,创建自定义pattern文件

创建文件夹patterns,在此文件夹下面创建一个文件,文件名随意,eg: postfix

使用Logstash filter grok过滤日志文件

然后将patterns file引入,告诉logstash你的自定义类型文件,以下面的event log record为例子:

使用Logstash filter grok过滤日志文件

在logstash conf.d文件夹下面创建filter conf文件,内容如下

使用Logstash filter grok过滤日志文件

匹配结果如下:

使用Logstash filter grok过滤日志文件

推荐使用grokdebugger来写匹配模式,输入event log record,再逐步使用pattern微调切分,下方会根据你所写的模式将输入切分字段。

使用Logstash filter grok过滤日志文件

使用Logstash filter grok过滤日志文件

3.其他常用内置方法

add_field: 当pattern匹配切分成功之后,可以动态的对某些字段进行特定的修改或者添加新的字段,使用%{fieldName}来获取字段的值
Exmaple:

使用Logstash filter grok过滤日志文件

使用Logstash filter grok过滤日志文件

如果somefield=dad,logstash会将foo_dad新字段加入elasticsearch,并将值Hello world, dad赋予该字段

add_tag: 为经过filter或者匹配成功的event添加标签
Example:

使用Logstash filter grok过滤日志文件


好的内容离不开作者的持续付出,给他一次小小的打赏我们将获得持续不断的有料干货,⬇️美女和帅哥都会至少打赏1元哟⬇️⬇️

以上是关于logstash filter的使用方法有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

logstash使用filter删除不需要的日志

Logstash 常用 filter 插件介绍

Logstash drop filter插件 --- 2022-04-03

记录logstash 的filter 使用

使用Logstash filter grok过滤日志文件

小姐姐教你定制一个Logstash Java Filter~