使用 X-Ray 开发工具包生成自定义子分段
注意
终止支持通知:2027 年 2 月 25 日,Amazon X-Ray 将停止对 Amazon X-Ray SDK 和进程守护程序的支持。2027 年 2 月 25 日之后,您将不会再收到更新或发行版本。有关支持时间表的更多信息,请参阅 X-Ray SDK 和进程守护程序终止支持时间表。我们建议迁移到 OpenTelemetry。有关迁移到 OpenTelemetry 的更多信息,请参阅从 X-Ray 检测迁移到 OpenTelemetry 检测。
子分段可为跟踪的分段扩展为了给请求提供服务而已完成的工作的详细信息。每次使用已检测的客户端进行调用时,X-Ray SDK 在子分段中记录生成的信息。您可以创建其他子分段来分组其他子分段,来度量某个代码段的性能如何,或是来记录注释和元数据。
要管理子分段,请使用 begin_subsegment 和 end_subsegment 方法。
subsegment = XRay.recorder.begin_subsegment name: 'annotations', namespace: 'remote'
my_annotations = { id: 12345 }
subsegment.annotations.update my_annotations
XRay.recorder.end_subsegment要为函数创建子分段,可将其包装在对 XRay.recorder.capture 的调用中。
XRay.recorder.capture('name_for_subsegment') do |subsegment|
resp = myfunc() # myfunc is your function
subsegment.annotations.update k1: 'v1'
resp
end当您在分段或者其他子分段中创建子分段时,X-Ray 开发工具包将为其生成 ID 并记录开始时间和结束时间。
例 包含元数据的子分段
"subsegments": [{
"id": "6f1605cd8a07cb70",
"start_time": 1.480305974194E9,
"end_time": 1.4803059742E9,
"name": "Custom subsegment for UserModel.saveUser function",
"metadata": {
"debug": {
"test": "Metadata string from UserModel.saveUser"
}
},