新增自訂屬性 - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

新增自訂屬性

CloudWatch Application Signals 利用 OpenTelemetry自動檢測您的應用程式,並從不同語言的熱門程式庫收集範圍,例如 Java、 Python等。

自動檢測會擷取資訊,例如資料庫查詢、HTTP 請求、快取存取和外部服務呼叫,這可讓您疑難排解應用程式效能問題。

您可以新增自訂檢測,以使用業務特定資料或您想要擷取的其他資訊來豐富範圍。此資料可以記錄為自訂屬性或跨度事件,提供針對您的故障診斷需求量身打造的洞見。

注意

如需有關以不同語言新增自訂屬性或跨度事件的資訊,請參閱 OpenTelemetry 網站中的語言 APIs和 SDKS

自訂屬性

您可以透過所有語言OpenTelemetry支援,將業務相關屬性或任何其他屬性新增至您的範圍。以下是Java程式碼片段,可將訂單 ID 和客戶詳細資訊新增至範圍。

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"); } }

這些屬性新增至範圍後,即可在交易搜尋視覺化編輯器中搜尋和分析。

跨度事件

跨度事件通常用於表示跨度持續時間內有意義的單一時間點。例外會透過自動檢測自動擷取為跨事件,但您也可以新增自訂商業事件,例如付款狀態或購物車放棄。如需詳細資訊,請參閱 OpenTelemetry 網站上的跨事件

您可以使用 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 ... } }

新增這些事件後,它們會在交易搜尋視覺化編輯器中可用。

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`