09.4、自动插桩 HTTP请求追踪
自动插桩:HTTP 请求追踪
欢迎回到第 9 章的学习。在上一节,我们学习了 OpenTelemetry 配置。现在我们要学习自动插桩:HTTP 请求追踪。
本节将学习:Spring MVC 自动追踪、请求和响应信息、以及 Span 属性。
Spring MVC 自动追踪
Spring MVC 自动追踪是什么? OpenTelemetry Spring Boot Starter 自动为 Spring MVC 控制器方法创建 Span,无需手动代码,零侵入。
如何验证自动追踪呢?
第一步:创建 Controller。 创建
OrderController.java@RestController@RequestMapping第二步:创建 REST 端点。 创建简单的 REST 端点(GET、POST)。
第三步:启动应用。 运行应用,使用 curl 或 Postman 发送 HTTP 请求。
第四步:查看 Trace。 在 Grafana Tempo 中查看自动生成的 Trace。
代码示例:
文件路径:
src/main/java/com/shoehub/orderservice/controller/OrderController.javapackage com.shoehub.orderservice.controller; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api/orders") public class OrderController { @GetMapping("/{id}") public String getOrder(@PathVariable Long id) { return "Order: " + id; } @PostMapping public String createOrder(@RequestBody String orderData) { return "Order created"; } }
自动追踪已经生效,无需任何代码修改。
请求和响应信息
请求和响应信息包含哪些属性呢?
请求属性:
- http.method: HTTP 方法(GET/POST/PUT/DELETE)。
- http.url: 完整的请求 URL。
- http.route: 路由路径(如 /api/orders/{id})。
- http.target: 目标路径。
- http.scheme: http/https。
- http.host: 主机名。
- http.user_agent: 用户代理。
响应属性:
- http.status_code: 200/404/500。
- http.status_text: OK/Not Found/Internal Server Error。
- net.peer.name: 对端主机名。
- net.peer.port: 对端端口。
这些属性由 OpenTelemetry 自动添加。
可以使用 TraceQL 查询:
{http.method="GET"} && {http.status_code="200"}Span 属性
Span 属性是什么? Span 属性用于添加自定义信息,丰富追踪数据。
如何添加自定义属性呢?
第一步:获取当前 Span。 使用
Span.current()第二步:添加自定义属性。 使用
span.setAttribute()第三步:验证属性。 在 Grafana 中验证属性是否被记录。
代码示例:
@GetMapping("/{id}") public String getOrder(@PathVariable Long id) { // Get the current Span Span span = Span.current(); // Adding custom attributes span.setAttribute("order.id", id); span.setAttribute("user.id", "user-123"); span.setAttribute("business.type", "order-query"); return "Order: " + id; }
自定义属性示例: order.id、user.id、business.type、order.amount、order.items。
可以使用 TraceQL 查询自定义属性。
本节小结
在本节中,我们学习了自动插桩:HTTP 请求追踪:
第一个是 Spring MVC 自动追踪。 OpenTelemetry Spring Boot Starter 自动为 Spring MVC 控制器方法创建 Span,无需手动代码。
第二个是请求和响应信息。 请求属性(http.method、http.url、http.route 等)、响应属性(http.status_code、http.status_text 等)。
第三个是 Span 属性。 使用
Span.current()span.setAttribute()HTTP 请求追踪总结: HTTP 请求追踪包括自动追踪(Spring MVC 自动创建 Span)、请求响应信息(自动添加 HTTP 属性)、自定义属性(手动添加业务属性)。这些功能组合在一起,构成了完整的 HTTP 请求追踪能力。
这就是自动插桩:HTTP 请求追踪。掌握这些功能,可以追踪和分析 HTTP 请求。
在下一节,我们将学习自动插桩:数据库查询追踪。学习 Spring Data JPA 自动追踪和 SQL 查询属性。