使用Spring Cloud Sleuth和OpenTelemetry實現分散式跟蹤
Spring Cloud Sleuth 和 OpenTelemetry 是一個強大的組合,可以利用您現有的 Spring Boot 應用程式併為您提供超越日誌和指標的洞察力。
此處顯示的所有示例均可在https://github.com/xsreality/spring-boot-tracing-demo
在即將推出的 Spring Cloud 2021.0 中支援 Spring Cloud Sleuth 的整合。
OpenTelemetry 提供了一個代理 (JAR) 來附加 Java 應用程式以生成跟蹤。但誰真的想和代理商打交道呢?感謝 Spring Cloud Sleuth 抽象,它將檢測委託給 OpenTelemetry 並允許我們快速啟動和執行。
啟用它的方法:
<properties> <spring-cloud.version>2021.0.0-M2</spring-cloud.version> <spring-cloud-sleuth-otel.version>1.1.0-M3</spring-cloud-sleuth-otel.version> <opentelemetry-exporter-otlp>1.7.0</opentelemetry-exporter-otlp> <grpc-netty-shaded>1.41.0</grpc-netty-shaded> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Spring Cloud Sleuth OTel requires a Spring Cloud Sleuth OTel BOM --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-otel-dependencies</artifactId> <version>${spring-cloud-sleuth-otel.version}</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <!-- Sleuth with Brave tracer implementation --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> <exclusions> <!-- Exclude Brave (the default) --> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-brave</artifactId> </exclusion> </exclusions> </dependency> <!-- Add OpenTelemetry tracer --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-otel-autoconfigure</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-exporter-otlp --> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-exporter-otlp</artifactId> <version>${opentelemetry-exporter-otlp}</version> </dependency> <!-- https://mvnrepository.com/artifact/io.grpc/grpc-netty --> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty-shaded</artifactId> <version>${grpc-netty-shaded}</version> </dependency> <repositories> <repository> <id>spring-snapshots</id> <url>https://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring-milestones</id> <url>https://repo.spring.io/milestone</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <url>https://repo.spring.io/snapshot</url> </pluginRepository> <pluginRepository> <id>spring-milestones</id> <url>https://repo.spring.io/milestone</url> </pluginRepository> </pluginRepositories> |
原始碼可在https://github.com/xsreality/spring-boot-tracing-demo 獲得。
執行應用程式會建立透過Logback MDC包含在日誌行中的 Trace 和 Span ID 。這些將如下所示:
2021-11-06 00:10:02.278 INFO [http-service2,8a45749d445c4e5c4846c931d7f488c5,36a8075ff900ddd4] 9068 --- [nio-8081-exec-1] com.example.HomeController : Another bug bites the dust |
如果您的應用程式使用自定義日誌模式並且您沒有在日誌中看到跟蹤 ID,請切換到 Spring 使用的預設模式或至少使用該LOG_LEVEL_PATTERN變數:
<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{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}"/> |
任何支援 OTEL 協議 (OTLP) 的系統均可用於匯出跟蹤。越來越多的系統正在新增對 OTEL 的支援, 3 個工具——Honeycomb、Grafana Tempo 和 Elastic APM。
匯出跨度跟蹤很容易。只需在 application.yaml 中新增以下屬性
spring.sleuth.otel.exporter.otlp.endpoint: https://api.honeycomb.io spring.sleuth.otel.exporter.otlp.headers.x-honeycomb-team: xxx spring.sleuth.otel.exporter.otlp.headers.x-honeycomb-dataset: dataset |
相關文章
- Spring Cloud Sleuth 和 Zipkin 進行分散式跟蹤使用指南SpringCloud分散式
- 使用Spring Cloud Sleuth實現分散式系統的鏈路追蹤SpringCloud分散式
- 跟我學SpringCloud | 第十一篇:使用Spring Cloud Sleuth和Zipkin進行分散式鏈路跟蹤SpringGCCloud分散式
- Spring Cloud 專題之七:Sleuth 服務跟蹤SpringCloud
- 分散式鏈路追蹤之Spring Cloud Sleuth+Zipkin最全教程!分散式SpringCloud
- 阿里高階架構師教你使用Spring Cloud Sleuth跟蹤微服務阿里架構SpringCloud微服務
- OpenTelemetry分散式追蹤分散式
- Spring Cloud實戰系列(七) - 服務鏈路追蹤Spring Cloud SleuthSpringCloud
- (十二)JAVA springboot微服務b2b2c電子商務系統:使用Spring Cloud Sleuth和Zipkin進行分散式鏈路跟蹤JavaSpring Boot微服務Cloud分散式
- 基於OpenTelemetry實現Java微服務呼叫鏈跟蹤Java微服務
- 整合spring cloud雲架構 --spring cloud分散式系統中實現分散式鎖SpringCloud架構分散式
- Sleuth服務跟蹤:整合 Logstash
- Go微服務框架go-kratos實戰05:分散式鏈路追蹤 OpenTelemetry 使用Go微服務框架分散式
- 使用 SpanMetrics Connector 將 OpenTelemetry 跟蹤轉換為指標指標
- 使用zipKin構建NetCore分散式鏈路跟蹤NetCore分散式
- DiagnosticSource DiagnosticListener 無侵入式分散式跟蹤分散式
- Spring Cloud實戰系列(六) - 分散式配置中心Spring Cloud ConfigSpringCloud分散式
- Spring Cloud Alibaba(13)---Sleuth概述SpringCloud
- Welcome to YARP - 8.分散式跟蹤分散式
- 中介軟體---分散式跟蹤---Pinpoint分散式
- 像跟蹤分散式服務呼叫那樣跟蹤 Go 函式呼叫鏈分散式Go函式
- ⑦SpringCloud 實戰:引入Sleuth元件,完善服務鏈路跟蹤SpringGCCloud元件
- 使用Spring Boot實現分散式事務Spring Boot分散式
- Spring Cloud Seata系列:基於AT模式實現分散式事務SpringCloud模式分散式
- 分散式跟蹤系統zipkin簡介分散式
- 分散式系統的跟蹤系統分散式
- Dapper分散式跟蹤系統論文APP分散式
- Spring Cloud Alibaba(14)---SpringCloudAlibaba整合SleuthSpringCloudGC
- Spring Cloud Alibaba(15)---Sleuth+ZipkinSpringCloud
- EMQX Enterprise 5.4 釋出:OpenTelemetry 分散式追蹤、OCPP 閘道器MQ分散式
- 非spring boot (即spring) 使用/整合 Spring cloud Config 分散式配置中心Spring BootCloud分散式
- 分散式跟蹤系統——產品對比分散式
- 微服務分散式跟蹤工具Brave簡介微服務分散式
- 原理 | 分散式鏈路跟蹤元件 SOFATracer 和 Zipkin 模型轉換分散式元件模型
- EMQX Enterprise 5.4:OpenTelemetry 分散式追蹤、OCPP 閘道器、Confluent 整合支援MQ分散式
- spring cloud微服務分散式雲架構Spring Cloud ZuulSpringCloud微服務分散式架構Zuul
- spring cloud微服務分散式雲架構-Spring Cloud NetflixSpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構-Spring Cloud BusSpringCloud微服務分散式架構