使用 X-Ray SDK for .NET,将注释和元数据添加到分段
可以利用注释和元数据记录与请求、环境或应用程序相关的其他信息。可以将注释和元数据添加到 X-Ray SDK 创建的分段或您创建的自定义子分段。
注释是带字符串、数字或布尔值的键值对。系统会对注释编制索引,以便与筛选表达式一起使用。使用注释记录要用于对控制台中的跟踪进行分组的数据或在调用 GetTraceSummaries
API 时使用的数据。
元数据是可以具有任何类型值的键-值对,包括对象和列表,但没有编制索引,无法与筛选条件表达式一起使用。使用元数据记录要存储在跟踪中但不需要用于搜索跟踪的其他数据。
使用 X-Ray SDK for .NET 记录注释
使用注释可记录有关要为其编制索引以进行搜索的分段和子分段的信息。
X-Ray 中的所有注释都需要以下内容:
注释要求
-
键 - X-Ray 注释的键最多可以包含 500 个字母数字字符。除了点或句点(.)之外,不能使用空格或符号
-
值 - X-Ray 注释的值最多可以包含 1,000 个 Unicode 字符。
-
注释的数量 - 每个跟踪最多可使用 50 条注释。
在 AWS Lambda 函数之外记录注释
-
获取
AWSXRayRecorder
的实例。using Amazon.XRay.Recorder.Core; ... AWSXRayRecorder recorder = AWSXRayRecorder.Instance;
-
使用字符串键和布尔型、Int32、Int64、双精度或字符串值调用
addAnnotation
。recorder.AddAnnotation("mykey", "my value");
以下示例说明如何使用包含点和布尔值、数字值或字符串值的字符串键调用
putAnnotation
。document.putAnnotation("testkey.test", "my value");
在 AWS Lambda 函数内部记录注释
Lambda 函数中的分段和子分段均由 Lambda 运行时环境管理。如果要在 Lambda 函数中为分段或子分段添加注释,则必须执行以下操作:
-
在 Lambda 函数中创建分段或子分段。
将注释添加到分段或子分段。
结束分段或子分段。
以下代码示例显示如何在 Lambda 函数中将注释添加到子分段:
#Create the subsegment AWSXRayRecorder.Instance.BeginSubsegment("custom method"); #Add an annotation AWSXRayRecorder.Instance.AddAnnotation("My", "Annotation"); try { YourProcess(); #Your function } catch (Exception e) { AWSXRayRecorder.Instance.AddException(e); } finally #End the subsegment { AWSXRayRecorder.Instance.EndSubsegment(); }
X-Ray SDK 将注释以键-值对的形式记录在分段文档的 annotations
对象中。使用相同键调用两次 addAnnotation
操作将覆盖同一分段或子分段上之前记录的值。
要查找具有带特定值的注释的跟踪,请在annotation[
筛选条件表达式中使用 关键字。key
]
使用 X-Ray SDK for .NET 记录元数据
使用元数据可记录有关您无需编制索引即可在搜索中使用的分段或子分段的信息。元数据值可以是字符串、数字、布尔值或可序列化为 JSON 对象或数组的任何其他对象。
记录元数据
-
获取
AWSXRayRecorder
的实例,如以下代码示例中所示:using Amazon.XRay.Recorder.Core; ... AWSXRayRecorder recorder = AWSXRayRecorder.Instance;
-
使用字符串命名空间、字符串键和对象值调用
AddMetadata
,如以下代码示例所示:recorder.AddMetadata("
my namespace
", "my key
", "my value
");也可以仅使用键和值对来调用
AddMetadata
操作,如以下代码示例中所示:recorder.AddMetadata("
my key
", "my value
");
如果您没有指定命名空间的值,X-Ray SDK 将使用 default
。使用相同键调用两次 AddMetadata
操作将覆盖同一分段或子分段上之前记录的值。