spring-cloud 鏈路追蹤
spring-Cloud 鏈路追蹤
為什么需要鏈路追蹤?
可以理清微服務間的調用關系;
可以快速查詢日志;
可以實施系統監控;
根據traceId可以方便的查看這個服務的調用過程,請求參數、調用類、方法、lineNum、message信息;
目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking。
一、spring-Cloud-sleuth
官網: https://spring.io/projects/spring-cloud-sleuth
準備工作:docker 安裝 zipkin server,nacos注冊中心默認已有
docker pull openzipkin/zipkin
docker run --name zipkin -d -p 9411:9411 openzipkin/zipkin
訪問zipkin服務:http://localhost:9411/zipkin/
開始構建項目 paw-trace-sleuth,添加依賴
未加依賴之前日志
引入sleuth依賴后日志
將數據發送到zipkin sever。
zipkin 配置
spring:
zipkin:
base-url: http://localhost:9411/
寫一個服務調用 注冊中心nacos,用openfeign調用
增加依賴,并在啟動類開始 @EnableDiscoveryClient @EnableFeignClients
定義feignclient
@FeignClient("paw-trace-sleuth-b") public interface SleuthBFeignClient { @GetMapping("/sleuthB") public String sleuthB(); }
服務調用
@Slf4j @RestController public class SleuthController { @Autowired private SleuthBFeignClient sleuthBFeignClient; @GetMapping("/sleuth") public String sleuth(){ log.info("==== sleuth"); String sleuthB = sleuthBFeignClient.sleuthB(); log.info(sleuthB); return "sleuth"; } }
創建服務調用的項目項目paw-trace-sleuth-b,配置過程同上
增加feign調用的開放接口
@RestController public class SleuthBController { @GetMapping("/sleuthB") public String sleuthB(){ log.info("sleuthB"); return "sleuthB"; } }
啟動項目,查看日志,鏈路已生成
訪問記錄已發送到zipkin sever端。
show 顯示詳細信息。
官網文檔,slf4j的logback日志已經添加了默認的日志格式,可以自定義logback-spring.xml日志。
zipkin默認用內存存儲數據,實際項目中一般用 kafa+ES存儲數據
docker 方式:
docker run -it -d --restart=always -e KAFKA_BOOTSTRAP_SERVERS=10.0.1.66:9092
-e STORAGE_TYPE=elasticsearch -e ES_HOSTS=http://10.0.1.66:9200 -p 10086:9411 openzipkin/zipkin
啟動jar的方式
java -DKAFKA_ZOOKEEPER=10.22.0.130:2181 -DSTORAGE_TYPE=elasticsearch
-DES_HOSTS=http://10.22.0.130:9200 -jar zipkin.jar
Spring
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。