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 是一个有趣的议题,未来还要更加深入挖掘以及应用


<<:  强人PM与敏捷相遇 -2

>>:  第25天 - 文件审核系统(3)_上传、下载的部分

不只懂 Vue 语法:为何懒加载路由和元件会提升网页效能?

问题回答 懒加载路由或元件的意思是当访问该路由,或需要显示该元件时,才载入该路由或元件。这做法会提升...

进击的软件工程师之路-前言

  进击的巨人是我最喜欢的动漫之一,然而故事背景就像我的生活写照,我就像墙内的人们生活在舒适圈中,墙...

【C# 群益 API 开发教学】官方范例下载与安装环境 #CH1

群益 API 是利用自己开发的程序,结合群益 API 在群益券商下单的一种方式,通常是做程序交易下单...

Day3 AR其实在生活中很常见?他们又有那些好处哩(成为史莱姆猎人的萌新)

上期大略介绍了VR,知道VR是藉由装置,让使用者脱离现实,进入到虚拟的空间。这期就来介绍AR啦~~~...

网路设备(上)

主机组好後,Server网路环境也是相当重要的一环呢! 在正式安装unRaid前会先谈各网路设备的原...