簡體   English   中英

如何用最簡單的方式為Golang生成X-Amzn-Trace-Id

[英]how to generate X-Amzn-Trace-Id for Golang in the simplest way

我一直在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(String) 轉換為 xray 跟蹤 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);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM