1

我在 Docker ECS 容器中运行我的应用程序(因此 XRAY 守护程序也在 Docker 容器中运行)。我看到了由自动修补库(请求、sqlite3、httplib、botocore)和检测中间件(Django)产生的痕迹。日志显示我手动创建的分段和子分段很好,我可以在 AWS 服务地图上看到 trace_id。问题是我在日志中看到的手动创建的段和子段在服务地图上找不到。

这里是一个在 pytest 测试中调用我的 API 和中间件的示例:

from aws_xray_sdk.core import patch_all, xray_recorder

# configure X-RAY plugins for EC2 and ECS
xray_recorder.configure(
    sampling=False,
    context_missing="LOG_ERROR",
    plugins=("EC2Plugin", "ECSPlugin", "ElasticBeanstalkPlugin"),
    daemon_address="127.0.0.1:2000",
    dynamic_naming="*__init__silvakle*",
    service="__INIT__",
)
logging.basicConfig(level="WARNING")
logging.getLogger("aws_xray_sdk").setLevel(logging.DEBUG)
patch_all(double_patch=True)

def test_call_api:
    xray_recorder.begin_segment(name="systest_testX_rest_api")
    #call routine execute_command()
    xray_recorder.end_segment()

@xray_recorder.capture("## execute_command")
def execute_command(text, reply_all_messages=True):
    ...

在终端中,我清楚地看到名为“systest_testX_rest_api”的段和子段“## execute_command”,但在 AWS XRAY 服务地图上,虽然我看到 trace_id 很好,但找不到段和子段。

那么,我在这里缺少什么?我们还应该做些什么来让手动创建的分段和子分段显示在 AWS 服务地图上?

4

1 回答 1

0

要回答您的问题,您无需执行任何操作,只需创建手动分段和子分段以显示在 AWS X-Ray 控制台上。我认为对于手动子分段,您必须将其标记为远程才能显示在 AWS X-Ray 控制台上。我的问题是您是否看到该手动创建的细分的任何下游节点?您能分享您的跟踪时间线和服务地图图像吗?

于 2020-09-15T18:39:14.650 回答