logstash之所以功能强大和流行,还与其丰富的过滤器插件是分不开的,过滤器提供的并不单单是过滤的功能,还可以对进入过滤器的原始数据进行复杂的逻辑处理,甚至添加独特的事件到后续流程中。
Logstash配置文件由三部分组成,其中input、output部分是必须配置,filter部分是可选配置,而filter就是过滤器插件,可以在这部分实现各种日志过滤功能。那么我们就来详细讲一下这3个插件以及实际的操作。
1、读取文件(File)
logstash使用一个名为filewatch的ruby gem库来监听文件变化,并通过一个叫.sincedb的数据库文件来记录被监听的日志文件的读取进度(时间戳),这个sincedb数据文件的默认路径在 <path.data>/plugins/inputs/file下面,文件名类似于.sincedb_452905a167cf4509fd08acb964fdb20c,而<path.data>表示logstash插件存储目录,默认LOGSTASH_HOME/data。
如下图:
接下来,我们来看一个配置文件:如下图:
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收集输出的日志都加了几个字段:
1,@timestamp时间戳字段 :收取日志的时间 2,host字段:表示日志来自哪台机器 3, @version版本字段
2,读取标准输入,我们再来看一个配置文件,如下图
配置文件解析:
1,input接受标准输入的信息,然后在接受到的信息里添加字段、添加tag标记,并标记该事件类型为testlogstash.
接下来,我们启动服务。
服务启动成功,我们从键盘输入一些信息,输出结果如下:
那么在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
第三步:我们来看一下Logstash的配置文件
这个配置文件的意思是:通过5514端口监听到数据后发送到标准输出,对吧,我们来执行一下整个流程:
注意:我们应该先启动Lostash服务,因为端口启动后,日志才能正常发送过来,否则,可能会出现日志传输找不到端口的错误。
先起动Logstash,如下图:
然后再修改syslog配置文件,如下图:日志输出正常
表明,logstash已经通过5044端口接收到rsyslog系统文件的日志啦,对吧,那么我们来看一下截图的具体信息,发现,输出的结果多了新增了很多字段。这些字段都是默认就添加的。比如:
1,timestamp 真实的事件日志产生的具体时间,注意与@timestamp的区别
2,message的日志分为了多个字段存储下来
那么,其实以上这些都是logstash filter插件的默认的过滤机制
本节我们通过三个列子实战讲了一下Logstash Input插件,详细讲解了它的功能、用法。想必通过此章节的讲解应该,大家更应该有了更直接的理解,感受,那么大家结合官网的文档,再去更多的总结学习一下吧,下一章节,我们讲它的另外一个插件,filter插件。跟着来吧~~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。