如何从代码中获取跟踪 ID?
How to get trace ID from code?
我是 运行 Java 在 Google App Engine 标准环境上的应用程序。
查看日志(特别是 request_log
),我可以看到一些有趣的 ID,例如每个请求的 trace_id
和 request_id
。
几个问题:
- 它们有什么不同?它们是独一无二的吗?
- 如何在应用程序代码中获取它们(针对当前请求)?我想将它们记录到不同的 Stackdriver 数据集并能够关联数据
您可以 set a trace ID when you're doing the HTTP call 使用 X-Cloud-Trace-Context
header,而请求 ID 是 GCP 必须唯一标识每个请求的方式。
所有请求都有ID,只有部分请求有痕迹。只有被跟踪的请求才会将它们的信息发送到 Stackdriver Trace API.
关于第二个问题,我不是很理解,因为Stackdriver Trace API 会return 跟踪请求的所有信息,包括请求ID。 Stackdriver Logging APi 将 return 每个请求的完整日志,这意味着如果它们被跟踪,您将收到请求 ID 和跟踪 ID。无需将这两个字段相关联,因为您总是会将它们放在一起(如果两者都存在)。
在请求处理程序中,您可以访问 headers 并从 HttpServletRequest
中提取 X-Cloud-Trace-Context
@WebServlet(name = "requests", description = "Requests: Trivial request", urlPatterns = "/requests")
public class RequestsServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
req.getHeader("X-Cloud-Trace-Context")
}
}
TraceID 只是对 App Engine 应用程序的特定请求的跟踪标识符,而 RequestID 是请求的全局唯一标识符。 Stackdriver 日志的 RequestID 取决于请求的开始时间。同时,TraceID 将关联的 Stackdriver 跟踪标识为特定请求日志条目 See here。
您可以在 Link 中找到有关用于特定 Stackdriver 请求日志的术语的详细信息。
RequestID 是一个唯一标识符,它是全球唯一的。另一方面,TraceID 是 Stackdriver Trace 独有的 — read more here.
借助 Stackdriver Trace API,您可以使用包 google.devtools.cloudtrace.v1 中的 GetTraceRequest 方法来 retrieve 跟踪 ID 和请求 ID。
我是 运行 Java 在 Google App Engine 标准环境上的应用程序。
查看日志(特别是 request_log
),我可以看到一些有趣的 ID,例如每个请求的 trace_id
和 request_id
。
几个问题:
- 它们有什么不同?它们是独一无二的吗?
- 如何在应用程序代码中获取它们(针对当前请求)?我想将它们记录到不同的 Stackdriver 数据集并能够关联数据
您可以 set a trace ID when you're doing the HTTP call 使用 X-Cloud-Trace-Context
header,而请求 ID 是 GCP 必须唯一标识每个请求的方式。
所有请求都有ID,只有部分请求有痕迹。只有被跟踪的请求才会将它们的信息发送到 Stackdriver Trace API.
关于第二个问题,我不是很理解,因为Stackdriver Trace API 会return 跟踪请求的所有信息,包括请求ID。 Stackdriver Logging APi 将 return 每个请求的完整日志,这意味着如果它们被跟踪,您将收到请求 ID 和跟踪 ID。无需将这两个字段相关联,因为您总是会将它们放在一起(如果两者都存在)。
在请求处理程序中,您可以访问 headers 并从 HttpServletRequest
X-Cloud-Trace-Context
@WebServlet(name = "requests", description = "Requests: Trivial request", urlPatterns = "/requests")
public class RequestsServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
req.getHeader("X-Cloud-Trace-Context")
}
}
TraceID 只是对 App Engine 应用程序的特定请求的跟踪标识符,而 RequestID 是请求的全局唯一标识符。 Stackdriver 日志的 RequestID 取决于请求的开始时间。同时,TraceID 将关联的 Stackdriver 跟踪标识为特定请求日志条目 See here。
您可以在 Link 中找到有关用于特定 Stackdriver 请求日志的术语的详细信息。
RequestID 是一个唯一标识符,它是全球唯一的。另一方面,TraceID 是 Stackdriver Trace 独有的 — read more here.
借助 Stackdriver Trace API,您可以使用包 google.devtools.cloudtrace.v1 中的 GetTraceRequest 方法来 retrieve 跟踪 ID 和请求 ID。