Zipkin 持久化存入Elasticsearch

一.Zipkin服务端

1.1 依赖

 <properties>
        <java.version>1.8</java.version>
        <zipkin.version>2.9.4</zipkin.version>
        <zipkin.es.version>2.8.4</zipkin.es.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-server</artifactId>
            <version>${zipkin.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-log4j2</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-autoconfigure-ui</artifactId>
            <scope>runtime</scope>
            <version>${zipkin.version}</version>
        </dependency>
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-autoconfigure-storage-elasticsearch-http</artifactId>
            <version>${zipkin.es.version}</version>
            <optional>true</optional>
        </dependency>
    </dependencies>

1.2. 配置文件

zipkin.storage.StorageComponent=elasticsearch
zipkin.storage.type=elasticsearch
#可以做集群,我用的本地测试没有部署elastic集群
zipkin.storage.elasticsearch.hosts=192.168.42.40:9200
zipkin.storage.elasticsearch.cluster=elasticsearch
zipkin.storage.elasticsearch.index=zipkin
zipkin.storage.elasticsearch.index-shards=5
zipkin.storage.elasticsearch.index-replicas=1
maxHttpHeaderSize=8192
action.auto_create_index=true

1.3. 启动类

@EnableZipkinServer//开启ZipkinServe
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class ZipkinApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZipkinApplication.class, args);
    }
}

二、客户端配置

2.1 SpringBoot 版本

2.1.1 依赖
<!-- zipkin-->
		<dependency>
			<groupId>io.zipkin.brave</groupId>
			<artifactId>brave-core</artifactId>
			<version>3.10.0</version>
		</dependency>
		<dependency>
			<groupId>io.zipkin.brave</groupId>
			<artifactId>brave-spancollector-http</artifactId>
			<version>3.10.0</version>
		</dependency>
		<dependency>
			<groupId>io.zipkin.brave</groupId>
			<artifactId>brave-web-servlet-filter</artifactId>
			<version>3.10.0</version>
		</dependency>
		<dependency>
			<groupId>io.zipkin.brave</groupId>
			<artifactId>brave-okhttp</artifactId>
			<version>3.10.0</version>
		</dependency>
		<!-- zipkin-->
2.1.2 全局配置
@Data
@Configuration
@ConfigurationProperties(prefix = ZipkinConfig.ZIPKIN_PREFIX)
public class ZipkinConfig {

    public static final String ZIPKIN_PREFIX = "zipkin";

    //服务名称
    private String serviceName;

    //地址
    private String url;

    //连接时间
    private int connectTimeout;

    //读取时间
    private int readTimeout;

    //每间隔多少秒执行一次Span信息上传
    private int flushInterval;
    
    //是否启动压缩
    private boolean compressionEnabled;

    /**
     * @Description span(一次请求信息或者一次链路调用)信息收集器
     * @UserModule: exam-paper
     * @author Dylan
     * @date 2020/1/3
     * @param
     * @return com.github.kristofa.brave.SpanCollector
     */
    @Bean
    public SpanCollector spanCollector() {
        Config config = Config.builder()
                // 默认false,span在transport之前是否会被gzipped
                .compressionEnabled(compressionEnabled)
                .connectTimeout(connectTimeout)
                .flushInterval(flushInterval)
                .readTimeout(readTimeout)
                .build();
        return create(url, config, new EmptySpanCollectorMetricsHandler());
    }

    /**
     * @Description 作为各调用链路,只需要负责将指定格式的数据发送给zipkin
     * @UserModule: exam-paper
     * @author Dylan
     * @date 2020/1/3
     * @param spanCollector
     * @return com.github.kristofa.brave.Brave
     */
    @Bean
    public Brave brave(SpanCollector spanCollector) {
        //调用服务的名称
        Builder builder = new Builder(serviceName);
        builder.spanCollector(spanCollector);
        //采集率
        builder.traceSampler(Sampler.ALWAYS_SAMPLE);
        return builder.build();
    }

    /**
     * @Description 设置server的(服务端收到请求和服务端完成处理,并将结果发送给客户端)过滤器
     * @UserModule: exam-paper
     * @author Dylan
     * @date 2020/1/3
     * @param brave
     * @return com.github.kristofa.brave.servlet.BraveServletFilter
     */
    @Bean
    public BraveServletFilter braveServletFilter(Brave brave) {
        BraveServletFilter filter = new BraveServletFilter(brave.serverRequestInterceptor(),
                brave.serverResponseInterceptor(), new DefaultSpanNameProvider());
        return filter;
    }

    /**
     * @Description 设置client的(发起请求和获取到服务端返回信息)拦截器
     * @UserModule: exam-paper
     * @author Dylan
     * @date 2020/1/3
     * @param brave
     * @return okhttp3.OkHttpClient
     */
    @Bean
    public OkHttpClient okHttpClient(Brave brave) {
        OkHttpClient httpClient = new OkHttpClient.Builder()
                .addInterceptor(new BraveOkHttpRequestResponseInterceptor(
                        brave.clientRequestInterceptor(),
                        brave.clientResponseInterceptor(),
                        new DefaultSpanNameProvider())).build();
        return httpClient;
    }
}

2.1.3 配置文件
zipkin.serviceName=exam-app
zipkin.url=http://localhost:8096
zipkin.connectTimeout=6000
zipkin.readTimeout=6000
zipkin.flushInterval=1
zipkin.compressionEnabled=true
zipkin.storage.StorageComponent=elasticsearch
zipkin.storage.type=elasticsearch
zipkin.storage.elasticsearch.hosts=localhost:9200
zipkin.storage.elasticsearch.cluster=elasticsearch
zipkin.storage.elasticsearch.index=zipkin
zipkin.storage.elasticsearch.index-shards=5
zipkin.storage.elasticsearch.index-replicas=1
maxHttpHeaderSize=8192
action.auto_create_index=true
management.metrics.web.server.auto-time-requests=false
management.endpoints.web.exposure.include="*"

2.2 SpringCloud 版本

2.2.1 依赖
 <!--引入的zipkin依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>
2.2.2 配置文件
  zipkin:
    base-url: http://localhost:8096
    # 关闭服务发现,否则Spring Cloud会把zipkin的url当做服务名称
    discoveryClientEnabled: false
    sender:
      type: web
  sleuth:
    sampler:
      probability: 1  # 设置抽样采集率为100%,默认为0.1,即10%

三. 验证

3.1 zipkin UI验证

访问消费者之后,在zipkin里会显示
在这里插入图片描述
这时我们关掉服务,再重启,数据还在,说明持久化成功!

3.2 kibana验证

创建索引
在这里插入图片描述
查看
在这里插入图片描述

3.3 ES-Head验证

在这里插入图片描述

工具安装教程

1. Elasticsearch6.x 安装以及一些坑 https://blog.csdn.net/weixin_38937840/article/details/103897483

2.elasticsearch-head 安装以及踩过的坑 https://blog.csdn.net/weixin_38937840/article/details/103897606

3.kibana安装以及踩过的坑https://blog.csdn.net/weixin_38937840/article/details/103897715
下方有免费书籍的地址,大家可以看看是否对自己有用!

今天的分享就到这里,希望对大家有所帮助

关注 Java有货领取更多资料

联系小编。微信:372787553,带您进群互相学习
左侧小编微信,右侧获取免费资料
在这里插入图片描述

技术博客:https://blog.csdn.net/weixin_38937840

免费书籍:https://github.com/Dylan-haiji/Programmer-Learning-materials

SpringCloud学习代码: https://github.com/Dylan-haiji/javayh-cloud

Redis、Mongo、Rabbitmq、Kafka学习代码: https://github.com/Dylan-haiji/javayh-middleware

AlibabaCloud学习代码:https://github.com/Dylan-haiji/javayh-cloud-nacos

SpringBoot+SpringSecurity实现自定义登录学习代码:https://github.com/Dylan-haiji/javayh-distribution

Zip是一个开源的分布式跟踪系统,用于收集、存储和展示微服务架构中的请求链路追踪数据。通过集成ZipkinElasticsearch,可以将Zipkin的跟踪数据持久化Elasticsearch中,便于后续的查询和分析。 在部署ZipkinElasticsearch之前,首先需要安装和配置Elasticsearch环境。可以使用Docker来快速搭建一个Elasticsearch容器,并指定相关的配置参数。在安装过程中,需要创建一个配置文件elasticsearch.yml,其中包含了一些必要的配置项,例如监听的IP地址、跨域配置等。 安装完Elasticsearch后,可以通过访问http://localhost:9200来验证是否安装成功。接下来,可以将Zipkin配置为使用Elasticsearch作为存储介质,将跟踪数据持久化Elasticsearch中。具体的配置方式可以参考Zipkin的官方文档或者相关的博客文章。 通过集成ZipkinElasticsearch,可以更好地管理和分析微服务架构中的请求链路追踪数据,提供更好的性能监控和故障排查的能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [zipkin学习--08--Springboot 集成 Zipkin--持久化elasticsearch](https://blog.csdn.net/ylx814056815/article/details/120258750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [分布式日志分析系统(二):Zipkin的介绍以及在Elasticsearch的部署](https://blog.csdn.net/sv2008337/article/details/81238773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨同学~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值