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

部署在EC2的Java应用无法获取AWS XRay追踪及服务地图

排查AWS XRay无追踪数据问题

以下是针对你的情况的具体排查步骤:

1. 验证采样规则配置

你的代码中使用了LocalizedSamplingStrategy,需确认sampling-rules.json的配置是否正确:

  • 检查文件是否存在于类路径下,内容是否包含有效的采样规则,比如默认规则的rate是否大于0(若设为0则不会采样任何请求)。示例正确配置:
    {
      "version": 2,
      "default": {
        "fixed_target": 5,
        "rate": 1.0
      },
      "rules": []
    }
    
  • 如果自定义了规则,确保规则的匹配条件(如http_method、url_path)与实际请求一致,避免请求未命中任何采样规则而被丢弃。

2. 确认XRay Servlet Filter生效

AWSXRayServletFilter负责为HTTP请求自动创建和管理Segment,需验证Filter是否被正确拦截请求:

  • 在Filter的doFilter方法中添加日志(或临时修改代码),确认每个目标请求都经过该Filter。
  • 检查Spring Boot的Filter注册顺序,确保XRay Filter在其他可能截断请求的Filter之前执行。

3. 检查XRay Daemon运行状态

虽然你看到UDP发送日志,但需确认XRay Daemon是否正常将数据转发到AWS XRay服务:

  • 执行ps aux | grep xray确认Daemon进程正在运行。
  • 查看/var/log/xray/xray.log,查找包含Successfully sent batch的日志条目,确认Daemon成功将追踪数据发送到AWS服务。若只有UDP接收日志但无发送成功记录,需检查Daemon的网络配置(如是否能访问XRay服务端点)。

4. 验证IAM角色权限与有效性

已附加AWSXrayWriteOnlyAccess角色,仍需确认:

  • 角色的信任策略是否允许EC2服务扮演该角色(信任策略需包含ec2.amazonaws.com作为Principal)。
  • 在EC2实例上执行测试命令,手动发送测试追踪段:
    aws xray put-trace-segment --trace-segment '{"id": "12345678901234567890123456789012", "name": "test-segment", "start_time": 1620000000.0, "end_time": 1620000001.0}'
    
    执行后查看XRay控制台是否能看到该测试段,若成功则说明权限和网络正常,问题出在应用代码层面。

5. 排除插件冲突与Recorder初始化问题

你同时启用了EC2Plugin和ElasticBeanstalkPlugin,可能存在冲突:

  • 若应用部署在Elastic Beanstalk环境,尝试仅保留ElasticBeanstalkPlugin,移除EC2Plugin后重启应用。
  • 检查Recorder初始化逻辑,确认AWSXRay.setGlobalRecorder(builder.build())执行成功,且后续代码中未覆盖全局Recorder。

6. 忽略CloudWatch Agent提示

你遇到的CloudWatch Agent相关提示属于日志引用功能,不会影响XRay追踪数据的收集与上报,可暂时忽略该警告。

7. 确认控制台时间范围与时区

检查XRay控制台的时间范围设置,同时确认EC2实例的系统时区与控制台时区(默认UTC)是否一致,避免因时区差异导致数据显示在未选择的时间范围内。

内容的提问来源于stack exchange,提问作者Devashish Priyadarshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:54:57