添加自定义属性 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

添加自定义属性

CloudWatch Application Signals 使用 OpenTelemetry 以自动检测您的应用程序,并从 Java、Python 以及更多不同语言的热门库中收集跨度。

自动检测可以捕获数据库查询、HTTP 请求、缓存访问和外部服务调用等信息,便于您对应用程序性能问题进行故障排除。

您可以添加自定义工具,以使用特定于业务的数据或其他要捕获的信息来丰富跨度。此数据可以记录为自定义属性或跨度事件,从而针对您的故障排除需求提供定制洞察。

注意

有关使用其他语言添加自定义属性或跨度事件的信息,请参阅 OpenTelemetry 网站中的 Language APIs & SDKS

自定义属性

您可以使用 OpenTelemetry 支持的所有语言,将业务相关属性或任何其他属性添加到跨度中。以下是向跨度添加订单编号和客户详细信息的 Java 代码片段。

import io.opentelemetry.api.trace.Span; public class OrderProcessor { public void processOrder() { Span span = Span.current(); span.setAttribute("order.id", "123456"); span.setAttribute("customer.name", "John Doe"); span.setAttribute("customer.id", "4343dfdd"); // Your order processing logic here System.out.println("Order processed with custom attributes"); } }

将这些属性添加到跨度后,即可在 Transaction Search 可视化编辑器中对属性进行搜索和分析。

跨度事件

跨度事件通常用于表示跨度持续时间内有意义的单数时间点。异常将通过自动检测自动捕获为跨度事件,但您也可以添加自定义业务事件,例如付款状态或购物车放弃。有关更多信息,请参阅 OpenTelemetry 网站上的 Span events

您可以使用 CloudWatch Application Signals 和 OpenTelemetry 支持的所有语言,将跨度事件嵌入到跨度中。以下是向跨度添加自定义事件的 Java 代码片段。

import io.opentelemetry.api.trace.Span; public class OrderProcessor { public void bookOrder() { Span span = Span.current(); // Add a booking started event span.addEvent("booking started"); // Add a payment succeeded event or failed event span.addEvent("booking failed"); } }

CloudWatch 代理的先决条件

使用 CloudWatch 代理向 X-Ray 发送跨度事件时,您必须在配置中打开 `transit_spans_in_otlp_format` 标志。

{ "traces": { ... "transit_spans_in_otlp_format": true ... } }

添加这些事件后,您可在 Transaction Search 可视化编辑器使用它们。

CloudWatch Logs 查询

您可以在 CloudWatch Logs 中查询跨度事件以查看高级洞察。以下示例查询命令展示了如何分析应用程序引发的异常:

fields jsonparse(@message) as js | unnest js.events into event | filter event.name = "exception" | display event.attributes.`exception.stacktrace`
fields jsonparse(@message) as js | unnest js.events into event | filter event.name = "exception" | stats count() by event.attributes.`exception.type`