前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云 Elasticsearch 进阶篇(二十五)Logstash讲解与实战

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

原创
作者头像
南非骆驼说大数据
修改2020-03-06 13:40:18
1K0
修改2020-03-06 13:40:18
举报

前言|

logstash之所以功能强大和流行,还与其丰富的过滤器插件是分不开的,过滤器提供的并不单单是过滤的功能,还可以对进入过滤器的原始数据进行复杂的逻辑处理,甚至添加独特的事件到后续流程中。

Logstash配置文件由三部分组成,其中input、output部分是必须配置,filter部分是可选配置,而filter就是过滤器插件,可以在这部分实现各种日志过滤功能。那么我们就来详细讲一下这3个插件以及实际的操作。

一、Logstash输入插件(Input)

1、读取文件(File)

logstash使用一个名为filewatch的ruby gem库来监听文件变化,并通过一个叫.sincedb的数据库文件来记录被监听的日志文件的读取进度(时间戳),这个sincedb数据文件的默认路径在 <path.data>/plugins/inputs/file下面,文件名类似于.sincedb_452905a167cf4509fd08acb964fdb20c,而<path.data>表示logstash插件存储目录,默认LOGSTASH_HOME/data。

如下图:

Logstash监控文件的机制
Logstash监控文件的机制

接下来,我们来看一个配置文件:如下图:

配置文件解析
配置文件解析

Input配置文件解析:

1,file:表示从一个文本文件去获取日志。

2,path:表示文本文件的路径,注意,一定要写绝对路径,可以写多个,如上图所示,监控2个文件。

3,type:用来表示上面的文本日志的获取的类型,这个在将来的Output中会有作用。

4,start_position :表示从文本的第一样开始扫描数据,然后进行输出。默认Logstash是从文本的最后一行进行扫描,相当于tail -f 命令,那么加上beginning的话就相当于cat 命令

5,output: 为了便于观察,我们将其输出到标准屏幕

那么我们启动一下这个服务,使用PATH/bin/logstash -f *.conf命令,如下:

服务启动
服务启动

服务启动成功,我们可以通过ps -ef|grep java 去查看服务。当然,我们可以看到屏幕上就会有很多日志信息输出:以JSON格式输出。

Logstash输出
Logstash输出

通过 输出可以看到:经过Logstash收集输出的日志都加了几个字段:

1,@timestamp时间戳字段 :收取日志的时间 2,host字段:表示日志来自哪台机器 3, @version版本字段

2,读取标准输入,我们再来看一个配置文件,如下图

logstash2.conf配置文件
logstash2.conf配置文件

配置文件解析:

1,input接受标准输入的信息,然后在接受到的信息里添加字段、添加tag标记,并标记该事件类型为testlogstash.

接下来,我们启动服务。

启动服务
启动服务

服务启动成功,我们从键盘输入一些信息,输出结果如下:

logstash标准输出
logstash标准输出

那么在Logstash输出的日志中,我们看到添加了字段、也添加了logstash自己的字段。对吧。

3,读取本机系统日志文件rsyslog,本机以Centos 7.6为列

rsyslog是系统默认的获取日志的系统文件。我们将它获取的日志上传到Logstash,需要做如下两个步骤的操作:

第一步:在需要收集日志的服务器上找到rsyslog的配置文件/etc/rsyslog.conf,添加如下内容

*.* @@IP:5514

其中,IP是logstash服务器的地址。5514是logstash启动的监听端口。那么这么配置的意思就是将rsyslog收取的日志文件通过5514的端口传输到logstash上来。因为我这里是在本机测试,所以就设置127.0.0.1

配置如图
配置如图

接着,重启rsyslog服务:systemctl restart rsyslog

重启rsyslog服务
重启rsyslog服务

第三步:我们来看一下Logstash的配置文件

logstash配置文件
logstash配置文件

这个配置文件的意思是:通过5514端口监听到数据后发送到标准输出,对吧,我们来执行一下整个流程:

注意:我们应该先启动Lostash服务,因为端口启动后,日志才能正常发送过来,否则,可能会出现日志传输找不到端口的错误。

先起动Logstash,如下图:

logstash服务
logstash服务

然后再修改syslog配置文件,如下图:日志输出正常

表明,logstash已经通过5044端口接收到rsyslog系统文件的日志啦,对吧,那么我们来看一下截图的具体信息,发现,输出的结果多了新增了很多字段。这些字段都是默认就添加的。比如:

1,timestamp 真实的事件日志产生的具体时间,注意与@timestamp的区别

2,message的日志分为了多个字段存储下来

那么,其实以上这些都是logstash filter插件的默认的过滤机制

二、总结

本节我们通过三个列子实战讲了一下Logstash Input插件,详细讲解了它的功能、用法。想必通过此章节的讲解应该,大家更应该有了更直接的理解,感受,那么大家结合官网的文档,再去更多的总结学习一下吧,下一章节,我们讲它的另外一个插件,filter插件。跟着来吧~~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言|
  • 一、Logstash输入插件(Input)
  • 二、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档