iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
Software Development

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

OpenTelemetry 與 Jaeger 應用 - 2

我們使用 github 上的 docker-compose.yml 進行建置。最後的容器回如下

 docker ps -a
CONTAINER ID   IMAGE                                                 COMMAND                  CREATED        STATUS          PORTS


                      NAMES
d65e2c6dc4ca   otel/opentelemetry-collector-dev:latest               "/otelcol --config=/…"   14 hours ago   Up 14 hours     0.0.0.0:1777->1777/tcp, :::1777->1777/tcp, 0.0.0.0:4317->4317/tcp, :::4317->4317/tcp, 0.0.0.0:55679->55679/tcp, :::55679->55679/tcp, 0.0.0.0:8887->8888/tcp, :::8887->8888/tcp, 0.0.0.0:49169->13133/tcp, :::49169->13133/tcp, 0.0.0.0:49168->14250/tcp, :::49168->14250/tcp, 0.0.0.0:49167->14268/tcp, :::49167->14268/tcp, 0.0.0.0:49166->55678/tcp, :::49166->55678/tcp   opentelemetry_otel-agent_1
1e35da42a6a6   docker.elastic.co/elasticsearch/elasticsearch:7.8.0   "/tini -- /usr/local…"   14 hours ago   Up 14 hours     0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp

                      elasticsearch
8b2b00a192c1   jaegertracing/jaeger-query                            "/go/bin/query-linux"    14 hours ago   Up 14 hours     0.0.0.0:3006->16686/tcp, :::3006->16686/tcp

                      jaeger_query
4c576423605b   prom/prometheus                                       "/bin/prometheus --c…"   14 hours ago   Up 14 hours     0.0.0.0:9090->9090/tcp, :::9090->9090/tcp

                      prometheus
e3251123dfe2   jaegertracing/jaeger-opentelemetry-collector          "/go/bin/opentelemet…"   14 hours ago   Up 14 hours     14267/tcp, 0.0.0.0:9000->14250/tcp, :::9000->14250/tcp, 0.0.0.0:3009->14268/tcp, :::3009->14268/tcp

                      jaeger_collector
85aab4550811   otel/opentelemetry-collector-dev:latest               "/otelcol --config=/…"   14 hours ago   Up 19 minutes   0.0.0.0:1888->1888/tcp, :::1888->1888/tcp, 0.0.0.0:8888-8889->8888-8889/tcp, :::8888-8889->8888-8889/tcp, 0.0.0.0:13133->13133/tcp, :::13133->13133/tcp, 55678/tcp, 0.0.0.0:49173->4317/tcp, :::49173->4317/tcp, 0.0.0.0:55670->55679/tcp, :::55670->55679/tcp
                      opentelemetry_otel-collector_1
84a6eabcb1af   grafana/grafana                                       "/run.sh"                14 hours ago   Up 14 hours     0.0.0.0:3000->3000/tcp, :::3000->3000/tcp

這邊與前一章不同的是這邊使用了 Opentelemetry 的配置進行設定分別是 otel-agent-config.yamlotel-collector-config.yaml 不過這邊 Prometheus 出現一些問題所以就不演示。

接著運行一個在我 github 上的 Spring boot 應用,它是一個簡單的員工管理系統。如下圖

新增員工頁面

Jaeger 介面,同時 Service 有我們定義 OTEL_RESOURCE_ATTRIBUTES 的資源

此時 Jaeger 上 Operation 有很多的操作,這些操作都是觸發該員工管理系統的任意資源。按下 Find traces 後,右邊會有下圖的資訊,內容是 trace 資訊,通常每觸發一個 API 就會產生一個。

我們點選上圖中第一個 trace,會進到如下的頁面,當中可以清楚知道每調用一個服務中的每個原件所耗時的時間,因此我們可以藉由此觀察或許能找出瓶頸。

接著按右上角 trace graph

其呈現的內容會如下,以樹的方式呈現,更加直觀清楚知道調用過程。每個不同的呈現其細節都不一樣。

透過新增一個員工來觀察

這是被追蹤後的結果,

可以看到說它從 controller 最後呼叫到 sql 的儲存,在 Jaeger 也清楚地給予 SQL 相關的操作資訊

在 saveEmployee 中執行了 3383.94 ms 其當中,包含呼叫 EmployeeController.saveEmployee 它花費 3313.63 ms,這當中它右往下呼叫了 CrudRepository.save 花費了 256.723 ms,這當中右呼叫了 demo 花費了 2.452 ms。

今天的文章就分享到這, Jaeger 和 OpenTelemetry 是一個有趣的議題,未來還要更加深入挖掘以及應用


上一篇
OpenTelemetry 與 Jaeger 應用
下一篇
使用 OpenTelemetry api 自訂義內容
系列文
一個新鮮人如何完轉Spring boot與DevOps從0到10130

尚未有邦友留言

立即登入留言