本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告

ELK Stack——Logstash 6 安装与配置教程

发布:TangLu2019-4-16 18:06分类: ELK Stack 标签: ELK ElasticSearch logstash

Elasticsearch的安装与配置可以访问本站文章:http://www.linuxe.cn/post-295.html


本文开始讲解Logstash的安装与配置,实现日志的收集。我们需要在所有需要收集日志的服务器上安装Logstash,这样ElasticSearch才会有数据可管理。如果Logstash agent端过多,数据量太大,就需要在agentserver端之前部署消息队列,一般使用Redis,支持发布订阅等功能


一、Logstash安装步骤

1、下载Logstash 6.3

依然是在ELK的官方网站www.elastic.co,本文以二进制包进行Logstash的安装。Logstash比较重量级的原因是它也需要依赖JAVA环境,所以依然要提前配置JDK(目前只支持JDK8

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


2、配置与命令行启动Logstash

在Logstash目录下有很多子目录,但是大多数是不用去关注和修改的(仅有2个配置文件可能需要略微修改,一个是config/logstash.yml,可能需要修改启动进程数以及日志信息;一个是jvm.options,这个和Elasticsearch是一样的,主要是优化内存)。bin目录下有启动服务需要的脚本,现在可以用命令行来启动Logstash测试是否正常(需要注意的是不能用root用户来运行)

cd logstash-6.3
bin/logstash -e 'input{ stdin{} } output{ stdout{} }'  #-e选项是直接用命令行模式,采用标准输入,标准输出
Settings: Default pipeline workers: 1
Pipeline main started
hello world  #这里手动输入的hello world,作为标准输入
2016-05-19T01:59:03.797Z 0.0.0.0 hello world  #标准输出的结果显示在屏幕
nihao
2016-05-19T02:00:20.013Z 0.0.0.0 nihao


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

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


3、自定义Logstash配置文件

生产环境中需要用到的规则更为复杂,使用命令行显然不可取。所以可以自定义规则文件,然后让Logstash根据规则进行工作。下面是通过配置文件指定Logstash的数据输入输出的示例,配置文件里主要是写明input、output规则,filter规则是需要过滤内容时才会有:

input{
stdin {}
}

output{
        stdout{
                codec  => rubydebug
        }
}


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

logstash -t  -f /etc/logstash.conf

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


logstashconf2.png

在Logstash中输入的数据我们可以通过日志文件来获取,当然输出的数据我们也可以指定到自己需要的容器中,如Elasticsearch里。要通过日志文件来获取输入信息的话就需要用到最常用的input插件——file(官方文档里有详细介绍每个input插件的使用方式,output插件同理)。下面是一个使用file插件的简单案例,由于output依然是标准输出,所以会有疯狂刷屏的情况出现:

vi etc/logstash.conf                                   
input {
  file {
    path => [ "/var/log/secure" ]  #文件路径
    type => "system"  #自定义索引名称
    start_position => "beginning"  #从文件头部读取,相反还有end
  }
}

output {
  stdout {
    codec => rubydebug
  }
}


logstashconf3.png

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

总结:在实际工作中Logstash数据收集的一个流程大概是:数据源→通过input插件(如file、redis、stdin)→output插件写到Elasticsearch。在官网文档中可以看到有很多其他input插件,如图:

Logstash1.png

下面看看如何将Logstash收集到的数据提交给Elasticsearch。这里需要使用一个output插件——elasticsearch。使用方法也很简单,只需要在配置文件里指定插件就可以了,如下:


[root@server ~]# cat /etc/logstash.conf   
input{
  file{  
    path=> "/var/log/audit/audit.log"
    type=> "system"
    start_position=> "beginning"  
  }
}
output{
  elasticsearch{  #输出到es
    hosts=> ["192.168.44.129:9200","192.168.44.130:9200"]
  }
}


文件设置好了后运行logstash的程序,再到Elasticsearch或者Kibana就可以查看到数据了,如果Logstash的配置文件发生了变化只需要重启Logstash即可,Elasticsearch里的索引会自动更新,Kibana里显示的数据也是更新后的数据。

[root@server ~]# /usr/local/logstash/bin/logstash -f /etc/logstash.conf
 

QQ截图20160519175018.png

在生产环境中启动Logstash都是放后台运行,我们可以一次运行多个程序,因为Logstash不会占用端口,加-w选项可以启动多个线程,提高效率,默认是2,例:



nohup /logstash/bin/logstash agent -f /logstash/conf/indexer-xire.conf -w 4 &



温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《ELK Stack——Logstash 6 安装与配置教程
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-309.html  [生成短网址]

已有 0/13607 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~