使用 Elasticsearch 在 AWS ECS 上部署 jaeger

Deploying jaeger on AWS ECS with Elasticsearch

我应该如何在 AWS ECS 上以 Elasticsearch 作为后端部署 Jaeger?在一张图片中使用 Jaeger 是个好主意还是我应该使用单独的图片?

虽然我没有找到任何关于 jaeger 的官方参考资料,但我认为 jaeger all in one image 不适用于生产。它使一个容器成为单点故障,从而更好地为每个 jaeger 组件使用单独的容器(如果一个容器由于某种原因而关闭 - 其他容器可以继续运行)。

我最近写了一篇 blog post 关于在 AWS 上使用 AWS Elasticsearch (OpenSearch) 服务托管 jaeger。虽然它是通过一体机完成的,但了解如何进行此操作的总体思路仍然很有用。

大致概括一下流程(在post中有详细描述):

  1. 创建 AWS Elasticsearch 集群
  2. 创建 ECS 集群(运行 在 ec2 上)
  3. 创建一个 ECS 任务定义,使用步骤 1url 中的 elasticsearch url 配置了一个 jaeger 一体机镜像
  4. 创建运行创建的任务定义的 ECS 服务
  5. 确保您的 EC2 上的安全组允许访问 jaeger 端口,如所述here
  6. 通过 OpenTelemetry SDK 将 span 发送到您的 jaeger 端点
  7. 通过托管的 jaeger 查看您的跨度 UI (your-ec2-url:16686)

All in one 是开发中用于在本地测试您的工作的有用工具。

对于部署来说,这是非常有限的。理想情况下,要处理潜在的大量流量,您需要扩展部分基础架构。

我建议部署多个 jaeger-collectors,配置为写入 ES 集群。然后你可以将 jaeger-agents 运行 配置为每个应用程序或服务广播遥测信息的 sidecar。这些代理可以配置为转发到收集器列表中的一个,增加一些额外的弹性。