1. 首页
  2. 2019-zp

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

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

yum install java

logstash安装

Logstash的安装脚本如下:

# 下载logstash的压缩包
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.2.0.zip
# 解压压缩包
upzip logstash-7.2.0.zip
# 将解压的包移到/usr/share目录下
mv logstash-7.2.0 /usr/share/
cd /usr/share/logstash-7.2.0/

stash第一个事件

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

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

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

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

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

hello world
{
          "host" => "VM_0_13_centos",
       "message" => "hello world",
      "@version" => "1",
    "@timestamp" => 2019-07-02T06:26:28.684Z
}

配置logstash输出到elasticsearch

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

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://10.0.0.5:9200", "http://10.0.0.13:9200", "http://10.0.0.17:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

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

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

./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,下载命令如下:

 wget  https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-linux-x86_64.tar.gz
tar -zxvf filebeat-7.2.0-linux-x86_64.tar.gz
mv filebeat-7.2.0-linux-x86_64 /usr/share/
cd /usr/share/filebeat-7.2.0-linux-x86_64/

vim filebeat.yml修改配置:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/service-hi.log
output.logstash:
  hosts: ["192.168.1.4:5044"]

主要配置的是日志的搜集目录为/var/log/service-hi.log,这个目录是应用service-hi输出日志的文件。输出到logstsh的地址为192.168.1.4

启动filebeat,执行一下命令:

sudo chown root filebeat.yml
sudo ./filebeat -e >filebeat.log 2>&1 &

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

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

@SpringBootApplication
public class ElkTestApplication {
    Logger logger= LoggerFactory.getLogger(ElkTestApplication.class);
    Random random=new Random(10000);

    public static void main(String[] args) {
        SpringApplication.run(ElkTestApplication.class, args);
        new ElkTestApplication().initTask();
    }

    private void initTask(){
        Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                logger.info("seed:"+random.nextInt(999999));
            }
        },100,100, TimeUnit.MILLISECONDS);
    }
}

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

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

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

2019-07-02 17:13:13.530  INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication   : seed:562779
2019-07-02 17:13:13.630  INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication   : seed:963836
2019-07-02 17:13:13.730  INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication   : seed:825694
2019-07-02 17:13:13.830  INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication   : seed:33228
2019-07-02 17:13:13.930  INFO 31579 --- [pool-1-thread-1] com.example.elktest.ElkTestApplication   : seed:685589

这时的日志数据的传输路径如下图:
1.png

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

微信截图_20190702170554.png

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

微信截图_20190702171411.png

参考资料

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

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「方志朋」,公众号后台回复「666」 免费领取我精心整理的进阶资源教程
  4. JS中文网,Javascriptc中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,是给开发者用的 Hacker News,技术文章由为你筛选出最优质的干货,其中包括:Android、iOS、前端、后端等方面的内容。目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。

    本文著作权归作者所有,如若转载,请注明出处

    转载请注明:文章转载自「 Java极客技术学习 」https://www.javajike.com

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

    链接:https://www.javajike.com/article/2045.html

« spring cloud config将配置存储在数据库中
ELK教程2:Kibana的安装»

相关推荐

QR code