1. 程式人生 > >SpringBoot之微服務日誌鏈路追蹤

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個微服務來舉例子。

  1. log-trace-zuul-demo 充當閘道器功能
  2. log-trace-service-a-demo 充當服務A
  3. log-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

服務SpringCloudzipkin追蹤

 隨著業務發展,系統拆分導致系統呼叫鏈路愈發複雜一個前端請求可能最終需要呼叫很多次後端服務才能完成,當整個請求變慢或不可用時,我們是無法得知該請求是由某個或某些後端服務引起的,這時就需要解決如何快讀定位服務故障點,以對症下藥。於是就有了分散式系統呼叫跟蹤的誕生。 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實現。本節