dubbo服務整合zipkin詳解
去年一直有想法將openTracing整合進自己的dubbo服務的想法。但是zipkin brave 對 dubbo的支持,沒有更新到最新版本,所以一直沒有行動。
目前zipkin支持的語言,以及框架如下圖:具體可以參考官方網址
其中brave library 是一個java項目,提供瞭對主流web服務會用到的組件的支持,如dubbo,httpclient,mysql等。
另,SpringCloudSleuth,也是在zipkin brave 基礎上的發展起來的一個分佈式追蹤系統,所以又多瞭一個整合zipkin的理由;
我在我自己的springWebMVC + Dubbo + Mysql + RocketMQ 的服務中,直接引入瞭spring-cloud-starter-zipkin
可以看到引入spring-cloud-starter-zipkin會自動引入instrumentation的一些jar包,自動會對通過springWebMVC,httpClient進行的http通信進行鏈路跟蹤;但是我需要添加對dubbo協議的支持,那麼就需要額外引入brave-instrumentation-dubbo(針對dubbo有兩個jar包可以使用,分別對應不同版本的dubbo,instrumentation-dubbo對應dubbo2.7.0以上,instrumentation-dubbo-rpc對應dubbo2.6.0以上2.7.0以下);引入jar包後,需要進行一些配置,如下zipkin的相關配置
#通過http協議上報tracing信息,這裡的地址是zipkin服務的地址 #spring.zipkin.base-url=http://localhost:9411 #服務名稱 spring.zipkin.service.name=my-consumer #開啟上報到zipkin服務,如果不開啟的話,tracing信息還是會在不同服務中傳遞,隻是不會上報的zipkin服務端 spring.zipkin.enabled=false #使用默認 http 方式收集 span 需要配置此項 spring.zipkin.sender.type=web #采樣率,默認是0.1, 如果是1的話,代表百分之百采樣 spring.sleuth.sampler.probability=1
關於dubbo的配置,隻需要如下
#add tracing filter dubbo.consumer.filter = tracing #add tracing filter dubbo.provider.filter = tracing
這樣就可以在日志中加上traceId的輸出,來更好的進行鏈路分析,%X{traceId}的寫法,顯然原理是放在MDC中;這樣就隻需要通過一個traceId就能分析代碼全鏈路裡都做瞭哪些事情,當然前提是你有記日志;
如果你隻是需要一個traceId來方便追蹤日志,那麼這裡就已經可以瞭;如果還需要zipkin的鏈路分析功能,那麼就需要搭建一個zipkin服務;可以直接在zipkin官網上找到docker啟動zipkin的quickstart。
然後在系統中進行相應配置即可訪問http://localhost:9411查看;
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- dubbo集成zipkin獲取Traceid的實現
- SpringCloud分佈式鏈路追蹤組件Sleuth配置詳解
- Spring Cloud 專題之Sleuth 服務跟蹤實現方法
- Java的springcloud Sentinel是什麼你知道嗎
- SpringCloud微服務基礎簡介