【问题标题】:aws x-ray with pythonaws x 射线与 python
【发布时间】:2021-11-13 01:50:07
【问题描述】:

这是我使用 AWS X-Ray 编写的 Python 代码

没有错误,但它没有向 X-Ray 守护程序发送任何内容。

这段代码缺少什么?

from aws_xray_sdk.core import xray_recorder


xray_recorder.configure(daemon_address="xx.xx.xx.xx:2000")
# Start a segment
segment = xray_recorder.begin_segment('segment_name')
# Start a subsegment
subsegment = xray_recorder.begin_subsegment('subsegment_name')

# Add metadata and annotations
segment.put_metadata('key', dict, 'namespace')
subsegment.put_annotation('key', 'value')

# Close the subsegment and segment
xray_recorder.end_subsegment()
xray_recorder.end_segment()```

【问题讨论】:

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


    【解决方案1】:

    您是否具备使用 X 射线的先决条件?这意味着:

    1. 确保 lambda 具有发送到 X 射线的权限。 Lambda 需要以下权限才能将跟踪数据发送到 X-Ray。将它们添加到您的函数的执行角色。
      • xray:PutTraceSegments
      • xray:PutTelemetryRecords

    这些权限包含在AWSXRayDaemonWriteAccess 托管策略中。

    1. 推荐:在您的 lambda 上启用主动跟踪。这会将数据发送到开箱即用的 X 射线,并启用一些有用的故障排除功能,例如 lambda 冷启动时间。

    更多信息in the aws docs

    【讨论】:

    • 我没有使用 Lambda。我在用 Python 编写的 AWS Glue Job 中使用此代码。由于我使用的是完整的 xray:* 权限,因此权限也没有问题。它没有写入 X-Ray 的可能原因是什么?这里有没有代码丢失?
    • 你看过这个帖子stackoverflow.com/questions/62594081/…吗?有什么帮助吗?
    • 是的。我看过那个帖子。我已经在代码和 VM env 变量中添加了 AWS_XRAY_DAEMON_ADDRESS,并在 Glue 中添加了 X 射线 SDK 库,并启动了一个 VM 以侦听 2000 端口。我唯一的预感是,我上面的 Python 代码是否正确?有什么我想念的吗?我是否需要一些代码,例如 xray_recorder.send() .....类似这样的东西? // 无论如何都没有发送,但你明白了,
    • 要调试,可以在顶部添加import logging,并在导入x ray sdk后立即添加logging.getLogger('aws_xray_sdk').setLevel(logging.DEBUG)。也许日志可以帮助您进一步
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多