SpringBoot之微服務日誌鏈路追蹤
SpringBoot之微服務日誌鏈路追蹤
簡介
在微服務裡,業務出現問題或者程式出的任何問題,都少不了檢視日誌,一般我們使用 ELK
相關的日誌收集工具,服務多的情況下,業務問題也是有些難以排查,只能確定大致時間定位相關日誌。log-trace-spring-boot-starter
解決多個服務呼叫日誌的問題,它可以將一個完整的呼叫鏈給整合為一個完整有序的日誌。
支援元件:
- zuul 呼叫
- feign 呼叫
- restTemplate 呼叫
日誌輸出格式:
2019-11-14 14:22:07.796 INFO [log-trace-service-a-demo,ac8ffaaed5f343da,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-7] c.p.l.t.service.a.demo.TestController : controller test2 執行 ac8ffaaed5f343da 2019-11-14 14:23:15.569 INFO [log-trace-service-a-demo,04cf5392dc5c4881,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-9] c.p.l.t.service.a.demo.TestController : controller test2 執行 04cf5392dc5c4881 2019-11-14 14:24:44.183 INFO [log-trace-service-a-demo,86b5c555ce4f4451,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-1] c.p.l.t.service.a.demo.TestController : controller test2 執行 86b5c555ce4f4451
我們可以通過 86b5c555ce4f4451
id 進行查詢鏈路上的所有日誌資訊。
log-trace-service-a-demo
為當前應用。
log-trace-zuul-demo
為上游應用。
當然這些引數可以基於業務定製的。
功能使用
新增依賴
ps: 實際version版本請使用最新版
最新版本:
點選檢視最新新版本
<dependency> <groupId>com.purgeteam</groupId> <artifactId>log-trace-spring-boot-starter</artifactId> <version>0.1.0.RELEASE</version> </dependency>
ps: 請基於 SpirngBoot2.1.x
版本使用
配置應用
這裡以3個微服務來舉例子。
log-trace-zuul-demo
充當閘道器功能log-trace-service-a-demo
充當服務Alog-trace-service-b-demo
充當服務B
呼叫鏈路為:
log-trace-zuul-demo
-> log-trace-service-a-demo
TestController#test
-> log-trace-service-b-demo
TestController#test
訪問閘道器地址: http://127.0.0.1:8000/a/test
閘道器日誌如下:
2019-11-14 14:27:37.434 DEBUG [33b07a9c5f324375,this] 89996 --- [nio-8000-exec-1] c.p.l.t.s.i.zuul.TracePreZuulFilter : zuul traceid 33b07a9c5f324375
閘道器轉發至服務A
服務A 日誌如下:
2019-11-14 14:27:37.476 INFO [log-trace-service-a-demo,33b07a9c5f324375,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-5] c.p.l.t.service.a.demo.TestController : controller test2 執行 33b07a9c5f324375
服務A 呼叫 服務B
服務B 日誌如下:
2019-11-14 14:27:37.478 INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.t.servcie.b.demo.TestController : header traceId 33b07a9c5f324375
2019-11-14 14:27:37.478 INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.t.servcie.b.demo.TestController : controller test 執行 33b07a9c5f324375
2019-11-14 14:27:37.478 INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.trace.servcie.b.demo.TestService : test 方法執行 33b07a9c5f324375
2019-11-14 14:27:37.478 INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.trace.servcie.b.demo.TestService : test1 方法執行 33b07a9c5f324375
這樣可以在第三方日誌平臺按照一個id進行查詢了。
如 ELK
通過 33b07a9c5f324375
id 查詢出相關的所有鏈路呼叫。
配置輸出格式
目前支援以上引數:
X-B3-ParentName 上游服務名稱
X-B3-TraceId 為一個請求分配的ID號,用來標識一條請求鏈路。
通過 application.properties
進行配置。
spring.trace.log.format=X-B3-TraceId,X-B3-ParentName
`spring.trace.log.format` 配置引數順序將影響日誌輸出格式。
不配置將按照預設格式輸出。
日誌輸出如下:
2019-11-14 14:27:37.434 DEBUG [33b07a9c5f324375,this] 89996 --- [nio-8000-exec-1] c.p.l.t.s.i.zuul.TracePreZuulFilter : zuul traceid 33b07a9c5f324375
總結
目前實現了日誌連貫的功能,後續將支援定製輸出 比如按照登陸人員id進行輸出,方便追蹤使用者行為。
框架方便後續支援 Dubbo
等。
示例程式碼地址:log-trace-spring-boot
作者GitHub:
Purgeyao 歡迎關注
qq交流群:
812321371
微信交流群:MercyYao
微信公眾號:
相關推薦
SpringBoot之微服務日誌鏈路追蹤
SpringBoot之微服務日誌鏈路追蹤 簡介 在微服務裡,業務出現問題或者程式出的任何問題,都少不了檢視日誌,一般我們使用 ELK 相關的日誌收集工具,服務多的情況下,業務問題也是有些難以排查,只能確定大致時間定位相關日誌。log-trace-spring-boot-starter 解決多個服務呼叫日誌的問
springCloud微服務系列——鏈路跟蹤第三篇——feign鏈路跟蹤器
目錄 一、簡介 二、思路 原始碼分析 擴充套件點 一、簡介 這篇文章總結feign鏈路跟蹤器的實現 二、思路 上篇文章中總結了mvc的鏈路跟蹤器,我們可以知道要實現鏈路跟蹤器需要在前後攔截請求,那麼這裡我們應該怎麼處理呢?既然使
Go微服務全鏈路跟蹤詳解
在微服務架構中,呼叫鏈是漫長而複雜的,要了解其中的每個環節及其效能,你需要全鏈路跟蹤。 它的原理很簡單,你可以在每個請求開始時生成一個唯一的ID,並將其傳遞到整個呼叫鏈。 該ID稱為CorrelationID¹,你可以用它來跟蹤整個請求並獲得各個呼叫環節的效能指標。簡單來說有兩個問題需要解決。第一,如何在應用
SpringCloud微服務雲架構構建B2B2C電子商務平臺之-(九)服務鏈路追蹤(Spring Cloud Sleuth)
這篇文章主要講述服務追蹤元件zipkin,Spring Cloud Sleuth集成了zipkin元件。 一、簡介Add sleuth to the classpath of a Spring Boot application (see below for Maven and Gradle examples
微服務SpringCloud之zipkin鏈路追蹤
隨著業務發展,系統拆分導致系統呼叫鏈路愈發複雜一個前端請求可能最終需要呼叫很多次後端服務才能完成,當整個請求變慢或不可用時,我們是無法得知該請求是由某個或某些後端服務引起的,這時就需要解決如何快讀定位服務故障點,以對症下藥。於是就有了分散式系統呼叫跟蹤的誕生。 Spring Cloud Sleut
spring cloud微服務快速教程之(十一) Sleuth(zipkin) 服務鏈路追蹤
0、前言 微服務架構上眾多微服務通過REST呼叫,可能需要很多個服務協同才能完成一個介面功能,如果鏈路上任何一個服務出現問題或者網路超時,都會形成導致介面呼叫失敗。隨著業務的不斷擴張,服務之間互相呼叫會越來越複雜。如何清晰地記錄服務的呼叫鏈路,方便將來問題的定位,Spring cloud sleuth元
【開源】.net微服務開發引擎Anno 讓複雜的事簡單點- 日誌、鏈路追蹤一目瞭然 (上)
1、Anno簡介? Anno是一個微服務框架引擎。入門簡單、安全、穩定、高可用、全平臺視覺化監控、依賴第三方框架少。詳情請檢視《【開源】.net微服務開發引擎Anno開源啦》 本章主題:.net微服務開發引擎Anno 讓複雜的事簡單點- 日誌、鏈路追蹤一目瞭然 &n
阿里雲釋出鏈路追蹤服務Tracing Analysis,從此告別告別日誌查詢
近日,在杭州雲棲大會上,阿里雲釋出了鏈路追蹤服務Tracing Analysis,成本是自建鏈路追蹤系統的1/5或更少,可為分散式應用的開發者提供完整的呼叫鏈路還原、呼叫請求量統計、鏈路拓撲、應用依賴分析等工具,幫助開發者快速分析和診斷分散式應用架構下的效能瓶頸,提高微服務時代下的開發診斷效
Spring Boot + Spring Cloud 構建微服務系統(八):分散式鏈路追蹤(Sleuth、Zipkin)
技術背景 在微服務架構中,隨著業務發展,系統拆分導致系統呼叫鏈路愈發複雜,一個看似簡單的前端請求可能最終需要呼叫很多次後端服務才能完成,那麼當整個請求出現問題時,我們很難得知到底是哪個服務出了問題導致的,這時就需要解決一個問題,如何快速定位服務故障點,於是,分散式系統呼叫鏈追蹤技術就此誕生了。 ZipKin
微博平臺的鏈路追蹤及服務質量保障系統——Watchman系統
如其他大中型網際網路應用一樣,微博平臺由眾多的分散式元件構成,使用者通過瀏覽器或移動客戶端的每一個HTTP請求到達應用伺服器後,會經過很多個業務系統或系統元件,並留下足跡(footprint)。但是這些分散的資料對於問題排查,或是流程優化都幫助有限。對於這樣一種典型的跨程
Spring Cloud(Finchley.RELEASE版本)微服務學習實踐:6.2全鏈路追蹤監控-Zipkin
環境:jdk1.8;spring boot2.0.3;spring cloud(Finchley.RELEASE版本);Maven3.3摘要說明:Zipkin:Zipkin是一個分散式追蹤系統。它有助於收集解決微服務架構中的延遲問題所需的時序資料。它管理這些資料的收集和查詢。
Spring Cloud微服務架構(十三)服務鏈路追蹤(Spring Cloud Sleuth)
1、zipkin簡介 Spring Cloud Sleuth 主要功能就是在分散式系統中提供追蹤解決方案,並且相容支援了 zipkin,zipkin為分散式鏈路呼叫監控系統,聚合各業務系統呼叫延遲資料,達到鏈路呼叫監控跟蹤。 隨著微服務數量不斷增長,它們之間的關係會越來越複雜
在微服務框架Demo.MicroServer中新增SkyWalking+SkyApm-dotnet分散式鏈路追蹤系統
1.APM工具的選取 Apm監測工具很多,這裡選用網上比較火的一款Skywalking。 Skywalking是一個應用效能監控(APM)系統,Skywalking分為服務端Oap、管理介面UI、以及嵌入到程式中的探針Agent部分,大概工作流程就是在程式中新增探針採集各種資料傳送給服務端儲存,然後在UI介面
net core 微服務框架 Viper 呼叫鏈路追蹤
1、Viper是什麼? Viper 是.NET平臺下的Anno微服務框架的一個示例專案。入門簡單、安全、穩定、高可用、全平臺可監控。底層通訊可以隨意切換thrift grpc。 自帶服務發現、呼叫鏈追蹤、Cron 排程、限流、事件匯流排、CQRS 、DDD、類似MVC的開發體驗,外掛化
微服務 - 如何解決鏈路追蹤問題
### 一、鏈路追蹤 微服務架構是將單個應用程式被劃分成各種小而連線的服務,每一個服務完成一個單一的業務功能,相互之間保持獨立和解耦,每個服務都可以獨立演進。相對於傳統的單體服務,微服務具有隔離性、技術異構性、可擴充套件性以及簡化部署等優點。 同樣的,微服務架構在帶來諸多益處的同時,也為系統增
業余草 SpringCloud教程 | 第九篇: 服務鏈路追蹤(Spring Cloud Sleuth)(Finchley版本)
描述 -s util ont packaging tdd res [] 新建 這篇文章主要講述服務追蹤組件zipkin,Spring Cloud Sleuth集成了zipkin組件。 一、簡介 Add sleuth to the classpath of a Spr
阿裏雲發布鏈路追蹤服務Tracing Analysis
product ffffff pro cin click 追蹤 com 拓撲 開源項目 摘要: 近日,在杭州雲棲大會上,阿裏雲發布了鏈路追蹤服務Tracing Analysis,成本是自建鏈路追蹤系統的1/5或更少,可為分布式應用的開發者提供完整的調用鏈路還原、調用請求量統
spring cloud 服務鏈路追蹤
簡介 Spring cloud Sleuth主要功能就是在分散式系統中提供追蹤解決方案,並且相容支援zipkin,你只需要在pom檔案中引入相應的依賴即可。 1、span 基本工作單元,span在不斷的啟動和停止,同時記錄了時間資訊,當你建立一相span,你必須在未來的某個時刻停止它。
SpringCloud2.0版本入門 | 服務鏈路追蹤(Spring Cloud Sleuth)簡單入門
本文出自 [ 慌途L ] 最近開始寫部落格,一些問題可能瞭解也不夠透徹,寫一下快速入門並且踩過的坑,希望大家少踩坑。本文簡單介紹一下springcloud的服務鏈路追蹤,不足之處希望大家指出,我改正。不喜勿噴! 這篇文章主要講述服務追蹤元件zipkin,Spr
Spring Cloud Sleuth服務鏈路追蹤(mysql儲存鏈路資料)(Finchley版本)
在Spring Cloud Sleuth服務鏈路追蹤(Finchley版本)中,我們使用Spring Cloud Sleuth和zipkin的整合實現了服務鏈路的追蹤,但是遺憾的是鏈路資料儲存在記憶體中,無法持久化。zipkin的持久化可以結合Elasticsearch,MySQL實現。本節