最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 服务器 > 系统运维 >
如何进行Logstash 6安装与配置
linuxe发表于 2020-10-21 11:44 次浏览
Logstash简介
 
Logstash是一个开源的,服务端的数据处理管道,用来同时地从大量的数据源收集数据,转换数据,然后将数据发送到你最喜欢的存储地方,我们通常选择Elasticsearch。

一、Logstash安装步骤

1、在ELK官网www.elastic.co下载Logstash 6.3,其他版本安装方式基本一致。Logstash比较重量级的原因是它也需要依赖JAVA环境,所以依然要提前配置JDK。如果是使用的ES7版本,那么已经内置了OpenJDK可以用,只需要配置好JAVA环境变量即可

1 tar zxf logstash-6.3.tar.gz
2 mv logstash-6.3 /usr/local/
3 ln -s logstash-6.3.logstash

 

二、如何启动Logstash

Logstash有2个配置文件,一个是config/logstash.yml,该配置文件可以修改启动进程数、日志信息、持久化、持久化队列设置等;另一个是jvm.options,这个和Elasticsearch是一样的,主要是优化内存。2个配置文件不做任何修改也是可以启动Logstash的,启动脚本放在bin目录中,下面先使用命令行模式启动(需要注意的是不能用root用户来运行):

1 bin/logstash -e 'input{ stdin{} } output{ stdout{} }'  #-e代表使用命令行模式,采用标准输入,标准输出
2 Settings: Default pipeline workers: 1
3 Pipeline main started
4 hello world  #这里手动输入的hello world,作为标准输入
5 2016-05-19T01:59:03.797Z 0.0.0.0 hello world  #标准输出的结果显示在屏幕
6 nihao
7 2016-05-19T02:00:20.013Z 0.0.0.0 nihao

 

还可以使用codec风格指定输出格式(codec是一种解码编码的工具)

1 ./logstash -e 'input{ stdin{} } output{ stdout{codec => rubydebug} }'  # -e选项是直接用命令行模式,输入采用标准输入,输出采用的codec风格
2 Settings: Default pipeline workers: 1
3 Pipeline main started
4 hello world
5 {
6        "message" => "hello world",  #输入的内容
7       "@version" => "1",  #版本号
8     "@timestamp" => "2016-05-19T02:09:43.921Z",  #自动生成时间戳
9           "host" => "0.0.0.0"  #数据是由哪个节点发过来的

 

三、自定义Logstash配置

在生产环境中需要用到的规则非常复杂,需要自定义规则文件然后让Logstash根据规则进行工作。自定义配置文件时,主要配置的内容包括input(用于指定输入源,包含本地日志、redis、stdin标准输入等多种方式)、filter(进行规则过滤和处理,重头戏)、output(指定输出目标)。下面是一个配置示例:

1 input{
2   stdin {}
3 }
4  
5 output{
6   stdout{
7     codec  => rubydebug
8   }
9 }

 

启动服务时加上-t选项可以检查配置文件是否正确,-f选项就是配置文件的路径

1 nohup logstash -t  -f /etc/logstash.conf &

启动成功后会看到Pipeline main started这样的信息出来,这个时候我们就可以输入信息给Logstash了,我们输入的信息会通过标准输出显示到屏幕上,如图:

 

四、自定义Logstash输入与输出数据源

在Logstash中输入的数据可以通过很多种方式获取,比如本地日志文件、filebeat、数据库等。而输出也可以指定到需要的容器中,如Elasticsearch。

 

1、使用file插件将本地文件作为Logstash输入。下面是一个使用file插件的简单案例,由于output依然是标准输出,所以会有疯狂刷屏的情况出现:

01 vi etc/logstash.conf                                  
02 input {
03   file {
04     path => [ "/var/log/message","/var/log/*.log" ]  #文件路径
05     exclude => "/var/log/*.gz"  #排除不需要监听的文件
06     type => "system"  #自定义事件的类型,可用于后续的条件判断
07     add_field => {"key" => "test"}  #自定义新增字段
08     start_position => "beginning"  #从日志文件头部读取,相反还有end
09   }
10 }
11  
12 output {
13   stdout {
14     codec => rubydebug
15   }
16 }

 

 

file插件使用了一个sincedb文件来记录当前文件读区位置,即使重新启动服务也不会丢失文件的读取位置。默认情况下sincedb文件放在运行Logstash的用户的主目录中,可以用sincedb_path选项自定义存放路径。

 

2、将Logstash收集到的数据提交给Elasticsearch

这里需要使用一个output插件——elasticsearch。使用方法也很简单,只需要在配置文件里指定插件就可以了,如下:

 

01 [root@server ~]# cat /etc/logstash.conf  
02 input{
03   file{ 
04     path=> "/var/log/audit/audit.log"
05     type=> "system"
06     start_position=> "beginning"
07   }
08 }
09 output{
10   elasticsearch{  #输出到es
11     hosts=> ["192.168.44.129:9200","192.168.44.130:9200"]
12   }
13 }

 

文件设置好了后运行logstash的程序,再到Elasticsearch或者Kibana就可以查看到数据了,如果Logstash的配置文件发生了变化只需要重启Logstash即可,Elasticsearch和Kibana里的数据都会自动更新。因为Logstash不会占用端口,加-w选项可以启动多个线程,提高效率,默认是2,例

1 nohup /logstash/bin/logstash  -f /etc/logstash.conf -w 4 &

 

 

五、Logstash多实例的配置

1、复制logstash/config目录

 

2、修改新目录中的logstash.yml以下配置

1 node.name: instance2  #实例2的节点名称
2 path.data: /data/instance2  #实例2的数据路径
3 path.config: /etc/logstash2.conf  #实例2的配置文件

 

3、启动服务即可


标签:logstash配置
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐
2020-10-27 15:49:29 关键词:logstash配置
摘要:logstash是一个数据分析软件,主要目的是分析log日志, logstash是一个强大的分析后端日志的开源软件,本文详细介绍了logstash如何使用if判断与多索引创建。 01 input{ 02 file{ 03 path=/usr/loc..
2020-10-23 17:17:55 关键词:logstash配置
摘要:有些日志是分多行输出的,为了能正确的处理这些多行的事件,logstash必须哪些行是单一事件的一部分。多行事件处理是比较复杂的,需依赖正确的事件顺序。最佳方法是尽早的在管道..
2020-10-23 17:15:56 关键词:logstash配置
摘要:Filter是Logstash功能强大的主要原因,它可以对Logstash Event进行丰富的处理,比如说解析数据、删除字段、类型转换等等,常见的有如下几个: 1、date插件 用于日期转换,将日期类型的字..