自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

分布式鏈路追蹤Jaeger + 微服務(wù)Pig在Rainbond上的實踐分享

開發(fā) 新聞
目前流行的 APM 開源工具有很多,比如:Zipkin,Skywalking,Pinpoint、Jaeger 等等,本文將主要介紹 Jaeger 。

隨著微服務(wù)架構(gòu)的流行,客戶端發(fā)起的一次請求可能需要涉及到多個或 N 個服務(wù),致使我們對服務(wù)之間的監(jiān)控和排查變得更加復(fù)雜。

舉個例子:

某條業(yè)務(wù)線的某個接口調(diào)用服務(wù)端時快時慢,這時就需要排查各個服務(wù)的日志進行分析,調(diào)動各個服務(wù)的開發(fā)人員聯(lián)動排查,這種排查費時又費力。對于 ToB 的業(yè)務(wù)有時候還拿不到日志,難搞哦!

因此,就需要可以幫助理解系統(tǒng)行為、用于分析性能問題的工具,以便發(fā)生故障的時候,能夠快速定位和解決問題,那就是 APM (Application Performance Monitor)。目前流行的 APM 開源工具有很多,比如:Zipkin,Skywalking,Pinpoint、Jaeger 等等,本文將主要介紹 Jaeger 。

Jaeger 是 Uber 技術(shù)團隊發(fā)布的開源分布式跟蹤系統(tǒng),它用于監(jiān)控和故障排查基于微服務(wù)的分布式系統(tǒng):

  • 分布式上下文傳播、事務(wù)監(jiān)控
  • 根本原因、服務(wù)依賴分析
  • 性能/延遲優(yōu)化
  • OpenTracing 啟發(fā)的數(shù)據(jù)模型
  • 多個存儲后端:Cassandra, Elasticsearch, memory.
  • 系統(tǒng)拓撲圖
  • 服務(wù)性能監(jiān)控(SPM)
  • 自適應(yīng)采樣

Jaeger 架構(gòu)

Component

Description

Jaeger Client

Jaeger Client SDK

Jaeger Agent

收集 Client 數(shù)據(jù)

Jaeger Collector

收集 Jaeger Agent 數(shù)據(jù),有 pull/push 兩種方式

DB Storage

Collector 需要存儲后端,Collector 拿到的數(shù)據(jù)將存在 Elasticsearch 或 Cassandra。

Spark jobs

用于生成拓撲圖 UI 數(shù)據(jù)

Jaeger Query Service & UI

負責(zé)從 Storage 查詢數(shù)據(jù)并提供 API 和 UI

如何在Rainbond上集成?

1.集成 OpenTelemetry Client:

v1.36 版本以前 Jaeger Client 是基于 OpenTracing API 實現(xiàn)的客戶端庫,Jaeger Client 結(jié)合 Jaeger Agent 一起使用,發(fā)送 span 到 Jaeger Collector。

v1.36 版本以后被棄用。使用OpenTelemetry 替代 Jaeger Client and Jaeger Agent,詳情見 Jaeger and OpenTelemetry 。

OpenTelemetry 是無侵入的,只需在 Java 進程啟動時添加 javaagent ,例: java -javaagent:path/to/opentelemetry-javaagent.jar -jar myapp.jar 。

那么在 Rainbond 上就可以通過插件將 OpenTelemetry javaagent 下載到組件中并修改啟動命令。

2.連接到 Jaeger-Collector:

將所有安裝了 OpenTelemetry javaagent 插件的微服務(wù)組件都通過依賴連接到 Jaeger Collector 。

實踐步驟

實踐中將使用 Spring Cloud Pig 進行演示,Gitee: https://gitee.com/zhangbigqi/pig

Rainbond 部署請參閱文檔快速安裝 。

1. Spring Cloud Pig 源碼部署

通過源碼部署 Spring Cloud Pig 微服務(wù)框架就不詳細介紹部署了,請參閱:

  • Spring Cloud Pig 部署教程
  • Spring Cloud Pig 視頻教程

2. OpenTelemetry 插件安裝

從應(yīng)用商店安裝 opentelemetry-java-agent 初始化插件,該插件的作用是下載 opentelemetry-javaagent.jar 到微服務(wù)組件內(nèi),可以在 Java 啟動項中指定。

  • 團隊視圖 -> 插件 -> 從應(yīng)用商店安裝插件 -> 搜索opentelemetry-java-agent 并安裝。

3. 部署 Jaeger

在開源應(yīng)用商店中搜索 Jaeger 并安裝到指定應(yīng)用中。

4. OpenTelemetry Agent 插件配置

(1)開通 OpenTelemetry Agent 插件

以 pig-gateway 為例,在組件 -> 插件中開通 opentelemetry-java-agent 插件并更新組件生效,微服務(wù)內(nèi)的其他組件均需要開通插件并更新或重啟組件生效。

(2)配置環(huán)境變量

為所有微服務(wù)組件配置環(huán)境變量。

變量名

變量值

說明

OTEL_TRACES_EXPORTER

jaeger

選擇 Jaeger exporter

OTEL_EXPORTER_JAEGER_ENDPOINT

http://127.0.0.1:14250

Jaeger Collector gRPC endpoint

OTEL_EXPORTER_JAEGER_TIMEOUT

10000

超時時間(毫秒)

OTEL_METRICS_EXPORTER

none

Metrics 導(dǎo)出器

JAVA_OPTS

-javaagent:/agent/opentelemetry-javaagent.jar

Java 啟動參數(shù)

可使用 應(yīng)用配置組 統(tǒng)一配置并應(yīng)用到所有組件中。

(3)配置組件服務(wù)名稱

為所有微服務(wù)組件配置環(huán)境變量 OTEL_SERVICE_NAME ,配置組件的 Jaeger 服務(wù)名稱,如: OTEL_SERVICE_NAME=pig-gateway OTEL_SERVICE_NAME=pig-auth

5.建立依賴關(guān)系

將所有微服務(wù)組件添加依賴連接到 Jaeger Collector 。

因 Jaeger 部署在另外一個應(yīng)用,需要進入 組件 -> 依賴 -> 添加 Jaeger Collector 依賴,就可以在當(dāng)前應(yīng)用的拓撲圖看到 Jaeger Collector 組件,剩下的組件都可通過拓撲圖編輯模式進行依賴連接。更新或重啟所有微服務(wù)組件使依賴關(guān)系生效。

6. Jaeger 快速使用

(1)訪問 Spring Cloud Pig UI 進行登錄,使其產(chǎn)生數(shù)據(jù)。

(2)訪問 Jaeger-Query 的 16686 端口,打開對外服務(wù)即可訪問 Jaeger UI 。

(3)在 Jaeger Search 頁面中搜索微服務(wù) Pig-gateway 的 Traces

  • Service:選擇微服務(wù)的組件
  • Operation:選擇操作類型,例:GET POST、接口、類.....
  • Tags:根據(jù)響應(yīng)頭篩選,例:http.status_code=200 error=true
  • Lookback:選擇時間
  • Max Duration:最大持續(xù)時間;Min Duration:最小持續(xù)時間。
  • Limit Results:限制返回結(jié)果數(shù)量。

(4)找到 Pig-gateway HTTP POST 的 Traces 并包含了 pig-auth Span并進入,可看到很清晰的展示了服務(wù)之間一層一層的調(diào)用以及接口的響應(yīng)時間,這樣我們就可以排查到底是哪個服務(wù)調(diào)用的慢或者調(diào)用有問題。

Jaeger 拓撲圖生成

拓撲圖默認不會生成,使用 spark-dependencies 組件生成拓撲圖數(shù)據(jù),這是一個 Spark 作業(yè),它從存儲中收集 span,分析服務(wù)之間的鏈接,并將它們存儲起來以供以后在 UI 中展示。請參閱 Jaeger Spark dependencies 。

spark-dependencies 組件占用資源較大,不使用時可關(guān)閉,需要生成拓撲圖數(shù)據(jù)時將其啟動即可。

最后

有了 APM 系統(tǒng)后,使我們可以更好的分析業(yè)務(wù)性能、排查故障等。

結(jié)合 Rainbond 作為基座不管是 Spring Cloud 還是 Jaeger 或其他 APM 都可以很方便、快捷的部署使用,從繁瑣的部署、配置中解放出來,讓我們更多的關(guān)注于業(yè)務(wù)層。

責(zé)任編輯:張燕妮 來源: 開源博客
相關(guān)推薦

2020-09-11 09:44:04

微服務(wù)分布式鏈路

2024-06-07 13:04:31

2020-12-16 09:24:18

Skywalking分布式鏈路追蹤

2024-01-26 07:49:49

Go分布式鏈路

2021-02-22 07:58:51

分布式鏈路追蹤

2024-08-21 08:09:17

2022-09-15 10:03:42

Jaeger分布式追蹤系統(tǒng)

2023-11-21 08:25:09

2024-07-09 08:11:56

2020-05-26 11:59:30

日志鏈路微服務(wù)架構(gòu)

2021-01-25 15:00:44

微服務(wù)分布式日志

2024-11-28 08:57:21

分布式鏈路Skywalking

2022-11-26 09:49:07

分布式鏈路追蹤技術(shù)

2021-11-08 14:10:37

分布式Spring鏈路

2025-03-03 08:00:00

2022-11-24 10:01:10

架構(gòu)分布式

2023-10-26 00:00:00

分布式系統(tǒng)定位

2021-06-09 09:00:00

微服務(wù)架構(gòu)技術(shù)

2019-08-07 10:44:28

MySQLGoogle

2022-06-02 07:51:06

RainbondNocalhost微服務(wù)
點贊
收藏

51CTO技術(shù)棧公眾號