springboot集成zipkin

springboot集成zipkin一 下载 zipkinDocker dockerrun d p9411 9411openzipk zipkinlinuxw Ozipkin jar https search maven org remote content g io zipkin java amp a zipkin server amp v LATEST amp c exec li

一:下载zipkin

Docker:

docker run -d -p 9411:9411 openzipkin/zipkin

wget -O zipkin.jar ‘https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec’

linux:

访问测试

localhost:9411

二:spring配置文件集成

1.导入jar包

在pom文件中添加:

 
   
   
   
     io.zipkin.brave 
    
   
     brave-core 
    
   
     3.10.0 
    
   
   
   
     io.zipkin.brave 
    
   
     brave-spancollector-http 
    
   
     3.10.0 
    
   
   
   
     io.zipkin.brave 
    
   
     brave-web-servlet-filter 
    
   
     3.10.0 
    
   
   
   
     io.zipkin.brave 
    
   
     brave-okhttp 
    
   
     3.10.0 
    
   
  

 

2.在配置文件中书写参数

#请求的项目名# server.servlet.context-path=/ #zipKin# zipkin.serviceName=bbscontent zipkin.url=http://47.93.136.21:9411 zipkin.connectTimeout=6000 zipkin.readTimeout=6000 zipkin.flushInterval=1 zipkin.compressionEnabled=true

3.添加配置类

package com.jfbank.discuz.config; import com.github.kristofa.brave.Brave; import com.github.kristofa.brave.EmptySpanCollectorMetricsHandler; import com.github.kristofa.brave.Sampler; import com.github.kristofa.brave.SpanCollector; import com.github.kristofa.brave.http.DefaultSpanNameProvider; import static com.github.kristofa.brave.Brave.Builder; import static com.github.kristofa.brave.http.HttpSpanCollector.create; import com.github.kristofa.brave.http.HttpSpanCollector; import com.github.kristofa.brave.okhttp.BraveOkHttpRequestResponseInterceptor; import com.github.kristofa.brave.servlet.BraveServletFilter; import okhttp3.OkHttpClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; / *@program: content *@description: *@author: zhihua *@create: 2019-07-11 11:41 */ @Configuration public class ZipkinConfig { / * 服务名称 */ @Value("${zipkin.serviceName}") private String serviceName; / * zipkin地址 */ @Value("${zipkin.url}") private String url; / * 连接时间 */ @Value("${zipkin.connectTimeout}") private int connectTimeout; / * 读取时间 */ @Value("${zipkin.readTimeout}") private int readTimeout; / * 每间隔多少秒执行一次Span信息上传 */ @Value("${zipkin.flushInterval}") private int flushInterval; / * 是否启动压缩 */ @Value("${zipkin.compressionEnabled}") private boolean compressionEnabled; public String getServiceName() { return serviceName; } public void setServiceName(String serviceName) { this.serviceName = serviceName; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public int getConnectTimeout() { return connectTimeout; } public void setConnectTimeout(int connectTimeout) { this.connectTimeout = connectTimeout; } public int getReadTimeout() { return readTimeout; } public void setReadTimeout(int readTimeout) { this.readTimeout = readTimeout; } public int getFlushInterval() { return flushInterval; } public void setFlushInterval(int flushInterval) { this.flushInterval = flushInterval; } public boolean isCompressionEnabled() { return compressionEnabled; } public void setCompressionEnabled(boolean compressionEnabled) { this.compressionEnabled = compressionEnabled; } / * @Description: span(一次请求信息或者一次链路调用)信息收集器 * @Param: * @return: SpanCollector 控制器 * @Author: zhihua * @Date: 2019-07-11 11:41 */ @Bean public SpanCollector spanCollector() { HttpSpanCollector.Config config = HttpSpanCollector.Config.builder() // 默认false,span在transport之前是否会被gzipped .compressionEnabled(compressionEnabled) .connectTimeout(connectTimeout) .flushInterval(flushInterval) .readTimeout(readTimeout) .build(); return create(url, config, new EmptySpanCollectorMetricsHandler()); } / * @Description: 作为各调用链路,只需要负责将指定格式的数据发送给zipkin * @Param: * @return: * @Author: r * @Date: 2019-07-11 11:41 */ @Bean public Brave brave(SpanCollector spanCollector) { //调用服务的名称 Builder builder = new Builder(serviceName); builder.spanCollector(spanCollector); //采集率 builder.traceSampler(Sampler.ALWAYS_SAMPLE); return builder.build(); } / * @Description: 设置server的(服务端收到请求和服务端完成处理,并将结果发送给客户端)过滤器 * @Param: * @return: 过滤器 * @Author: zhihua * @Date: 2019-07-11 11:41 */ @Bean public BraveServletFilter braveServletFilter(Brave brave) { BraveServletFilter filter = new BraveServletFilter(brave.serverRequestInterceptor(), brave.serverResponseInterceptor(), new DefaultSpanNameProvider()); return filter; } / * @Description: 设置client的(发起请求和获取到服务端返回信息)拦截器 * @Param: * @return: OkHttpClient 返回请求实例 * @Author: zhihua * @Date: 2019-07-11 11:41 */ @Bean public OkHttpClient okHttpClient(Brave brave) { OkHttpClient httpClient = new OkHttpClient.Builder() .addInterceptor(new BraveOkHttpRequestResponseInterceptor( brave.clientRequestInterceptor(), brave.clientResponseInterceptor(), new DefaultSpanNameProvider())).build(); return httpClient; } } 

 

 

zipkinUI展示

springboot集成zipkin

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223680.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:39
下一篇 2026年3月17日 下午1:39


相关推荐

  • 两种求集合全部子集的方法

    两种求集合全部子集的方法

    2022年2月4日
    56
  • Javaweb 后端框架总结

    Javaweb 后端框架总结REST方法       Spring核心  IOC(InversionofController)-面向对象的一个准则,对象的控制(创建和管理)由容器或者框架来实现,而不是开发者直接调用,开发者只需要实现接口或者放入自己的类就可以依赖注入(DependencyInjectionDI)每个方法都有一个独立的对象,通过接口去调用其他的对…

    2022年5月1日
    41
  • t分布, 卡方x分布,F分布

    t分布, 卡方x分布,F分布T分布:温良宽厚本文由“医学统计分析精粹”小编“Hiu”原创完成,文章采用知识共享Attribution-NonCommercial-NoDerivatives4.0国际许可协议(http://c

    2022年8月2日
    9
  • CentOs7 LAMP Drupal安装记录

    CentOs7 LAMP Drupal安装记录1.重设IP先使用DHCP在/etc/sysconfig/network-scripts/ifcfg-eno***中加入 ONBOOT=YESBOOTPROTO=DHCP#systemctlrestartnetwork2.更新yum的源为国内源wgethttp://mirrors.163.com/.help/CentOS7-Base-163.repo

    2022年7月20日
    18
  • Activity跳转到指定Fragment实例

    Activity跳转到指定Fragment实例最近做的一个项目,突然出现了这个问题,Activity中有四个fragment,分别是first,two,three,four,默认显示的是fragmenta。在开发过程中,first中跳转到另一个Activity,将这个外部Activity命名为B吧…我需要从first中跳转到B中,完成一些设置,然后再从B中的返回按钮回到three,three中也有一个viewpa

    2022年5月20日
    58
  • 一套很好的.net控件radcontrols介绍

    一套很好的.net控件radcontrols介绍中文在线阅读器简介:最新的项目有一个是XPS的在线阅读器,这个项目可以说是一个典点的Silverlight商业项目应用,用户可以直接通过一个website查看一个xps文档,这个程序类似目前网站上常见的Flash阅读器,XPS是微软的第的文件格式,是与Adobe的PDF文件格式对立的新格式,而且直接被Office2007(Office12)和WindowsVista支持…

    2022年7月24日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号