前言
在上一篇文章 OpenTelemetry 实践指南:历史、架构与基本概念中回顾了可观测性的历史以及介绍了一些 OpenTelemetry 的基础概念,同时也介绍了 OpenTelemetry 社区常用的开源项目。
基础背景知识了解后,这篇就来介绍一下使用 OpenTelemetry 如何实战部署应用,同时在一个可视化页面查看 trace、metric 等信息。
项目介绍
我们参考官方文档构建几个 spring boot 、Golang 项目再配合 Agent 其实也可以很方便的集成 OpenTelemetry。
但是要完整的体验 OpenTelemetry 的所有功能,包含 trace、logs、metrics,还有社区这么多语言的支持其实还是比较麻烦的。
我们还需要单独部署 collector、存储的 backend service 等组件、包括 trace UI 展示所需要的 Jaeger,metric 所需要的 grafana 等。
这些所有东西都自己从头弄的话还是比较费时,不过好在社区已经将这些步骤都考虑到了。
特地为大家写了一个 opentelemetry-demo。
这个项目模拟了一个微服务版本的电子商城,主要包含了以下一些项目:
Service | Language | Description |
---|---|---|
accountingservice | Go | 处理和计算订单数据 |
adservice | Java | 广告服务 |
cartservice | .NET | 购物车服务,主要会依赖 Redis |
checkoutservice | Go | checkout |
currencyservice | C++ | 货币转换服务,提供了较高的 QPS 能力。 |
emailservice | Ruby | 邮件服务 |
frauddetectionservice | Kotlin | 风控服务 |
frontend | JavaScript | 前端应用 |
loadgenerator | Python/Locust | 模拟压测服务 |
paymentservice | JavaScript | 支付服务 |
productcatalogservice | Go | 商品服务 |
quoteservice | PHP | 成本服务 |
recommendationservice | Python | 推荐服务 |
shippingservice | Rust | shipping service |
可以发现在这个 demo 中提供了许多的服务,而且包含了几乎所有主流的语言,可以很好的模拟我们实际的使用场景了。 |

通过这张图可以更直观的查看各个服务之间的关系。
整体来说前端所有的请求都会通过 front-end-proxy
这个组件代理,最终再由 front 这个服务进行转发到不同的后端服务中。