ELK教程3:logstash的部署SpringBoot整合ELK+Filebeat

Posted 方志朋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK教程3:logstash的部署SpringBoot整合ELK+Filebeat相关的知识,希望对你有一定的参考价值。

本篇文章主要讲解如下安装Logstash,logstash依赖于Java环境,首先安装Java,安装脚本如下:

 
   
   
 
  1. yum install java

logstash安装

Logstash的安装脚本如下:

 
   
   
 
  1. # 下载logstash的压缩包

  2. wget https://artifacts.elastic.co/downloads/logstash/logstash-7.2.0.zip

  3. # 解压压缩包

  4. upzip logstash-7.2.0.zip

  5. # 将解压的包移到/usr/share目录下

  6. mv logstash-7.2.0 /usr/share/

  7. cd /usr/share/logstash-7.2.0/

stash第一个事件

Logstash管道有两个必需元素,输入和输出,以及一个可选元素filter。 输入插件使用来自源的数据,过滤器插件在您指定时修改数据,输出插件将数据写入目标。 如下如

要测试Logstash安装成功,运行最基本的Logstash管道。 执行以下的命令

 
   
   
 
  1. bin/logstash -e 'input { stdin { } } output { stdout {} }'

-e标志使您可以直接从命令行指定配置。 通过在命令行指定配置,可以快速测试配置,而无需在迭代之间编辑文件。 示例中的管道从标准输入stdin获取输入,并以结构化格式将输入移动到标准输出stdout。 启动Logstash后,等到看到“Pipeline main started”,然后在命令提示符下输入hello world,显示的如下:

 
   
   
 
  1. hello world

  2. {

  3. "host" => "VM_0_13_centos",

  4. "message" => "hello world",

  5. "@version" => "1",

  6. "@timestamp" => 2019-07-02T06:26:28.684Z

  7. }

配置logstash输出到elasticsearch

修改logstash的安装目录的config目录下的logstash-sample.conf文件,配置如下:

 
   
   
 
  1. input {

  2. beats {

  3. port => 5044

  4. }

  5. }


  6. output {

  7. elasticsearch {

  8. hosts => ["http://10.0.0.5:9200", "http://10.0.0.13:9200", "http://10.0.0.17:9200"]

  9. index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"

  10. #user => "elastic"

  11. #password => "changeme"

  12. }

  13. }

在上面的配置中,输入数据源为filebeat,关于filebeat见下一小节,输出源为elasticsearch。更多的输入和输出源的配置见官网https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html

用下面的命令从后台启动logstash:

 
   
   
 
  1. ./bin/logstash -f config/logstash-sample.conf >logstash.log 2>&1 &

logstash结合filebeat

在分布式系统中,一台主机可能有多个应用,应用将日志输出到主机的指定目录,这时由logstash来搬运日志并解析日志,然后输出到elasticsearch上。由于于 logstash是java应用,解析日志是非的消耗cpu和内存,logstash安装在应用部署的机器上显得非常的笨重。最常见的做法是用filebeat部署在应用的机器上,logstash单独部署,然后由 filebeat将日志输出给logstash解析,解析完由logstash再传给elasticsearch。

下载filebeat,下载命令如下:

 
   
   
 
  1. wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-linux-x86_64.tar.gz

  2. tar -zxvf filebeat-7.2.0-linux-x86_64.tar.gz

  3. mv filebeat-7.2.0-linux-x86_64 /usr/share/

  4. cd /usr/share/filebeat-7.2.0-linux-x86_64/

vim filebeat.yml修改配置:

 
   
   
 
  1. filebeat.inputs:

  2. - type: log

  3. enabled: true

  4. paths:

  5. - /var/log/service-hi.log

  6. output.logstash:

  7. hosts: ["192.168.1.4:5044"]

启动filebeat,执行一下命令:

 
   
   
 
  1. sudo chown root filebeat.yml

  2. sudo ./filebeat -e >filebeat.log 2>&1 &

Spring Boot整合ELK+Filebear构建日志系统

在SpringBoot应用service-hi,定时输出日志如下:

 
   
   
 
  1. @SpringBootApplication

  2. public class ElkTestApplication {

  3. Logger logger= LoggerFactory.getLogger(ElkTestApplication.class);

  4. Random random=new Random(10000);


  5. public static void main(String[] args) {

  6. SpringApplication.run(ElkTestApplication.class, args);

  7. new ElkTestApplication().initTask();

  8. }


  9. private void initTask(){

  10. Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new Runnable() {

  11. @Override

  12. public void run() {

  13. logger.info("seed:"+random.nextInt(999999));

  14. }

  15. },100,100, TimeUnit.MILLISECONDS);

  16. }

  17. }

然后在部署了filebeat的机器上部署该应用,应用的输出文件为/var/log/service-hi.log,应用启动命令如下:

 
   
   
 
  1. nohup java -jar elk-test-0.0.1-SNAPSHOT.jar > /var/log/service-hi.log 2>&1 &

应用启动成功后日志输出如下:

 
   
   
 
  1. 2019-07-02 17:13:13.530 INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication : seed:562779

  2. 2019-07-02 17:13:13.630 INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication : seed:963836

  3. 2019-07-02 17:13:13.730 INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication : seed:825694

  4. 2019-07-02 17:13:13.830 INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication : seed:33228

  5. 2019-07-02 17:13:13.930 INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication : seed:685589

这时的日志数据的传输路径如下图: ELK教程3:logstash的部署、SpringBoot整合ELK+Filebeat

在kibana组件上查看,可以看到创建了一个filebeat开头的数据索引,如下图:

ELK教程3:logstash的部署、SpringBoot整合ELK+Filebeat

在日志搜索界面,可以看到service-hi应用输出的日志,如图所示:

参考资料

https://www.elastic.co/guide/en/logstash/7.2/installing-logstash.html#_yum https://www.elastic.co/guide/en/logstash/7.2/first-event.html https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html


热门内容:








喜欢就点个"在看"呗^_^

以上是关于ELK教程3:logstash的部署SpringBoot整合ELK+Filebeat的主要内容,如果未能解决你的问题,请参考以下文章

Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat)

Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat)

Docker ElK安装部署使用教程

Docker ElK安装部署使用教程

rpm包部署elk7.3

ELK 之数据收集传输过滤 Filebeat+Logstash 部署