SpringBoot 整合 elk

2019-05-19 14:20发布

一、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 ,并使用logback 记录日志。

1. pom.xml


xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
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





source="spring.application.name" />



value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />



INFO



${CONSOLE_LOG_PATTERN}
utf8



class="net.logstash.logback.appender.LogstashTcpSocketAppender">
127.0.0.1:5044

class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">


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 输入*,匹配所有数据。

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

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

文章来源: https://www.toutiao.com/group/6691934753219674635/