我们使用 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.yaml
、otel-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 是一个有趣的议题,未来还要更加深入挖掘以及应用
问题回答 懒加载路由或元件的意思是当访问该路由,或需要显示该元件时,才载入该路由或元件。这做法会提升...
进击的巨人是我最喜欢的动漫之一,然而故事背景就像我的生活写照,我就像墙内的人们生活在舒适圈中,墙...
群益 API 是利用自己开发的程序,结合群益 API 在群益券商下单的一种方式,通常是做程序交易下单...
上期大略介绍了VR,知道VR是藉由装置,让使用者脱离现实,进入到虚拟的空间。这期就来介绍AR啦~~~...
主机组好後,Server网路环境也是相当重要的一环呢! 在正式安装unRaid前会先谈各网路设备的原...