去年一直有想法將openTracing整合進(jìn)自己的dubbo服務(wù)的想法。但是zipkin brave 對 dubbo的支持,沒有更新到最新版本,所以一直沒有行動(dòng)。
目前zipkin支持的語言,以及框架如下圖:具體可以參考官方網(wǎng)址
其中brave library 是一個(gè)java項(xiàng)目,提供了對主流web服務(wù)會(huì)用到的組件的支持,如dubbo,httpclient,mysql等。
另,SpringCloudSleuth,也是在zipkin brave 基礎(chǔ)上的發(fā)展起來的一個(gè)分布式追蹤系統(tǒng),所以又多了一個(gè)整合zipkin的理由;
我在我自己的springWebMVC + Dubbo + Mysql + RocketMQ 的服務(wù)中,直接引入了spring-cloud-starter-zipkin
可以看到引入spring-cloud-starter-zipkin會(huì)自動(dòng)引入instrumentation的一些jar包,自動(dòng)會(huì)對通過springWebMVC,httpClient進(jìn)行的http通信進(jìn)行鏈路跟蹤;但是我需要添加對dubbo協(xié)議的支持,那么就需要額外引入brave-instrumentation-dubbo(針對dubbo有兩個(gè)jar包可以使用,分別對應(yīng)不同版本的dubbo,instrumentation-dubbo對應(yīng)dubbo2.7.0以上,instrumentation-dubbo-rpc對應(yīng)dubbo2.6.0以上2.7.0以下);引入jar包后,需要進(jìn)行一些配置,如下zipkin的相關(guān)配置
#通過http協(xié)議上報(bào)tracing信息,這里的地址是zipkin服務(wù)的地址 #spring.zipkin.base-url=http://localhost:9411 #服務(wù)名稱 spring.zipkin.service.name=my-consumer #開啟上報(bào)到zipkin服務(wù),如果不開啟的話,tracing信息還是會(huì)在不同服務(wù)中傳遞,只是不會(huì)上報(bào)的zipkin服務(wù)端 spring.zipkin.enabled=false #使用默認(rèn) http 方式收集 span 需要配置此項(xiàng) spring.zipkin.sender.type=web #采樣率,默認(rèn)是0.1, 如果是1的話,代表百分之百采樣 spring.sleuth.sampler.probability=1
關(guān)于dubbo的配置,只需要如下
#add tracing filter dubbo.consumer.filter = tracing #add tracing filter dubbo.provider.filter = tracing
這樣就可以在日志中加上traceId的輸出,來更好的進(jìn)行鏈路分析,%X{traceId}的寫法,顯然原理是放在MDC中;這樣就只需要通過一個(gè)traceId就能分析代碼全鏈路里都做了哪些事情,當(dāng)然前提是你有記日志;
如果你只是需要一個(gè)traceId來方便追蹤日志,那么這里就已經(jīng)可以了;如果還需要zipkin的鏈路分析功能,那么就需要搭建一個(gè)zipkin服務(wù);可以直接在zipkin官網(wǎng)上找到docker啟動(dòng)zipkin的quickstart。
然后在系統(tǒng)中進(jìn)行相應(yīng)配置即可訪問http://localhost:9411查看;
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://www.cnblogs.com/IC1101/p/13262389.html