由于微服务架构中的每个服务可能分散在不同的服务器上,因此需要分布式日志方案。spring-cloud为跟踪服务提供了一个组件侦探。它可以通过日志获取服务的依赖关系。基于sleuth,可以通过现有的日志工具实现分布式日志收集。这里使用了ELK,即elasticsearch、logstash、kibana。1.第一步sleuth:sleuth管理终端sleuth一般单独放在一个项目中。需要添加如下依赖>io.zipkin.javazipkin-server配置服务注册中心eureka的地址:client:serviceUrl:defaultZone:http://localhost:1111/eureka/启动类加入服务找到的注解和zipkin注解如下:packagecom.wlf.demo;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud。client.discovery.EnableDiscoveryClient;导入zipkin.server.EnableZipkinServer;@EnableDiscoveryClient@EnableZipkinServer@SpringBootApplication公共类应用程序{publicstaticvoidmain(String[]args){}}此时启动并访问微服务的地址,可以看到zipkin的管理页面推荐一个SpringBoot基础教程和实例:https://github.com/javastacks...第二步:托管微服务需要在我们其他微服务中进行简单配置,在zipkin的管理中引入依赖关系artifactId>spring-cloud-sleuth-zipkin添加如下配置spring:sleuth:sampler:percentage:1zipkin:base-url:http://localhost:9411spring.sleuth.sampler。percentage:这个参数表示抓取100%的日志。只有抓取日志才能知道依赖关系。但是如果一直抓日志,对性能会有影响,可以自行配置。一般在开发环境中,该值设置为1,生产环境视情况而定。spring.zipkin.base-url:第一步配置的zipkin管理微服务地址现在分别启动服务注册中心、网关、所需微服务、sleuth。只需调用一个微服务,然后我们就可以看到相关的跟踪日志。我们还可以看到微服务之间的依赖关系。这里通过网关调用myservice-consumer-feign微服务,然后通过myservice-consumer-feign微服务调用myservice-provider微服务2.搭建ELK1,安装配置elasticsearch。由于上一篇已经介绍了elasticsearch的单点,集群的安装,head插件的安装。这里我就不总结了。2.kibana的安装没什么好说的,解压运行即可。3、安装好logstash后,解压并在config下新建一个配置文件160.88:9200","192.168.160.166:9200"]index=>"applog"}}其中port为端口号,codec表示通过json格式,elasticsearch.hosts代表elasticsearch的地址,这里是集群。index是用于日志存储的elasticsearch索引。启动需要调用bin下的logstash命令,通过-f指定配置文件。4、使用kibana启动elasticsearch、head、kibana、logstash创建索引applog。配置applog到kibana,在indexpattern中输入我们的applogindex,最后点击create。您可以单击菜单中的发现来查看日志。3、logback配置spring-cloud和logstash都支持logback,所以需要为微服务配置相应的logback-spring.xml。这里值得注意的是,在spring-boot中,logback-spring.xml是在application.yml之前加载的。而我们需要在logback-spring.xml中使用spring.application.name。因此,我们需要在bootstrap.yml中提到spring.application.name的配置。加载顺序是bootstrap.yml,logback-spring.xml,application.yml和普通的logback-spring.xml相比,我们主要配置这些东西spring.application.name,logstashappender这里提供了一个logback-spring.xml的例子true${CONSOLE_LOG_PATTERN}utf8192.168.160.66:4560<时间戳>UTC{"严重性":"%level","服务":"${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"}main.logmain.%d{yyyy-MM-dd}.log30%d{HH:mm:ss.SSS}[%thread]%-5level%logger{35}-%msg%nDEBUG我们将message信息配置到rest字段中3.查询日志启动服务注册中心、网关、需要的微服务、sleuth。启动elasticsearch,head,kibana,logstash,随便跑一个服务。比如这里会输出一行日志,内容是myService-provideruserController,通过网关调用eclipse控制台输出日志。在kibana中搜索日志,可以看到日志信息在rest字段中。另外,trace和span也可以用来跟踪整个微服务的调用过程。至此,整个日志集合搭建完成。系统上线后,只需要在elasticsearch中搜索各个服务器和各个微服务的日志内容即可。版权声明:本文为CSDN博主“咕嘟一帅”原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。