SpringBoot 整合 elk

javaspring思维导图 2019-05-19 12:20:00

一、elk 简介

  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
  • Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

二、elk的安装

我们采用的 docker 镜像安装。

#下载镜像
docker pull sebp/elk
#启动镜像 , 指定es的内存
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 5601:5601 -p 5044:5044 -p 9200:9200 -p 9300:9300 -it --name elk 2fbf0a30426d

由于sebp/elk中logstash的input的方式默认是filebeat,首先需要进入elk容器中修改input方式。logstash默认会将etc/logstash/conf.d/中的配置文件进行整合然后启动。

#进入容器
docker exec -it elk /bin/bash 
#进入修改目录
cd etc/logstash/conf.d/

修改 02-beats-input.conf 文件,修改如下:

input { 
 tcp { 
 port => 5044 
 codec => json_lines 
 
 } 
 
} 
output{ 
 elasticsearch { 
 hosts => ["localhost:9200"] 
 
 } 
 
}

保存后,我们使用 control + P + Q 退出容器。然后重启容器,让我们的配置生效。

docker restart elk

我们访问http://127.0.0.1:5601

SpringBoot 整合 elk_第1张图片

 

三、创建工程

创建工程springboot-elk ,并使用logback 记录日志。

1. pom.xml


 4.0.0
 com.gf
 springboot-elk
 0.0.1-SNAPSHOT
 jar
 springboot-elk
 Demo project for Spring Boot
 
 org.springframework.boot
 spring-boot-starter-parent
 2.1.1.RELEASE
  
 
 
 UTF-8
 UTF-8
 1.8
 
 
 
 org.springframework.boot
 spring-boot-starter-web
 
 
 org.springframework.boot
 spring-boot-starter-test
 test
 
 
 
 ch.qos.logback
 logback-classic
 
 
 net.logstash.logback
 logstash-logback-encoder
 5.2
 
 
 
 
 
 org.springframework.boot
 spring-boot-maven-plugin
 
 true
 
 
 
 

2. 启动类

@RestController
@SpringBootApplication
public class SpringbootElkApplication {
 private final static Logger logger = LoggerFactory.getLogger( SpringbootElkApplication.class );
 public static void main(String[] args) {
 SpringApplication.run(SpringbootElkApplication.class, args);
 }
 @GetMapping("/{name}")
 public String hi(@PathVariable(value = "name") String name) {
 logger.info( "name = {}" , name );
 return "hi , " + name;
 }
}

3. logback-spring.xml



 
 
 
 
 
 
 
 
 
 INFO
 
 
 
 ${CONSOLE_LOG_PATTERN}
 utf8
 
 
 
 
 127.0.0.1:5044
 
 
 
 
 UTC
 
 
 
 {
 "severity": "%level",
 "service": "${springAppName:-}",
 "trace": "%X{X-B3-TraceId:-}",
 "span": "%X{X-B3-SpanId:-}",
 "exportable": "%X{X-Span-Export:-}",
 "pid": "${PID:-}",
 "thread": "%thread",
 "class": "%logger{40}",
 "rest": "%message"
 }
 
 
 
 
 
 
 
 
 
 
 

启动工程,日志会存入elasticsearch中,通过Kibana 的web界面,配置后,我们就可看到,下面我简单的修改下配置。

三、配置 pattern

配置 pattern 输入*,匹配所有数据。

SpringBoot 整合 elk_第2张图片

 

选择时间@timestamp,这样数据展示会以时间排序

SpringBoot 整合 elk_第3张图片

 

好了 ,点击discover,就可以看到我们springboot-elk项目的日志信息了。

SpringBoot 整合 elk_第4张图片

 

你可能感兴趣的:(SpringBoot 整合 elk)