SpringBoot 整合 elk
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 整合 elk相关的知识,希望对你有一定的参考价值。
参考技术A 一、elk 简介二、elk的安装
我们采用的 docker 镜像安装。
由于sebp/elk中logstash的input的方式默认是filebeat,首先们需要进入elk容器中修改input方式。logstash默认会将etc/logstash/conf.d/中的配置文件进行整合然后启动。
修改 02-beats-input.conf 文件,修改如下:
保存后,我们使用 control + P + Q 退出容器。然后重启容器,让我们的配置生效。
我们访问http://127.0.0.1:5601
三、创建工程
创建工程springboot-elk ,并使用logback 记录日志。
1. pom.xml
2. 启动类
3. logback-spring.xml
启动工程,日志会存入elasticsearch中,通过Kibana 的web界面,配置后,我们就可看到,下面我简单的修改下配置。
三、配置 pattern
配置 pattern 输入*,匹配所有数据。
选择时间@timestamp,这样数据展示会以时间排序
好了 ,点击discover,就可以看到我们springboot-elk项目的日志信息了。
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 7 output { 8 elasticsearch { 9 hosts => ["http://10.0.0.5:9200", "http://10.0.0.13:9200", "http://10.0.0.17:9200"] 10 index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" 11 #user => "elastic" 12 #password => "changeme" 13 } 14 }
在上面的配置中,输入数据源为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,下载命令如下:
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修改配置:
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"]
主要配置的是日志的搜集目录为/var/log/service-hi.log,这个目录是应用service-hi输出日志的文件。输出到logstsh的地址为192.168.1.4
启动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 6 public static void main(String[] args) { 7 SpringApplication.run(ElkTestApplication.class, args); 8 new ElkTestApplication().initTask(); 9 } 10 11 private void initTask(){ 12 Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new Runnable() { 13 @Override 14 public void run() { 15 logger.info("seed:"+random.nextInt(999999)); 16 } 17 },100,100, TimeUnit.MILLISECONDS); 18 } 19 }
然后在部署了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
这时的日志数据的传输路径如下图:
在kibana组件上查看,可以看到创建了一个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
————————————————
版权声明:本文为CSDN博主「方志朋」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/forezp/article/details/98322521
以上是关于SpringBoot 整合 elk的主要内容,如果未能解决你的问题,请参考以下文章
[SpringBoot系列]SpringBoot如何整合SSMP
SpringBoot完成SSM整合之SpringBoot整合junit