iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
Software Development

一個新鮮人如何完轉Spring boot與DevOps從0到101系列 第 24

OpenTelemetry 與 Jaeger 應用

[環境建置,Elasticsearch 需要先建置,Collector 組件會將資訊存入 Elasticsearch中

query:
    container_name: jaeger_query
    image: jaegertracing/jaeger-query
    environment:
      - SPAN_STORAGE_TYPE=elasticsearch
      - ES_SERVER_URLS=http://192.168.101.129:3001
      - ES_TAGS_AS_FIELDS_ALL=true
      - LOG_LEVEL=debug
collector:
    container_name: jaeger_collector
    image: jaegertracing/jaeger-opentelemetry-collector
    environment:
      - SPAN_STORAGE_TYPE=elasticsearch
      - LOG_LEVEL=debug
    command: [
      "--es.server-urls=http://192.168.101.129:3001",
      "--es.num-shards=3",
      "--es.num-replicas=0"
    ]
agent:
    container_name: jaeger_agent
    image: jaegertracing/jaeger-opentelemetry-agent
    command: ["--reporter.grpc.host-port=jaeger_collector:14250", "--log-level=debug"]

導入 OoenTelemetry
一般運行 Spring boot 是用 java –jar file.jar,而 Opentelemetry 提供自動配置的 Jar 可參考 opentelemetry-java-instrumentation,最後透過 javaagent 導入 java -javaagent:opentelemetry-javaagent-all.jar –jar file.jar。為了與 jaeger 進行交互,需配置以下

  • OTEL_TRACES_EXPORTER=jaeger # 指定將蒐集的資訊傳播到哪個框架
  • OTEL_EXPORTER_JAEGER_ENDPOINT=http://192.168.101.129:9000 # 該框架傳遞資訊的端點
  • OTEL_RESOURCE_ATTRIBUTES=service.name=java-dev-be,service.version=v1.0.0 # 當有多個服務時可用來識別
    官方環境變數設置參考

當中 Service 是 OTEL_RESOURCE_ATTRIBUTES 所設置的 service.name

上圖有一個時間軸,而每個圈圈表示一個 trace。每個 trace 所需時間都不一樣,因此可藉由此時間軸觀察花費時間最大的 trace 並進行觀察有無優化可能,當中 Sort 選項也可選擇排序方式。

  • 總共 8 個 Span(Total Spans),通常可以視為一個請求做了 8 個不同動作
  • 深度為 3(Depth)
  • 關聯服務為 1 個(Services)
  • 該 API 花費 444.4 ms(Duration)

將每個 Span 展開後,基本上都會存在著 Tages 和 Process 的資訊。Tages 是每個 Span 的補充字段以 key:value 顯示,相對的 Process 偏向對系統層面的補充字段。當過程中有錯誤時,將會以 Logs 欄位呈現錯誤的堆疊。

使用 Trace Graph 觀察,結果如下更加直觀清楚知道調用過程。每個不同的呈現其細節都不一樣。

在 Jaeger 上還有很多東西可以使用。透過 opentelemetry 規範,可讓不斷擴展的服務,利於追蹤並查明其可能故障或性能降低的地方。與日誌比較,日誌儲存成本高,在做除錯時沒適當的搜尋格式,每個服務同時打印日誌時,這除錯過程更加艱辛,日誌不會有上下文關係。


上一篇
分散式鏈路追蹤 - Jaeger
下一篇
OpenTelemetry 與 Jaeger 應用 - 2
系列文
一個新鮮人如何完轉Spring boot與DevOps從0到10130

尚未有邦友留言

立即登入留言