SpringCloud分布式日志采集方案

SpringCloud分布式日志采集方案

2023年7月17日发(作者:)

SpringCloud分布式⽇志采集⽅案由于微服务架构中每个服务可能分散在不同的服务器上,因此需要⼀套分布式⽇志的解决⽅案。spring-cloud提供了⼀个⽤来trace服务的组件sleuth。它可以通过⽇志获得服务的依赖关系。基于sleuth,可以通过现有的⽇志⼯具实现分布式⽇志的采集。这⾥使⽤的是ELK,也就是elasticsearch、logstash、kibana。⼀、sleuth第⼀步:sleuth管理端sleuth⼀般单独放在⼀个⼯程中。需要添加如下依赖

zipkin-autoconfigure-ui

runtime

zipkin-server

配置服务注册中⼼的地址eureka:

client:

serviceUrl:

defaultZone: localhost:1111/eureka/启动类加⼊服务发现的注解和zipkin的注解,如下package ;

import Application;import BootApplication;import DiscoveryClient;

import ZipkinServer;

@EnableDiscoveryClient

@EnableZipkinServer

@SpringBootApplication

public class Application {

public static void main(String[] args) {

(, args);

}

}这个时候启动并访问该微服务的地址,可以看到zipkin的管理页⾯了第⼆步:被管理的微服务端在我们的其他微服务端需要简单的配置,纳⼊到zipkin的管理之中引⼊依赖

spring-cloud-starter-sleuth

spring-cloud-sleuth-zipkin

加⼊如下配置spring:

sleuth:

sampler:

percentage: 1 zipkin:

base-url: localhost:tage:这个参数的意思是抓取100%的⽇志,只有通过抓取⽇志,才能获知依赖关系。但是如果始终抓取⽇志的话对性能会有影响,因此可以⾃⼰配置。⼀般在开发环境,该值设置为1,⽣产环境视情况⽽定。-url:为第⼀步配置的zipkin管理端微服务的地址现在分别启动服务注册中⼼,⽹关,需要的微服务,以及sleuth。随便调⽤⼀个微服务然后我们可以看到相关的跟踪⽇志同样我们也可以看到微服务之间的依赖关系,这⾥是通过⽹关调⽤了myservice-consumer-feign微服务,然后通过myservice-consumer-feign微服务调⽤了myservice-provider微服务⼆、搭建ELK1、elasticsearch的安装与配置,由于之前的⽂章已经介绍了elasticsearch的单点,集群的安装,head插件的安装。这⾥不再总结。2、kibana的安装,没什么好说的,解压,运⾏就可以了3、logstash的安装,解压即可在config下新建配置⽂件output {input { tcp { port => 4560 codec => json_lines }}

output { elasticsearch { hosts => ["192.168.160.66:9200","192.168.160.88:9200","192.168.160.166:9200"] index => "applog" }}其中port为端⼝号,codec表⽰通过json格式,表⽰elasticsearch的地址,这⾥是集群。index 为⽇志存储的elasticsearch索引。启动需要调⽤bin下的logstash命令,通过-f指定配置⽂件4、使⽤kibana启动elasticsearch、head、kibana、logstash创建索引applog将applog配置到kibana中,在index pattern中输⼊我们的applog索引最后点击create即可点击菜单中的discover即可查看⽇志三、logback配置spring-cloud、logstash都是⽀持logback的,因此需要为微服务配置好相应的这⾥值得注意的是,在spring-boot中,的加载在之前。⽽我们需要在中使⽤。因此,我们需要把配置提到中。加载顺序为,,相⽐普通的,我们主要配置这⼏样东西,logstash的appender这⾥提供⼀个的例⼦

source="" />

true ${CONSOLE_LOG_PATTERN} utf8

192.168.160.66:4560

UTC { "severity":"%level", "service": "${springAppName:-}",

"trace": "%X{X-B3-TraceId:-}",

"span": "%X{X-B3-SpanId:-}", "span": "%X{X-B3-SpanId:-}",

"exportable": "%X{X-Span-Export:-}",

"pid": "${PID:-}",

"thread": "%thread",

"class": "%logger{40}",

"rest": "%message"

}

main.%d{yyyy-MM-dd}.log 30

%d{HH:mm:} [%thread] %-5level %logger{35} - %msg %n

DEBUG

我们把message信息配置到了rest字段中。三、查询⽇志启动服务注册中⼼,⽹关,需要的微服务,以及sleuth。启动elasticsearch,head,kibana,logstash,随便运⾏⼀个服务,⽐如这⾥会输出⼀⾏⽇志,内容为myService-provider userController,通过⽹关调⽤eclipse控制台输出⽇志在kibana中搜索⽇志我们看到⽇志信息在rest字段中。另外,通过trace和span还可以跟踪到整个微服务的调⽤过程。到此为⽌,整个⽇志采集就搭建完成了。系统上线后只需要在elasticsearch中就能搜索到各个服务器上,各个微服务的⽇志内容了。

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689542185a264705.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信