Spring Cloud 學習筆記 ——Sleath、Zipkin、RabbitMQ、ElasticSearch、Stream 搭建鏈路專案
17.2 實踐
在Spring Cloud 學習筆記 —— Spring Cloud Zipkin 簡介和安裝的基礎上,我們建立一個專案,來在專案中實現 Sleath、Zipkin、RabbitMQ 的鏈路追蹤
- 1.建立一個 Spring Boot 專案 zipkin01,新增 Web、Sleath、Zipkin、RabbitMQ、Stream依賴,Stream 依賴是方便傳送到訊息佇列
建立完專案,配置 application.properties
spring.application.name=zipkin03
# 開啟鏈路追蹤
spring.sleuth.web.client.enabled=true
# 配置採用比例,預設是 0.1,這裡方便測試改為 1,即 100%
spring.sleuth.sampler.probability=1
# 配置 zipkin 地址
spring.zipkin.base-url=http://192.168.99.100:9411
# 開啟 zipkin
spring.zipkin.enabled=true
# 設定訊息傳送的型別
spring.zipkin.sender.type=rabbit
# rabbitmq 配置
spring.rabbitmq.host=192.168.99.100
spring.rabbitmq.port=32773
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
如上配置 ip 埠,參考 docker 中的顯示:
建立一個測試的 Controller
@RestController
public class HelloController {
private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
@GetMapping("/hello")
public String hello(String name){
logger.info("zipkin03-hello");
return "hello" + name;
}
}
- 2.建立一個跟 zipkin03 一樣的專案 zipkin04
依賴一樣,配置 application.properties 中新增 server.port 屬性和更改 spring.application.name 屬性
spring.application.name=zipkin04
server.port=8081
# 開啟鏈路追蹤
spring.sleuth.web.client.enabled=true
# 配置採用比例,預設是 0.1,這裡方便測試改為 1,即 100%
spring.sleuth.sampler.probability=1
# 配置 zipkin 地址
spring.zipkin.base-url=http://192.168.99.100:9411
# 開啟 zipkin
spring.zipkin.enabled=true
# 設定訊息傳送的型別
spring.zipkin.sender.type=rabbit
# rabbitmq 配置
spring.rabbitmq.host=192.168.99.100
spring.rabbitmq.port=32773
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
然後這個基礎上,在啟動類上新增 RestTemplate 的 Bean
@SpringBootApplication
public class Zipkin04Application {
public static void main(String[] args) {
SpringApplication.run(Zipkin04Application.class, args);
}
@Bean
RestTemplate restTemplate(){
return new RestTemplate();
}
}
建立一個測試的 Controller
@RestController
public class HelloController {
private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
@Autowired
RestTemplate restTemplate;
@GetMapping("/hello")
public void hello(){
String s = restTemplate.getForObject("http://localhost:8080/hello?name={1}", String.class, "javaboy");
logger.info(s);
}
}
- 3.啟動 zipkin03 和 zipkin04 然後訪問 zipkin04 的 /hello 介面
zipkin04的:鏈路[zipkin04,a1c7cc0516de881b,a1c7cc0516de881b]
zipkin03的:[zipkin03,a1c7cc0516de881b,2d5a409c88c1dc13]
[zipkin04,a1c7cc0516de881b,a1c7cc0516de881b]和[zipkin03,a1c7cc0516de881b,2d5a409c88c1dc13]就好像從前一個傳遞過來一樣
觀察 zipkin 管理頁面
開啟
Span ID:a1c7cc0516de881b Parent ID:None
Span ID:04dfe8955136bd89 Parent ID:a1c7cc0516de881b
Span ID:2d5a409c88c1dc13 Parent ID:04dfe8955136bd89
總計:
Span ID:a1c7cc0516de881b Parent ID:None
Span ID:04dfe8955136bd89 Parent ID:a1c7cc0516de881b
Span ID:2d5a409c88c1dc13 Parent ID:04dfe8955136bd89
可以看到其實有 3 個 spanId :
第一個是請求進入 zipkon04 服務時;
第二個是從 zipkin04 到 RestTemplate 呼叫產生的 ;
第三個是從 RestTemplate 到 zipkon03 產生的;
這就是 zipkin 展示鏈路的過程,跟 kibana 的功能類似; - 4.所展示的內容就是 es-head 中的資料內容
還可以觀看 RabbitMQ,它有一個佇列就 zipkin
這就是 Sleuth、zipkin、RabbitMQ、ElasticSearch 搭建的日誌檢視功能,首先 Sleuth 收集日誌,傳送給 RabbitMQ 佇列,RabbitMQ 佇列傳送給 ElasticSearch 儲存,然後 Zipkin 展示 ElasticSearch 中的內容,以人性化的可視頁面顯示呼叫鏈路過程
相關文章
- RabbitMQ學習筆記MQ筆記
- 分散式鏈路追蹤之Spring Cloud Sleuth+Zipkin最全教程!分散式SpringCloud
- Spring Boot學習筆記---Spring Boot 基礎及使用idea搭建專案Spring Boot筆記Idea
- Elasticsearch學習筆記Elasticsearch筆記
- 每天學點SpringCloud(十四):Zipkin使用SpringCloud Stream以及ElasticsearchSpringGCCloudElasticsearch
- 微服務整合Spring Cloud Zipkin實現鏈路追蹤並整合Dubbo微服務SpringCloud
- RabbitMQ學習筆記-HelloWorldMQ筆記
- rabbitMq學習筆記(未完)MQ筆記
- springcloud學習筆記(一)Spring Cloud EurekaSpringGCCloud筆記
- springcloud學習筆記(四)Spring Cloud HystrixSpringGCCloud筆記
- springcloud學習筆記(五)Spring Cloud ActuatorSpringGCCloud筆記
- springcloud學習筆記(六)Spring Cloud ZuulSpringGCCloud筆記Zuul
- 訊息驅動式微服務:Spring Cloud Stream & RabbitMQ微服務SpringCloudMQ
- RabbitMQ學習筆記-安裝MQ筆記
- RabbitMQ學習筆記-Work QueuesMQ筆記
- RabbitMQ和Elasticsearch的使用筆記MQElasticsearch筆記
- 以太坊學習筆記————12、搭建測試網路和私有鏈筆記
- 分散式基礎&專案環境搭建_學習筆記分散式筆記
- springcloud學習筆記(二)Spring Cloud FeignSpringGCCloud筆記
- springcloud學習筆記(三)Spring Cloud RibbonSpringGCCloud筆記
- springcloud(十二):使用Spring Cloud Sleuth和Zipkin進行分散式鏈路跟蹤SpringGCCloud分散式
- Elasticsearch的配置學習筆記Elasticsearch筆記
- spring cloud Alibaba 之 spring boot 基礎學習筆記CloudSpring Boot筆記
- Spring Cloud 學習筆記 ——Spring Cloud Config 請求失敗重試SpringCloud筆記
- 跟我學SpringCloud | 第十一篇:使用Spring Cloud Sleuth和Zipkin進行分散式鏈路跟蹤SpringGCCloud分散式
- springCloud學習5(Spring-Cloud-Stream事件驅動)SpringGCCloud事件
- Spring Cloud Eureka 學習記錄SpringCloud
- scala學習筆記:理解stream和view筆記View
- elasticsearch學習筆記一:核心概念Elasticsearch筆記
- 區塊鏈專項課程學習筆記區塊鏈筆記
- Spring Cloud Alibaba(15)---Sleuth+ZipkinSpringCloud
- Spring Cloud 鏈路追蹤SpringCloud
- spring學習筆記Spring筆記
- Spring 學習筆記Spring筆記
- 使用Spring Cloud Stream和RabbitMQ實現事件驅動的微服務SpringCloudMQ事件微服務
- Node.js stream(流) 學習筆記(一)Node.js筆記
- 【區塊鏈學習】《區塊鏈學習指南》學習筆記區塊鏈筆記
- Elasticsearch入門學習重點筆記Elasticsearch筆記