aws-xray-sdk-python:手动创建的段不会显示在AWS服务地图上

问题描述

我在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服务地图上,我们还应该做些什么?

解决方法

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