You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS ECS上部署Elasticsearch为后端的Jaeger及镜像选型

Jaeger部署镜像选型建议

首先明确镜像选型的适用场景:

  • jaegertracing/all-in-one 镜像将Agent、Collector、Query、UI等所有组件打包为单进程运行,仅适合开发测试、PoC验证、单副本小规模低流量场景,不可用于生产环境。
  • 生产环境必须使用独立组件镜像,核心优势如下:
    • 支持独立扩缩容:比如Collector消耗CPU高可以单独扩容Collector,Query查询请求多可以单独扩容Query,无需整体打包扩容浪费资源
    • 故障隔离:单个组件异常不会影响全链路服务,比如Agent上报故障不会导致Query UI不可用
    • 资源配置更合理:不同组件的CPU、内存需求差异大,独立部署可以单独配置资源配额,避免组件间资源争抢

AWS ECS部署Elasticsearch作为后端的Jaeger步骤

部署前确认你已拥有可用的Elasticsearch集群(也可以使用AWS托管的OpenSearch服务,完全兼容Elasticsearch接口),且安全组策略已放行ECS集群到ES服务9200端口的访问权限。

前置准备

  • 已创建可用的ECS集群,配套的IAM角色、安全组配置符合要求
  • 已获取Elasticsearch/OpenSearch的访问地址、端口,若开启了身份认证则提前准备好用户名、密码
  • 若使用EC2启动类型,确保ECS实例的安全组出方向放开ES访问端口;若使用Fargate启动类型,配置任务对应的安全组即可

生产场景(独立组件部署)

1. 部署Jaeger Collector

作为ECS长期服务运行,配置以下核心环境变量指定存储后端:

  • SPAN_STORAGE_TYPE=elasticsearch
  • ES_SERVER_URLS=http://<你的ES服务地址>:9200
  • 若开启ES认证,额外配置ES_USERNAME=<ES用户名>、ES_PASSWORD=<ES密码>

端口按需暴露:14250(gRPC上报端口)、14268(HTTP上报端口)、9411(Zipkin兼容上报端口)。可以搭配AWS Cloud Map做服务注册,或挂载ALB提供统一的上报地址。

2. 部署Jaeger Query

作为ECS长期服务运行,配置和Collector完全一致的ES存储相关环境变量,暴露16686端口作为UI访问入口,建议前端挂载ALB做负载均衡,同时配置身份校验避免公网裸暴露。

3. 部署Jaeger Agent

如果你的业务服务也运行在同一个ECS集群内,建议将Agent作为Sidecar和业务容器放在同一个任务定义中,业务服务直接通过本地端口上报链路数据,延迟更低。配置环境变量REPORTER_GRPC_HOST_PORT=<你的Collector服务地址>:14250指定上报地址即可。

4. 可选:部署Jaeger Ingester

只有当你采用Kafka做链路数据缓冲的架构时才需要部署该组件,直接写入ES的场景可以省略。

测试场景(all-in-one部署)

直接创建ECS任务定义,使用jaegertracing/all-in-one镜像,配置和上述一致的ES存储相关环境变量,按需暴露16686(UI)、14250(gRPC上报)等需要的端口,作为单副本ECS服务运行即可。


部署注意事项
  • 生产环境的Jaeger UI必须添加权限控制,不要直接对公网开放
  • Elasticsearch侧建议配置索引生命周期策略,定期清理过期的链路数据,避免存储占用过高
  • 建议给所有Jaeger组件配置CloudWatch日志收集,方便后续故障排查

内容的提问来源于stack exchange,提问作者michael haberman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:15:03