微服务跟踪-Zipkin

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq847270942/article/details/80920844

Zipkin,是一种分布式跟踪系统。它有助于收集解决微服务架构中的延迟问题所需的时序数据。它管理这些数据的收集和查找。 Zipkin的设计基于Google Dapper论文。

在内部它有4个模块

  1. Collector - 一旦任何组件将跟踪数据发送到Zipkin收集器守护程序,它就会被Zipkin收集器验证,存储和索引以供查找。
  2. Storage - 此模块在后端存储和索引查找数据。 支持Cassandra,ElasticSearch和MySQL。
  3. Search - 此模块提供了一个简单的JSON API,用于查找和检索存储在后端的跟踪。 此API的主要使用者是Web UI。
  4. Web UI - 用于查看跟踪的非常好的UI界面。

安装

curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar

这里写图片描述

Sleuth

Sleuth是Spring Cloud家族的一款工具。 它用于生成trace id,span id并将这些信息添加到头文件和MDC中的服务调用中,以便它可以被Zipkin和ELK等工具使用。

Zipkin 和Sleuth 集成

创建微服务

创建Spring boot 应用 添加 Web, Rest Repository, Zipkinclient 和Sleuth 依赖.

package com.jaytech.mstracing.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpMethod;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.logging.Logger;

@RestController
public class ZipkinController {
    @Autowired
    RestTemplate restTemplate;

    @Bean
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }


    private static final Logger LOG = Logger.getLogger(ZipkinController.class.getName());

    @GetMapping(value="/zipkin")
    public String zipkinService1()
    {
        LOG.info("Inside zipkinService 1..");

        String response = (String) restTemplate.exchange("http://localhost:8082/zipkin2",
                HttpMethod.GET, null, new ParameterizedTypeReference<String>() {}).getBody();
        return "Hi..get response from zipkin2";
    }
}

在aplication.perporties 文件中配置zipkin client 可以链接到 zipkin server,这样就可以client 就会发送监控数据到server端


spring.zipkin.baseUrl = http://192.168.148.141:9411/
spring.zipkin.locator.discovery.enabled = true
spring.zipkin.enabled = true
spring.sleuth.sampler.probability=1
spring.zipkin.sender.type=web

类似的添加zipkin2,zipkin3

调用为服务观察zipkin信息

访问http://127.0.0.1:8081/zipkin 微服务 然后打开zipkin server 可以看到跟踪信息如图:

这里写图片描述

展开阅读全文

没有更多推荐了,返回首页