当前位置:首页 >> 养护

应用于OpenTelemetry进行端到端跟踪

来源:养护   2023年04月23日 12:16

让我们内置opentelemetry该软件:

#1:在独立模式下列车运行 Apache APISIX 以使演示非常易于表达出来。实际上,这在制造中都是一个很差的做法。

#2:内置opentelemetry为全局该软件。

#3:增设增值的中文名称。它将出从前行踪标示出元件中都的中文名称。

#4:将行踪发送到jaeger增值。表列一小将对其进行描述。

我们想行踪至多数据流,所以我们一定会将该软件增设为全局该软件,而不是向至多数据流填充该软件:

#1:行踪对效能有制约。我们追踪的越多,我们的制约就越。因此,我们一定会正确地抵消效能制约与可通过观察连续性的坏处。但是,对于演示,我们希望行踪每个请。

搜集、传输和标示出轨迹

虽然 Trace Context 是 W3C 原则,而 OpenTelemetry 是事实上的规范,但产品上长期存在许多搜集、传输和标示出行踪的系统设计。每个系统设计都可以备有所有三种特连续性或仅备有其中都的一一小。例如,Elastic 指针执行传输和标示出,但您必须依靠其他刚才来搜集。另一方面,Jaeger和Zipkin确实备有了一个完备的套件来付诸所有三个特连续性。

Jaeger 和 Zipkin 早于 OpenTelemetry,因此每个都有其行踪传输XML。不过,它们确实备有了与 OpenTelemetry XML的集成。

在这篇帖子的覆盖范围内,确切的系统设计相当方面,因为我们只并不需要特连续性。我选择 Jaeger 是因为它备有了一个一体化的 Docker 镜像:每个特连续性都有其元件,但它们都嵌入在同一个镜像中都,这使得内置非常加轻松。

镜像的方面端口如下:

Docker Compose 位如下标明:

#1:用作all-in-one三维。

#2:非常重要:竣工 OpenTelemetry XML的搜集器。

#3:暴露 UI 端口。

从前我们已经创建了基建,我们可以着重于于在我们的该软件中都竣工行踪。

Flask 该软件中都的行踪

该pricing增值是一个简单的Flask该软件。它备有了一个端点来从图表源中都得到单个商品的售价。

#1:端点

#2:线并不需要商品的ID。

#3:用作 SQLAlchemy 从图表源中都得到图表。

#4:真实定价引擎永远不就会随着短时间的推移调回相同的售价。让我们将售价随机化一点以取乐。

警告:每次军令行得到单一售价是非常低效的。它并不需要与商品一样多的军令行,但它备有了非常很棒的行踪。在现实生活中都,数据流一定会能够接受多个商品 ID 并在一个请-作出反应中都得到所有方面售价。

从前是检测该软件的时候了。有两种选择:系统会仪表和手动仪表。系统会是比较简单和快速的取得胜利;修订版并不需要着重于的合作开发短时间。我建议从系统会开始,如果并不需要,只填充手动。

我们并不需要填充几个 Python 包被:

我们并不需要内置几个模板:

#1:将行踪寄送 Jaeger。

#2:增设增值的中文名称。它将出从前行踪标示出元件中都的中文名称。

#3:我们对历史历史记录和测试形式都本来。

从前,我们不用作规范flask run军令,而是将其包被装:

就这样,我们已经从形式军令行和 Flask 数据流中都搜集了 span。

如果并不需要,我们可以手动填充额外的横跨径,例如. :

#1:用作内置的标记和也就是说填充一个额外的横跨径。

Spring Boot 该软件中都的行踪

该增值是用Kotlin 合作开发catalog的 Reactive Spring Boot该软件。它备有了两个端点:

一取单品另一种是得到所有商品。

两者都先拍照商品图表源,然后查询上述pricing增值的售价。

至于 Python,我们可以利用系统会和手动检测。让我们从唾手可得的系统会化仪表开始。在 JVM 上,我们通过一个指派来付诸:

与 Python 一样,它为每个形式军令行和 HTTP 大门点创建横跨径。它还检测 JDBC 军令行,但我们有一个反应式指针,因此用作 R2DBC。作为历史记录,GitHub 问题已开放以填充支持。

我们并不需要内置默认行为:

#1:将行踪寄送 Jaeger。

#2:增设增值的中文名称。它将出从前行踪标示出元件中都的中文名称。

#3:我们对历史历史记录和测试形式都本来。

至于 Python,我们可以通过填充手动检测来改善游戏。有两个选项举例来说:比较简单和基于脚注。除非我们引入 Spring Cloud Sleuth,否则前者实在太复杂。让我们填充脚注。

我们并不需要一个额外的仰赖:

则有:该烧结是最近从io.opentelemetry:opentelemetry-extension-annotations.

我们从前可以脚注我们的代码:

#1:用作内置的标记填充一个额外的横跨径。

#2:将模板用作也就是说,双键增设为id,值增设为模板的列车运行时值。

结果!

我们从前可以用作我们的简单演示来拍照结果:

作出反应相当奇怪,但让我们看看 Jaeger UI。我们找到了两条踪迹,每次军令行一条:

我们可以研究成果单个行踪的横跨径:

则有,我们可以在没有上述 UML 示意图的意味着推断出序列逆。非常多的是,序列标示出元件内部的军令行。

每个横跨径都包被含系统会检测填充的也就是说和我们手动填充的也就是说:

结论

在这篇文章中都,我展览品了行踪横跨 API 交换机的请、基于不同技术指针的两个该软件以及它们各自的图表源。我只刷了行踪的表面:在现实世界中都,行踪可能会就会方面与 HTTP 无关的元件,例如 Kafka 和通告链表。

尽管如此,大多数系统对还是以一种或另一种形式仰赖 HTTP。虽然增设起来相当简单,但也不是太难。横跨元件行踪 HTTP 请是您付诸系统对可通过观察连续性旅途的良好开端。

抵抗力差吃什么可以增强抵抗力
兰州白癜风权威医院
艾得辛治疗类风湿效果好吗
老人怎么缓解类风湿关节炎疼痛
南宁妇科检查哪些项目
友情链接