spring cloud分布式日志链路跟踪

首先要明白一点,为什么要使用链路跟踪?

当我们微服务之间调用的时候可能会出错,但是我们不知道是哪个服务的问题,这时候就可以通过日志链路跟踪发现哪个服务出错。

它还有一个好处:当我们在企业中,可能每个人都负责一个服务,我们可以通过日志来检查自己所负责的服务不会出错,当调用其它服务时,这时候出现错误,那么就可以判定出不是自己的服务出错,从而也可以发现责任不是自己的。

基于微服务之间的调用开始,如果看不懂的小伙伴,请先参考我上篇:spring cloud中微服务之间的调用以及eureka的自我保护机制

spring cloud分布式日志链路跟踪
首先,我们先在project-solr和project-shopping-mall里加配置:

project-solr中的application.yml:

logging:
path: D:worklogsproject-solr #打印存放日志的路径
level:
com.gaofei: info #包名下日志的级别
project-shopping-mall中的application.yml:

logging:
path: D:worklogsproject-shopping-mall #打印存放日志的路径
level:
com.gaofei: info #包下面日志级别
大家可以看出我两个服务里的日志存放的路径不一样,这样也便于区分

在project-solr里的constroller里:

@RestController//这里使此Constroller中所有的方法返回的不是页面
public class SolrSearchConstroller {
public static Logger logger=LoggerFactory.getLogger(SolrSearchConstroller.class);br/>@RequestMapping("/SolrSearch")
public String SolrSearch(){
logger.info("Solr被调用");
return "这里是Solr";
}
}
在project-shopping-mall里的constroller:

@Controller
public class PageController {
public static Logger logger=LoggerFactory.getLogger(PageController.class);br/>@Autowired
private RestTemplate restTemplate;
br/>@RequestMapping("/toIndex")
public String toIndex(Model model){
logger.info("执行调用");
String msg=restTemplate.getForEntity("
http://project-solr/SolrSearch",String.class).getBody();//project-solr是调用注册中心里的名字
logger.info("调用结束");
model.addAttribute("msg",msg);
return "/index";
}
}
接下来执行:

spring cloud分布式日志链路跟踪
在这里如果没有logs后面的目录它会自动创建

点开两个日志文件:

spring cloud分布式日志链路跟踪
这里因为我运行刷新了3次,所以执行了3次,而两个日志里也对应了三次

如果其中一条报错那么也很快可以找到答案,并且知道哪个日志里报错,也就对应了哪个服务报错

那么问题来了,如果我们在开发中,一天可能会运行n次,那么其中某次运行报错,我们就要在n次调用时来找对应的服务,那么怎么办,我们不可能一一对应查找

这时候我们可以进行链路追踪,只需要在对应的服务器build.gradle加上Spring Cloud Sleuth依赖

//分布式链路依赖
compile group: ‘org.springframework.cloud‘, name: ‘spring-cloud-starter-sleuth‘
这里我只用到了两个服务project-solr和project-shopping-mall,所以这里就在这两个服务build.gradle中添加

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

之后执行,打开存放的日志:

spring cloud分布式日志链路跟踪
这里我运行刷新了n次,那么怎么在另一个服务找到对应的调用呢?大家仔细看一下红块中的链路是不是对应相应的服务

我随便拿一个进行查找

spring cloud分布式日志链路跟踪
通过查找可以发现,可以找到对应的链路,那么也就是每次运行都会出现一个链路,可以来查找相应服务的操作是否执行成功,那么这也就是链路追踪

原文地址:http://blog.51cto.com/13954634/2329128

时间: 2024-11-09 10:00:50

spring cloud分布式日志链路跟踪的相关文章

spring cloud分布式使用日志链路跟踪

首先要明白一点,为什么要使用链路跟踪? 当我们微服务之间调用的时候可能会出错,但是我们不知道是哪个服务的问题,这时候就可以通过日志链路跟踪发现哪个服务出错. 它还有一个好处:当我们在企业中,可能每个人都负责一个服务,我们可以通过日志来检查自己所负责的服务不会出错,当调用其它服务时,这时候出现错误,那么就可以判定出不是自己的服务出错,从而也可以发现责任不是自己的. 基于微服务之间的调用开始,如果看不懂的小伙伴,请先参考我上篇博客:spring cloud中微服务之间的调用以及eureka的自我保护

spring cloud 分布式链路跟踪(集成zipkin)

篇写了分布式链路追踪  spring cloud 分布式链路追踪 这样的链路追踪虽然可以解决问题 但日志太过于分散 如果微服务过多 就会变的相当复杂 zipkin就可以帮我们把链路调用的过程全部收集起来 它就像注册中心一样 分为客户端和服务端 想要使用 首先建一个模块 当作他的服务端 首先添加如下依赖 compile 'io.zipkin.java:zipkin-server' compile 'io.zipkin.java:zipkin-autoconfigure-ui' 在配置文件中配置它的

Spring Cloud 分布式事务管理

Spring Cloud 分布式事务管理 在微服务如火如荼的情况下,越来越多的项目开始尝试改造成微服务架构,微服务即带来了项目开发的方便性,又提高了运维难度以及网络不可靠的概率. Spring Cloud 分布式事务管理 单体式架构 微服务架构 优点: 缺点: 分布式事务的引入 分布式事务解决方案 基于XA协议的两阶段提交 消息事务+最终一致性 TCC编程模式 具体实现 LCN ByteTCC 在说微服务的优缺点时,有对比才会更加明显,首先说一下单体式结构 单体式架构 在单体式架构中,系统通常采

漫谈spring cloud分布式服务架构

详情请交流  QQ  709639943 01.漫谈spring cloud 与 spring boot 基础架构 02.漫谈spring cloud分布式服务架构 03.Node.js入门到企业Web开发中的应用 04.精通高级RxJava 2响应式编程思想 05.Java秒杀系统方案优化 高性能高并发实战 06.Java深入微服务原理改造房产销售平台 07.快速上手Linux 玩转典型应用 08.快速上手Ionic3 多平台开发企业级问答社区 09.Java Spring Security开

Spring Cloud 分布式链路跟踪 Sleuth + Zipkin + Elasticsear

随着业务越来越复杂,系统也随之进行各种拆分,特别是随着微服务架构的兴起,看似一个简单的应用,后台可能很多服务在支撑:一个请求可能需要多个服务的调用:当请求迟缓或不可用时,无法得知是哪个微服务引起的,这时就需要解决如何快速定位服务故障点,Zipkin 分布式跟踪系统就能很好的解决这样的问题. 那么到底怎么使用呢?接下来完成一个具体的实例来体会一把微服务链路追踪: 本文使用的 Spring Cloud Finchley 版本,和其他版本会有不同 我们使用user-service,order-serv

为什么我选择了 SPRING CLOUD 分布式 微服务

常见的架构单体架构单体架构在小微企业比较常见,一个应用.一个数据库.一个web容器就可以跑起来.在两种情况下可能会选择单体架构:一.在企业发展的初期,为了保证快速上线,采用此种方案较为简单灵活:二.传统企业中垂直度较高,访问压力较小的业务.在这种模式下对技术要求较低,方便各层次开发人员接手,也能满足客户需求.?单体架构的架构图: 在单体架构中,技术选型非常灵活,优先满足快速上线的要求,也便于快速跟进市场.?垂直架构在单体架构发展一段时间后,公司的业务模式得到了认可,交易量也慢慢的大起来.这时候为

SpringCloud Sleuth 分布式请求链路跟踪

一.概述 ? 在微服务框架中,一个客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败.SpringCloud Sleuth 提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了zipkin .官方文档地址:https://cloud.spring.io/spring-cloud-static/spring-cloud-sleut

spring cloud 分布式配置(使用git进行远程配置)

我们使用分布式架构 搭建项目时 就比如说我们更改了数据库的密码 那如果有十几个微服务配置在不同的服务器上 我们是不是得一个一个服务器的去更改 那样就相当的麻烦 不光麻烦 还及其容易错 所以基本是不可能这样实现 这里有一个解决方式 可以把项目的配置放到gitlab上 从gitlab来读取 这样就方便了我们的配置 那么就要登陆到gitlab上创建账号 发布项目 等等 这些东西可以到 https://blog.csdn.net/Adelly/article/details/79099772 这个教程看

Spring Cloud同步场景分布式事务怎样做?试试Seata

一.概述 在微服务架构下,虽然我们会尽量避免分布式事务,但是只要业务复杂的情况下这是一个绕不开的问题,如何保证业务数据一致性呢?本文主要介绍同步场景下使用Seata的AT模式来解决一致性问题. Seata是 阿里巴巴 开源的 一站式分布式事务解决方案 中间件,以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题 ? 二.Seata介绍 整体事务逻辑是基于 两阶段提交 的模型,核心概念包括以下3个角色: TM:事务的发起者.用来告诉 TC,全局事务的开始,提交,回滚.