Zipkin初探+与SpringBoot的集成+使⽤HTTP⽅式传送数据给zipkinserver
本地搭建zipkin server
下载:
启动(在下载⽬录): java -jar zipkin-server-2.22.1-exec.jar
SpringBoot集成zipkin⽂档
Spring Boot集成zipkin的⽅式
l⾥的配置⽅式
spring:
zipkin:
base-url: 127.0.0.1:9411 #zipkin server 的地址
service:
name: customersearchapis #默认会显⽰Spring Application Name,但是可以覆盖Service地址
sender:
type: web #如果ClassPath⾥没有kafka, active MQ, 默认是web的⽅式
sleuth:
sampler:
probability: 1.0 #100%取样
logging:
level:
root: info
springframework jar包下载# for zipkin sender, 如果使⽤ web的⽅式,可以在⽇志中看到与zipkin的通信
org.springframework.web: DEBUG
Gradle:
implementation 'org.springframework.cloud:spring-cloud-starter-zipkin
加上这个Starter会Sleuth相关的包以及下⾯zipkin相关的包都引⼊
使⽤HTTP传送给zipkin的输出⽇志:
将HTTP parameter 加到zipkin tag中
@Component
@Order(TraceWebServletAutoConfiguration.TRACING_FILTER_ORDER + 1)
public class CustomizedHttpTraceFilter extends GenericFilterBean {
private final Tracer tracer;
CustomizedHttpTraceFilter(Tracer tracer) {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
Span currentSpan = acer.currentSpan();
// do nothing if current span is null
if (currentSpan == null) {
chain.doFilter(request, response);
return;
}
// add parameter to tag
ObjectMapper mapper = new ObjectMapper();
currentSpan.tag("Http.parameter", mapper.ParameterMap()));
chain.doFilter(request, response);
}
ZIPKIN server 存储数据到ElasticSearch
java -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=ES-host -DES_INDEX=zipkin -DES_INDEX_SHARDS=3 -DES_INDEX_REPLICAS=2 -DES_USERNAME=userName -DES_PASSWORD=password -DES_SSL_NO_VERIFY=true -DES_
1. zipkin是服务端,⽤于查询分析、收集和持久化链路数据
2. brave则是zipkin官⽅出品的Java语⾔的链路数据采集插件。同理还有js、go版本的采集插件
业界开源的主流链路跟踪系统:
1. skywalking
2. pinpoint
3. zipkin
4. jaeger
主要对⽐skywalking和zipkin
skywalking zipkin
内部实现⽅式javaagent,字节码增强aop插件
语⾔⽀持多语⾔多语⾔
性能好好
插件扩展困难容易
接⼊成本低,开发⽆感知低,开发需要配置
社区⽀持好好
可以看到
skywalking相较于zipkin的优势在于接⼊成本低、性能稍好zipkin相较于skywalking的优势在于插件扩展容易
我们最终选择的是zipkin
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论