登录
首页 >  Golang >  Go问答

如何使用最简单的方式在Golang中生成X-Amzn-Trace-Id

来源:stackoverflow

时间:2024-02-17 12:45:23 486浏览 收藏

大家好,我们又见面了啊~本文《如何使用最简单的方式在Golang中生成X-Amzn-Trace-Id》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我已经看过 AWS 提供的此文档

是否有任何简单的方法可以使用 X-Ray 生成“X-Amzn-Trace-Id”? func NewIDGenerator() 不会生成 Root xxx 的格式。

或者我们可以只使用一个受信任的库吗?谢谢


正确答案


首先使用 opentelemetry 的跟踪器创建跟踪,然后将该上下文注入到 xray propagator 以根据 aws 的 id 规范获取 traceid。

func getamazontraceid(ctx context.context) string {
    propogator := xray.propagator{}
    carrier := propagation.headercarrier{}
    propogator.inject(ctx, carrier)
    traceid := carrier.get("x-amzn-trace-id")
    return traceid
}

或者,您可以编写代码将标准跟踪 id(字符串)转换为 x 射线跟踪 id。

private static final String TRACE_ID_VERSION = "1";
private static final char TRACE_ID_DELIMITER = '-';
private static final int TRACE_ID_DELIMITER_INDEX_1 = 1;
private static final int TRACE_ID_DELIMITER_INDEX_2 = 10;
private static final int TRACE_ID_FIRST_PART_LENGTH = 8;

public static String toXRayTraceId(String traceId) {
    return TRACE_ID_VERSION
        + TRACE_ID_DELIMITER
        + traceId.substring(0, TRACE_ID_FIRST_PART_LENGTH)
        + TRACE_ID_DELIMITER
        + traceId.substring(TRACE_ID_FIRST_PART_LENGTH);
  }

终于介绍完啦!小伙伴们,这篇关于《如何使用最简单的方式在Golang中生成X-Amzn-Trace-Id》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>