【问题标题】:aws-xray-sdk-python: Manually created segments are not displayed on AWS service mapaws-xray-sdk-python:手动创建的段未显示在 AWS 服务地图上
【发布时间】:2020-09-14 20:34:30
【问题描述】:

我在 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 服务地图上?

【问题讨论】:

    标签: python amazon-web-services aws-xray x-ray


    【解决方案1】:

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

    【讨论】:

    • 嘿,非常感谢您的回复!今天我会尽快给你(必须先与老板清理以确保它是犹太洁食)......
    • 好的,目前无法共享服务地图或跟踪时间线(尚未获得 OK),但我可以说:a) 不,我没有看到任何下游节点(原始数据显示 trace_id 子段,其中一个子段作为 parent_id 我手动创建的子段的子段之一(就是这样)。b)尝试在我手动创建的子段中将命名空间指定为“aws”和“remote”,但在这些节点都没有出现在服务地图上。
    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    相关资源
    最近更新 更多