搜索
您的当前位置:首页正文

使用Spring Cloud Sleuth跟踪微服务

来源:二三娱乐

转载:为了以后使用

return "Hello World";

}

让我们使用该方法作为你的web应用的直接调用,增加@RestController在类级别,增加@RequestMapping("/")到home方法:
@SpringBootApplication

@RestController

public class SleuthSampleApplication {

public static void main(String[] args) {

SpringApplication.run(SleuthSampleApplication.class, args);

}

@RequestMapping("/")

public String home() {

LOG.log(Level.INFO, "you called home");

return "Hello World";

}

}

public String home() {

LOG.log(Level.INFO, "you called home");

return "Hello World";

}

当你再访问这个应用时,在console后台会看到日志输出:
2016-06-15 16:55:56.334 INFO [slueth-sample,44462edc42f2ae73,44462edc42f2ae73,false] 13978 --- [nio-8080-exec-1] com.example.SleuthSampleApplication : calling home
Sleuth加入的是[slueth-sample,44462edc42f2ae73,44462edc42f2ae73,false],这是什么意思?第一个部分是应用名称,也就是前面你在bootstrap.yml中设置spring.application.name的值,第二个值是trace ID,第三个是span ID,最后值显示span是否应该导出到Zipkin。
除了向日志语句添加额外的跟踪信息外,Spring Cloud Sleuth在调用其他微服务时还提供了一些重要的好处。 记住,这里的真正的问题不是在单个微服务中识别日志,而是在多个微服务之间跟踪一个请求链。 微服务通常使用REST API与异步地通过消息中心互相交互。 Sleuth可以在任一情况下提供跟踪信息,但在本示例中,下面我们将了解REST API调用的工作原理。
让我们使用RestTemplate了解应用调用是如何工作的。修改我们的应用类:
private static final Logger LOG = Logger.getLogger(SleuthSampleApplication.class.getName());

@Autowired private RestTemplate restTemplate;

public static void main(String[] args) {

SpringApplication.run(SleuthSampleApplication.class, args);

}

@Bean public RestTemplate getRestTemplate() {

return new RestTemplate();

}

@RequestMapping("/") public String home() {

LOG.log(Level.INFO, "you called home");

return "Hello World";

}

@RequestMapping("/callhome") public String callHome() {

LOG.log(Level.INFO, "calling home");

}

Top