在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Spring Cloud Sleuth到底給Zipkin都發(fā)送了哪些數(shù)據(jù)?

jf_ro2CN3Fa ? 來(lái)源:csdn ? 2023-01-09 10:55 ? 次閱讀

一、概述

1.1. 分布式系統(tǒng)面臨的問(wèn)題

在微服務(wù)框架中,一個(gè)由客戶端發(fā)起的請(qǐng)求在后端系統(tǒng)中會(huì)經(jīng)過(guò)多個(gè)不同的的服務(wù)節(jié)點(diǎn)調(diào)用來(lái)協(xié)同產(chǎn)生最后的請(qǐng)求結(jié)果,每一個(gè)次請(qǐng)求都會(huì)形成一條復(fù)雜的分布式服務(wù)調(diào)用鏈路,鏈路中的任何一環(huán)出現(xiàn)高延時(shí)或錯(cuò)誤都會(huì)引起整個(gè)請(qǐng)求最后的失敗。

c996a382-86c7-11ed-bfe3-dac502259ad0.png

1.2. Sleuth是什么

Spring Cloud Sleuth提供了一套完整的服務(wù)跟蹤的解決方案。他會(huì)將服務(wù)與服務(wù)之間的調(diào)用給記錄起來(lái)。可以快速的知道調(diào)用 用戶服務(wù),到底涉及到了哪些微服務(wù),方便我們快速排查問(wèn)題!

具體的功能如下幾點(diǎn):

將跟蹤和跨度 ID 添加到 Slf4J,因此您可以從日志聚合器中的給定跟蹤或跨度中提取所有日志。

檢測(cè)來(lái)自 Spring 應(yīng)用程序的公共入口和出口點(diǎn)(servlet filter, rest template, scheduled actions, message channels, feign client)。

如果spring-cloud-sleuth-zipkin可用,則應(yīng)用程序?qū)⑼ㄟ^(guò) HTTP生成和報(bào)告與Zipkin兼容的跟蹤。默認(rèn)情況下,它將它們發(fā)送到 localhost(端口 9411)上的 Zipkin 收集器服務(wù)。使用spring.zipkin.baseUrl配置Zipkin 服務(wù)的位置。

1.3. Zipkin是什么

Spring Cloud Sleuth對(duì)于分布式鏈路的跟蹤僅僅是生成一些數(shù)據(jù),這些數(shù)據(jù)不便于人類閱讀,所以我們一般把這種跟蹤數(shù)據(jù)上傳給Zipkin Server,由Zipkin通過(guò)UI頁(yè)面統(tǒng)一進(jìn)行數(shù)據(jù)的展示。

1.4. 鏈路監(jiān)控相關(guān)術(shù)語(yǔ)

這些術(shù)語(yǔ)在官方文檔當(dāng)中也可以看到的!

span(跨度) :工作的基本單位。例如,發(fā)送 RPC 是一個(gè)新的跨度,發(fā)送響應(yīng)到 RPC 也是如此。Span還有其他數(shù)據(jù),例如描述、時(shí)間戳事件、鍵值注釋(標(biāo)簽)、導(dǎo)致它們的 Span 的 ID 和進(jìn)程 ID(通常是 IP 地址)??缍瓤梢詥?dòng)和停止,并且它們會(huì)跟蹤它們的時(shí)間信息。創(chuàng)建跨度后,您必須在將來(lái)的某個(gè)時(shí)間點(diǎn)停止它。

Trace :一組跨度形成樹狀結(jié)構(gòu)。

Annotation/Event :用于及時(shí)記錄某個(gè)事件的存在,有如下事件類型:

cs :客戶端發(fā)送??蛻粢烟岢稣?qǐng)求。此注釋指示跨度的開始。

sr :Server Received:服務(wù)器端收到請(qǐng)求并開始處理它。cs從此時(shí)間戳中減去時(shí)間戳揭示了網(wǎng)絡(luò)延遲。

ss :服務(wù)器發(fā)送。在請(qǐng)求處理完成時(shí)注釋(當(dāng)響應(yīng)被發(fā)送回客戶端時(shí))。從這個(gè)時(shí)間戳中減去sr時(shí)間戳,可以看出服務(wù)器端處理請(qǐng)求所需的時(shí)間。

cr : 客戶收到。表示跨度的結(jié)束??蛻舳艘殉晒κ盏椒?wù)器端的響應(yīng)。cs從這個(gè)時(shí)間戳中減去時(shí)間戳,可以看出客戶端從服務(wù)器接收響應(yīng)所需的全部時(shí)間。

下圖顯示了Span和Trace在系統(tǒng)中的外觀: 音符的每種顏色表示一個(gè)跨度(有七個(gè)跨度 - 從A到G) 。

c9d7bcdc-86c7-11ed-bfe3-dac502259ad0.png

下圖顯示了 span 的父子關(guān)系的外觀:

您可以繼續(xù)創(chuàng)建跨度(帶有no custom span指示的示例),也可以手動(dòng)創(chuàng)建子跨度(帶有custom span指示的示例)。

ca056b82-86c7-11ed-bfe3-dac502259ad0.png

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

二、實(shí)戰(zhàn)練習(xí)

2.1. 入門練習(xí)

1.創(chuàng)建項(xiàng)目

2.引入依賴


8
8
UTF-8
2.6.8
2021.0.3





org.springframework.boot
spring-boot-dependencies
${springboot.version}
pom
import


org.springframework.cloud
spring-cloud-dependencies
${springcloud.version}
pom
import





org.springframework.boot
spring-boot-starter-web


org.springframework.cloud
spring-cloud-starter-sleuth


3.添加yml配置

server:
port:8989

spring:
application:
name:sleuth-demo

4.添加控制器

@RestController
publicclassExampleController{
privatestaticfinalLoggerlog=LoggerFactory.getLogger(ExampleController.class);

@RequestMapping("/")
publicStringhome(){
log.info("Helloworld!");
return"HelloWorld!";
}
}

5.測(cè)試訪問(wèn):http://localhost:8989/ 訪問(wèn)后觀察打印的日志

ca2ae632-86c7-11ed-bfe3-dac502259ad0.png

[sleuth-demo,a79df4de56426209,a79df4de56426209]`此條目對(duì)應(yīng)于`[applicationname,traceid,span id]

設(shè)置DispatcherServlet日志級(jí)別過(guò)后可以看到如下日志:

logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG
ca3e8700-86c7-11ed-bfe3-dac502259ad0.png

如果您對(duì)這一步還不是很了解他是干什么的,沒(méi)關(guān)系,可以接著往下看,下面你就會(huì)明白的!學(xué)知識(shí)要循序漸進(jìn),不可急躁!!!

2.2. Zipkin下載與啟動(dòng)

下載好jar包后直接java -jar啟動(dòng):

ca535216-86c7-11ed-bfe3-dac502259ad0.png

然后訪問(wèn)

ca78e99a-86c7-11ed-bfe3-dac502259ad0.png

2.3. 搭建鏈路監(jiān)控步驟

首先我們要至少準(zhǔn)備兩個(gè)服務(wù),并且是調(diào)用關(guān)系。這樣我們才可以通過(guò)zipkin來(lái)查看調(diào)用鏈。

這里我會(huì)搭建兩個(gè)服務(wù),一個(gè)是8989服務(wù),一個(gè)是8990服務(wù),然后8989服務(wù)的一個(gè)接口當(dāng)中調(diào)用了8990當(dāng)中的接口!

遠(yuǎn)程調(diào)用的時(shí)候我這里使用的是openfeign,openfeign和RestTemplate都是遠(yuǎn)程調(diào)用框架,如果您對(duì)RestTemplate熟悉,用RestTemplate也是可以的。

第一步:搭建8990提供者

1.創(chuàng)建項(xiàng)目

2.添加pom依賴

這塊有一個(gè)點(diǎn)需要注意一下,有的springcloud版本當(dāng)中是沒(méi)有對(duì)spring-cloud-starter-zipkin進(jìn)行版本控制的,所以這時(shí)候我們需要自己去聲明版本號(hào),2.2.8.RELEASE是截止到現(xiàn)在最新的版本!spring-cloud-starter-zipkin依賴是集成了spring-cloud-starter-sleuth依賴的,所以我們引用了zipkin就可以不引用sleuth了。


8
8
UTF-8
2.6.8
2021.0.3





org.springframework.boot
spring-boot-dependencies
${springboot.version}
pom
import


org.springframework.cloud
spring-cloud-dependencies
${springcloud.version}
pom
import





org.springframework.boot
spring-boot-starter-web


org.springframework.cloud
spring-cloud-starter-zipkin
2.2.8.RELEASE


org.springframework.cloud
spring-cloud-starter-openfeign


3.添加yml配置

server:
port:8990

spring:
application:
name:sleuth-provide

logging:
level:
org.springframework.web.servlet.DispatcherServlet:DEBUG

4.添加控制器,主要是為了測(cè)試調(diào)用鏈路,這個(gè)接口就隨便寫一下就可以了!

@RestController
@RequestMapping("/user")
publicclassUserController{

@GetMapping("/getUserList")
publicStringgetUserList(){
return"user";
}
}

5.啟動(dòng)后測(cè)試訪問(wèn)

ca94e92e-86c7-11ed-bfe3-dac502259ad0.png

訪問(wèn)兩次后打開

caa647dc-86c7-11ed-bfe3-dac502259ad0.png

第二步:搭建8989消費(fèi)者

1.創(chuàng)建項(xiàng)目

2.添加pom依賴(這塊跟上面提供者的依賴一樣即可,當(dāng)然消費(fèi)者用不到openfeign,可以選擇把openfeign的依賴去掉)

3.添加yml配置

server:
port:8989

spring:
application:
name:sleuth-demo

logging:
level:
org.springframework.web.servlet.DispatcherServlet:DEBUG

4.使用openfeign就需要開啟openfeign的注解支持,在啟動(dòng)類添加@EnableFeignClients

5.添加openfeign遠(yuǎn)程調(diào)用接口

@FeignClient(value="userService",url="http://localhost:8990")
publicinterfaceUserService{

@GetMapping("/user/getUserList")
StringgetUserList();
}

6.添加控制器

@RestController
publicclassExampleController{

privatestaticfinalLoggerlog=LoggerFactory.getLogger(ExampleController.class);

@Resource
privateUserServiceuserService;

@RequestMapping("/")
publicStringhome(){
log.info("Helloworld!");
returnuserService.getUserList();
}
}

第三步:測(cè)試訪問(wèn)

首先我們觀察兩個(gè)服務(wù)的日志:會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題trace id是一致的!原因就是8989調(diào)用了8990服務(wù),他們屬于是一個(gè)鏈路的。記住這一切并不是zipkin幫我們實(shí)現(xiàn)的,而是Sleuth。

您也可以通過(guò)將zipkin的依賴改為sleuth然后執(zhí)行鏈路,他id仍然是一樣的。zipkin可以把它當(dāng)做就是一個(gè)帶有可視化界面的jar包,項(xiàng)目當(dāng)中集成zipkin依賴主要是將sleuth鏈路跟蹤的數(shù)據(jù),上傳到zipkin,由zipkin對(duì)數(shù)據(jù)進(jìn)行整理并在頁(yè)面上展示了出來(lái),真正實(shí)現(xiàn)鏈路跟蹤的是sleuth

cacb11d4-86c7-11ed-bfe3-dac502259ad0.pngcae8da7a-86c7-11ed-bfe3-dac502259ad0.png

然后我們?cè)儆^察一下zipkin的日志:

cb183f9a-86c7-11ed-bfe3-dac502259ad0.png

第四步:故意制造異常

在消費(fèi)服務(wù)的接口上故意制造異常:

@GetMapping("/getUserList")
publicStringgetUserList(){
inti=1/0;
return"user";
}

制造完異常后重啟,再進(jìn)行訪問(wèn),然后觀察日志:可以很直觀的看到是哪些鏈路出現(xiàn)了問(wèn)題。

通過(guò)這里我們可以拿到Trace ID,有了Trace ID我們可以去日志文件當(dāng)中搜索Trace ID快速定位bug原因!

cb3d0bc2-86c7-11ed-bfe3-dac502259ad0.png

然后我們還可以查看鏈路詳情:通過(guò)下圖可以很直觀的看到是由SLEUTH-DEMO調(diào)用SLEUTH-PROVIDE服務(wù)的時(shí)候,SLEUTH-DEMO服務(wù)接口產(chǎn)生的異常!

cb59697a-86c7-11ed-bfe3-dac502259ad0.png

假如不使用Sleuth,在我們進(jìn)行遠(yuǎn)程調(diào)用的時(shí)候報(bào)錯(cuò)了,實(shí)際上我們是看不到他是因?yàn)槭裁磮?bào)錯(cuò)的,我們只知道調(diào)用他報(bào)錯(cuò)了,日志如下,要想真正知道報(bào)的什么異常還得去查看遠(yuǎn)程調(diào)用的服務(wù)日志,而且還得比對(duì)服務(wù)調(diào)用時(shí)間,來(lái)查看當(dāng)時(shí)報(bào)錯(cuò)的日志。

cb7590f0-86c7-11ed-bfe3-dac502259ad0.png

2.4. sleuth相關(guān)配置

問(wèn)題: 默認(rèn)情況下,它將它們發(fā)送到 localhost(端口 9411)上的 Zipkin 收集器服務(wù),假設(shè)我們微服務(wù)并不是都部署在一臺(tái)機(jī)器,那應(yīng)該怎么辦呢?使用spring.zipkin.baseUrl配置Zipkin 服務(wù)的位置。

spring:
application:
name:sleuth-demo
zipkin:
base-url:http://localhost:9411/#指定zipkin地址
sleuth:
sampler:
#采樣率值介于0到1之間,1則表示全部采集
probability:1
#每秒采集的數(shù)量,默認(rèn)是10,通過(guò)設(shè)置這個(gè)可以有效的避免消息過(guò)大
rate:10

2.5. 向Zipkin發(fā)送消息的方式

cb8e8024-86c7-11ed-bfe3-dac502259ad0.png

這個(gè)是什么意思呢?首先我們要明白一點(diǎn),zipkin當(dāng)中所展示的數(shù)據(jù)實(shí)際上都是由我們服務(wù)發(fā)送給zipkin他才將數(shù)據(jù)清洗,并展示出來(lái)的。默認(rèn)采用的是HTTP請(qǐng)求方式來(lái)進(jìn)行向zipkin發(fā)送的。

在實(shí)際開發(fā)當(dāng)中HTTP請(qǐng)求方式,有時(shí)候勢(shì)必會(huì)給我們服務(wù)器帶來(lái)一些壓力,并發(fā)量特別大的情況下,會(huì)占用大量線程。HTTP請(qǐng)求講究的是,我發(fā)送給你,然后并且收到你的消息回復(fù),這條連接才算結(jié)束。

所以基于這一點(diǎn)zipkin也給我們提供了可以通過(guò)消息中間件來(lái)進(jìn)行發(fā)送,發(fā)送給消息中間件我們就不用管了,這樣可以避免線程擁堵,目前支持RabbitMQ和Kafka、ActiveMQ!

我這里直接使用rabbitmq來(lái)進(jìn)行演示 其他同理,不懂可以看官網(wǎng)!

第一步:添加依賴


org.springframework.amqp
spring-rabbit

第二步:添加rabbitmq配置

spring:
application:
name:sleuth-demo
zipkin:
base-url:http://localhost:9411/
sender:
type:rabbit
rabbitmq:
host:127.0.0.1
port:5672
username:guest
password:guest
listener:#這里配置了重試策略
direct:
retry:
enabled:true
sleuth:
sampler:
#采樣率值介于0到1之間,1則表示全部采集
probability:1
rate:10

第三步:修改Zipkin啟動(dòng)命令

cbab3ca0-86c7-11ed-bfe3-dac502259ad0.png

java-jarzipkin-server-2.23.18-exec.jar--RABBIT_ADDRESSES=127.0.0.1:5672--RABBIT_USER=guest--RABBIT_PASSWORD=guest

docker啟動(dòng):

dockerrun
--namezipkin-server2-d
--restart=always
-p9411:9411
-eRABBIT_ADDRESSES=162.14.115.18:5672
-eRABBIT_USER=admin
-eRABBIT_PASSWORD=admin
openzipkin/zipkin:2.21.7

第四步:測(cè)試,啟動(dòng)我們的服務(wù),然后訪問(wèn)接口http://localhost:8989/

zipkin就是自動(dòng)創(chuàng)建的隊(duì)列,通過(guò)這個(gè)隊(duì)列進(jìn)行發(fā)送消息的!

cbbabd88-86c7-11ed-bfe3-dac502259ad0.png

打開zipkin仍然可以看到調(diào)用信息。

cbe8b4a4-86c7-11ed-bfe3-dac502259ad0.png

2.6. Sleuth到底給Zipkin都發(fā)送了哪些數(shù)據(jù)?

想知道這個(gè)其實(shí)非常簡(jiǎn)單,我們只需要將zipkin給停止掉,然后調(diào)用我們的服務(wù)接口即可。這時(shí)候隊(duì)列當(dāng)中的消息就沒(méi)有人消費(fèi)了,然后我們就可以通過(guò)RabbitMQ管理頁(yè)直接獲取消息。

cc05e3ee-86c7-11ed-bfe3-dac502259ad0.png

2.7. Zipkin配置持久化

假如不配置zipkin持久化,當(dāng)我們把jar包給停止后,所有收集到的消息會(huì)直接清除!針對(duì)于數(shù)據(jù)持久化zipkin提供了好幾種種方式,常用的有兩種,一種存儲(chǔ)到mysql,另一種是Elasticsearch。

方式一:持久化到mysql

cc138562-86c7-11ed-bfe3-dac502259ad0.png

配置持久化相當(dāng)簡(jiǎn)單,只需要在mysql創(chuàng)建一個(gè)庫(kù)和表,然后zipkin啟動(dòng)的時(shí)候指定持久化方式為mysql即可。

java-jarzipkin-server-2.23.18-exec.jar--STORAGE_TYPE=mysql--MYSQL_HOST=127.0.0.1--MYSQL_TCP_PORT=3306--MYSQL_DB=zipkin--MYSQL_USER=root--MYSQL_PASS=root--RABBIT_ADDRESSES=127.0.0.1:5672--RABBIT_USER=guest--RABBIT_PASSWORD=guest

方式二:持久化到Elasticsearch

這一種我就不再演示了

cc39fc92-86c7-11ed-bfe3-dac502259ad0.png

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

三、引入sleuth怎么輸出traceId

首先我們要找到SpringBoot默認(rèn)的logback配置

cc544b24-86c7-11ed-bfe3-dac502259ad0.pngcc7923e0-86c7-11ed-bfe3-dac502259ad0.png

base.xml引用了console-appender.xml和defaults.xml

cc9001fa-86c7-11ed-bfe3-dac502259ad0.png

我們之所以不配置日志,springboot也可以控制打印日志主要是以下:

ccb18c58-86c7-11ed-bfe3-dac502259ad0.png

CONSOLE_LOG_PATTERN就是springboot默認(rèn)的日志格式:日志格式當(dāng)中使用到了一個(gè)LOG_DATEFORMAT_PATTERN變量

ccd50052-86c7-11ed-bfe3-dac502259ad0.pngcd1134e6-86c7-11ed-bfe3-dac502259ad0.png

主要是由TraceEnvironmentPostProcessor類當(dāng)中的postProcessEnvironment方法在啟動(dòng)的時(shí)候判斷是否開啟了sleuth,假如開啟了會(huì)直接設(shè)置LOG_DATEFORMAT_PATTERN變量。

cd20fc78-86c7-11ed-bfe3-dac502259ad0.png

四、logback日志問(wèn)題

分布式系統(tǒng)中,如何快速定位某個(gè)用戶的請(qǐng)求日志?

據(jù)我了解 zikpin并沒(méi)有提供詳細(xì)報(bào)錯(cuò)日志,例如是哪行報(bào)錯(cuò),通過(guò)zipkin我們可以知道是鏈路中哪個(gè)服務(wù)報(bào)錯(cuò),這時(shí)候我們可以通過(guò)traceid去日志文件當(dāng)中查看詳細(xì)報(bào)錯(cuò)信息!

但是有時(shí)候我們項(xiàng)目當(dāng)中使用了logback.xml,日志格式里面并沒(méi)有設(shè)置traceid。那到底應(yīng)該如何設(shè)置呢?

我們可以參考springboot默認(rèn)的日志配置,然后配置如下:


《?xml version=“1.0” encoding=“UTF-8”?》

《configuration scan=“true” scanPeriod=“60 seconds” debug=“false”》

《!-- 參考SpringBoot默認(rèn)的logback配置,增加了error日志文件 --》

《!-- org/springframework/boot/logging/logback/base.xml --》

《conversionRule conversionWord=“clr” converterClass=“org.springframework.boot.logging.logback.ColorConverter” /》

《conversionRule conversionWord=“wex” converterClass=“org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter” /》

《conversionRule conversionWord=“wEx” converterClass=“org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter” /》

《property name=“LOG_PATH” value=“。/logs”/》

《property name=“CONSOLE_LOG_PATTERN” value=“${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}”/》

《property name=“FILE_LOG_PATTERN” value=“${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}”/》

《!-- 控制臺(tái)日志 --》

《appender name=“CONSOLE” class=“ch.qos.logback.core.ConsoleAppender”》

《encoder》

《pattern》${CONSOLE_LOG_PATTERN}《/pattern》

《/encoder》

《/appender》

《!--獲取比info級(jí)別高(包括info級(jí)別)但除error級(jí)別的日志--》

《appender name=“file_info” class=“ch.qos.logback.core.rolling.RollingFileAppender”》

《file》${LOG_PATH}/sys-info.log《/file》

《!-- 循環(huán)政策:基于時(shí)間創(chuàng)建日志文件 --》

《rollingPolicy class=“ch.qos.logback.core.rolling.TimeBasedRollingPolicy”》

《!-- 日志文件名格式 --》

《fileNamePattern》${LOG_PATH}/sys-info.%d{yyyy-MM-dd}.log《/fileNamePattern》

《!-- 日志最大的歷史 60天 --》

《maxHistory》60《/maxHistory》

《/rollingPolicy》

《encoder》

《pattern》${FILE_LOG_PATTERN}《/pattern》

《/encoder》

《filter class=“ch.qos.logback.classic.filter.LevelFilter”》

《level》ERROR《/level》

《onMatch》DENY《/onMatch》

《onMismatch》ACCEPT《/onMismatch》

《/filter》

《/appender》

《appender name=“file_error” class=“ch.qos.logback.core.rolling.RollingFileAppender”》

《file》${LOG_PATH}/sys-error.log《/file》

《!-- 循環(huán)政策:基于時(shí)間創(chuàng)建日志文件 --》

《rollingPolicy class=“ch.qos.logback.core.rolling.TimeBasedRollingPolicy”》

《!-- 日志文件名格式 --》

《fileNamePattern》${LOG_PATH}/sys-error.%d{yyyy-MM-dd}.log《/fileNamePattern》

《!-- 日志最大的歷史 60天 --》

《maxHistory》60《/maxHistory》

《/rollingPolicy》

《encoder》

《pattern》${FILE_LOG_PATTERN}《/pattern》

《/encoder》

《filter class=“ch.qos.logback.classic.filter.LevelFilter”》

《!-- 過(guò)濾的級(jí)別 --》

《level》ERROR《/level》

《!-- 匹配時(shí)的操作:接收(記錄) --》

《onMatch》ACCEPT《/onMatch》

《!-- 不匹配時(shí)的操作:拒絕(不記錄) --》

《onMismatch》DENY《/onMismatch》

《/filter》

《/appender》

《!-- 異步輸出 --》

《appender name=“ASYNC-INFO” class=“ch.qos.logback.classic.AsyncAppender”》

《!-- 不丟失日志。默認(rèn)的,如果隊(duì)列的80%已滿,則會(huì)丟棄TRACT、DEBUG、INFO級(jí)別的日志 --》

《discardingThreshold》0《/discardingThreshold》

《!-- 更改默認(rèn)的隊(duì)列的深度,該值會(huì)影響性能。默認(rèn)值為256 --》

《queueSize》512《/queueSize》

《!-- 添加附加的appender,最多只能添加一個(gè) --》

《appender-ref ref=“file_info”/》

《/appender》

《appender name=“ASYNC-ERROR” class=“ch.qos.logback.classic.AsyncAppender”》

《!-- 不丟失日志。默認(rèn)的,如果隊(duì)列的80%已滿,則會(huì)丟棄TRACT、DEBUG、INFO級(jí)別的日志 --》

《discardingThreshold》0《/discardingThreshold》

《!-- 更改默認(rèn)的隊(duì)列的深度,該值會(huì)影響性能。默認(rèn)值為256 --》

《queueSize》512《/queueSize》

《!-- 添加附加的appender,最多只能添加一個(gè) --》

《appender-ref ref=“file_error”/》

《/appender》

《!-- 日志總開關(guān) --》

《root level=“INFO”》

《appender-ref ref=“CONSOLE” /》

《appender-ref ref=“ASYNC-INFO” /》

《appender-ref ref=“ASYNC-ERROR” /》

《/root》

《!-- 日志過(guò)濾 --》

《logger name=“org.apache.catalina.startup.DigesterFactory” level=“ERROR”/》

《logger name=“org.apache.catalina.util.LifecycleBase” level=“ERROR”/》

《logger name=“org.apache.coyote.http11.Http11NioProtocol” level=“WARN”/》

《logger name=“org.apache.sshd.common.util.SecurityUtils” level=“WARN”/》

《logger name=“org.apache.tomcat.util.net.NioSelectorPool” level=“WARN”/》

《logger name=“org.eclipse.jetty.util.component.AbstractLifeCycle” level=“ERROR”/》

《logger name=“org.hibernate.validator.internal.util.Version” level=“WARN”/》

《/configuration》

五、除了Zipkin還有哪些鏈路跟蹤

cd429ffe-86c7-11ed-bfe3-dac502259ad0.png

CAT是一個(gè)更綜合性的平臺(tái),提供的監(jiān)控功能最全面,國(guó)內(nèi)幾個(gè)大廠生產(chǎn)也都在使用。但研發(fā)進(jìn)度及版本更新相對(duì)較慢。

Zipkin由Twitter開源,調(diào)用鏈分析工具,基于spring-cloud-sleuth得到廣泛使用,非常輕量,使用部署簡(jiǎn)單。

Skywalking專注于鏈路和性能監(jiān)控,國(guó)產(chǎn)開源,埋點(diǎn)無(wú)侵入,UI功能較強(qiáng)。能夠加入Apache孵化器,設(shè)計(jì)思想及代碼得到一定認(rèn)可,后期應(yīng)該也會(huì)有更多的發(fā)展空間及研發(fā)人員投入。目前使用廠商最多。版本更新較快。

Pinpoint專注于鏈路和性能監(jiān)控,韓國(guó)研發(fā)團(tuán)隊(duì)開源,埋點(diǎn)無(wú)侵入,UI功能較強(qiáng),但畢竟是小團(tuán)隊(duì),不知道會(huì)不會(huì)一直維護(hù)著,目前版本仍在更新中

cda1a314-86c7-11ed-bfe3-dac502259ad0.png

支持的存儲(chǔ):

cdf4b518-86c7-11ed-bfe3-dac502259ad0.png

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9160

    瀏覽量

    85415
  • RPC
    RPC
    +關(guān)注

    關(guān)注

    0

    文章

    111

    瀏覽量

    11534
  • HTTP協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    61

    瀏覽量

    9721

原文標(biāo)題:Spring Cloud Sleuth 全鏈路日志跟蹤解決方案(強(qiáng)烈推薦)

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何用ACM簡(jiǎn)化你的Spring Cloud微服務(wù)環(huán)境配置管理

    的差別,而這往往是bug和重大故障隱藏之所。總結(jié) 在本文中,我們以一個(gè)測(cè)試和生產(chǎn)連接不同的數(shù)據(jù)庫(kù),配置不同的數(shù)據(jù)源(包括連接池)參數(shù)為例,介紹了如何將阿里云配置中心ACM與Spring Clo
    發(fā)表于 02-02 14:18

    EDAS再升級(jí)!全面支持Spring Cloud應(yīng)用

    摘要: 近日,阿里中間件(Aliware)的企業(yè)級(jí)分布式應(yīng)用服務(wù)EDAS宣布再次升級(jí),全面支持Spring Cloud應(yīng)用。點(diǎn)此查看原文:[url=]http://click.aliyun.com
    發(fā)表于 02-02 15:20

    使用阿里云ACM簡(jiǎn)化你的Spring Cloud微服務(wù)環(huán)境配置管理

    和重大故障隱藏之所。總結(jié)在本文中,我們以一個(gè)測(cè)試和生產(chǎn)連接不同的數(shù)據(jù)庫(kù),配置不同的數(shù)據(jù)源(包括連接池)參數(shù)為例,介紹了如何將阿里云配置中心ACM與Spring Cloud一起使用,幫助
    發(fā)表于 07-04 17:16

    Dubbo Cloud Native 之路的實(shí)踐與思考

    Jaeger,三者的靈感均來(lái)自于 Google 論文 Dapper。相對(duì)而言,Java 程序員可能更為熟悉 Zipkin,因?yàn)樗?Spring Cloud Sleuth 首選方案,
    發(fā)表于 07-05 16:05

    Spring Cloud Config公共配置解決方案

    Spring Cloud Config 多服務(wù)公共配置
    發(fā)表于 08-30 09:05

    使用Spring Cloud與Docker實(shí)戰(zhàn)微服務(wù)

    使用Spring Cloud與Docker實(shí)戰(zhàn)微服務(wù)
    發(fā)表于 09-09 08:31 ?7次下載
    使用<b class='flag-5'>Spring</b> <b class='flag-5'>Cloud</b>與Docker實(shí)戰(zhàn)微服務(wù)

    Spring Cloud Function基于Spring Boot的函數(shù)計(jì)算框架

    ./oschina_soft/spring-cloud-function.zip
    發(fā)表于 05-13 10:16 ?0次下載
    <b class='flag-5'>Spring</b> <b class='flag-5'>Cloud</b> Function基于<b class='flag-5'>Spring</b> Boot的函數(shù)計(jì)算框架

    RabbitRpc基于spring cloud的微服務(wù)rpc調(diào)用

    ./oschina_soft/gitee-spring-cloud-rabbitrpc.zip
    發(fā)表于 06-14 09:51 ?1次下載
    RabbitRpc基于<b class='flag-5'>spring</b> <b class='flag-5'>cloud</b>的微服務(wù)rpc調(diào)用

    如何解決Spring Cloud下測(cè)試環(huán)境路由問(wèn)題

    Spring Cloud Tencent 微服務(wù)開發(fā)框架自六月底正式對(duì)外宣發(fā)后,受到了許多開發(fā)者非?;馃岬年P(guān)注。不到一個(gè)月時(shí)間, Github Star 數(shù)就已突破 2000,超過(guò) 1000 名
    的頭像 發(fā)表于 10-21 09:22 ?1020次閱讀

    Spring Cloud Tencent發(fā)布最新匹配版本!

    無(wú)論北極星還是 Spring Cloud Tencent 當(dāng)前都在積極的修復(fù) Bug、完善用戶體驗(yàn)、迭代新功能。所以 Spring Cloud Tencent 也第一時(shí)間適配了
    的頭像 發(fā)表于 12-09 15:34 ?1099次閱讀

    Spring Cloud 2022.0.0正式發(fā)布

    由于 Spring 現(xiàn)在提供了他們自己實(shí)現(xiàn)的接口 HTTP 客戶端解決方案,因此從 2022.0.0 開始,Spring Cloud OpenFeign 已到達(dá)特性完成狀態(tài)。這意味著 Spri
    的頭像 發(fā)表于 12-22 10:39 ?726次閱讀

    使用 Renesas AE-CLOUD2 將 GPS 數(shù)據(jù)發(fā)送到 Google Cloud IoT

    使用 Renesas AE-CLOUD2 將 GPS 數(shù)據(jù)發(fā)送到 Google Cloud IoT
    的頭像 發(fā)表于 01-04 11:17 ?687次閱讀

    分布式鏈路跟蹤SleuthZipkin

    Spring Cloud Sleuth 也為我們提供了一套完整的解決方案。在本章中,我們將詳細(xì)介紹如何使用 Spring Cloud
    的頭像 發(fā)表于 01-13 10:11 ?668次閱讀

    dubbo和spring cloud區(qū)別

    Dubbo和Spring Cloud是兩個(gè)非常流行的微服務(wù)框架,各有自己的特點(diǎn)和優(yōu)勢(shì)。在本文中,我們將詳細(xì)介紹Dubbo和Spring Cloud的區(qū)別。 1.架構(gòu)設(shè)計(jì): Dubbo是
    的頭像 發(fā)表于 12-04 14:47 ?1680次閱讀

    Spring Cloud Gateway網(wǎng)關(guān)框架

    Spring Cloud Gateway網(wǎng)關(guān)框架 本軟件微服務(wù)架構(gòu)中采用Spring Cloud Gateway網(wǎng)關(guān)控制框架,Spring
    的頭像 發(fā)表于 08-22 09:58 ?493次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Cloud</b> Gateway網(wǎng)關(guān)框架
    主站蜘蛛池模板: 久久国产福利| hd性欧美| 久久草在线免费| 亚洲性一区| 在线观看www妖精免费福利视频| 色丁香久久| 来吧成人综合网| 最新大黄网站免费| 毛片污| 狠狠色96视频| 久久夜色tv网站| 亚洲爱v| 中文字幕一区二区三| 亚洲欧美日本综合| 狠狠色综合网| 日日操天天射| xxxx 欧美| 日韩系列| bt种子搜索-bt天堂| 久久夜视频| 亚洲成人在线播放| 萌白酱白丝护士服喷水铁牛tv| 特污兔午夜影院| 夜夜嘿视频免费看| 欧美一级三级在线观看| 伊人久操| 亚洲国产精品丝袜在线观看 | 一级片免费在线观看视频| 操她视频网站| 欧美性天堂| 国产午夜精品久久理论片小说| 亚洲 成人 欧美 自拍| freesexvideo性欧美医生护士| 91亚洲国产成人久久精品网站| 欧美在线观看一区二区三| 欧美午夜免费观看福利片| 亚洲国产精品乱码在线观看97| 最近高清免费观看视频大全| 日本免费在线视频| 国产美女一级ba大片免色| 中文字幕一区在线观看视频|