【问题标题】:Mark AWS lambda parent segment as fault or error将 AWS lambda 父段标记为故障或错误
【发布时间】:2019-06-17 23:50:32
【问题描述】:

是否可以将 aws-lambda 函数的父段标记为故障或错误?

Aws 文档指出 you can't add annotations and metadata to the parent segment 但我似乎无法找到是否可以将父段标记为故障或错误。

用错误/错误标记子段按预期工作:

AWSXRayRecorder recorder = AWSXRayRecorder.Instance;
recorder.BeginSubsegment("X");
recorder.MarkFault();
recorder.EndSubsegment();

结果:

但它不会将父段标记为有故障,只会标记子段。

我如何设法将父段标记为“故障”?

【问题讨论】:

    标签: c# .net aws-lambda segment aws-xray


    【解决方案1】:

    父段由 lambda 服务管理。无法修改该段的内容。 仅当您的函数引发未处理的异常时,该段才被标记为错误或故障。

    目前,您唯一的选择是在示例中为 X 添加注释。假设您可以添加注释xfailed,其值为true

    您在该段上标记故障的确切用例是什么?它是根据某些条件搜索痕迹吗?

    在这种情况下,您还可以使用像 annotation.xfailed = true 这样的过滤器表达式。这将找到符合此条件的跟踪。

    您也可以使用此条件创建一个组。这样,您可以查看仅包含与此标准匹配的跟踪的服务地图。您可以在此处阅读有关群组的更多信息:

    https://aws.amazon.com/about-aws/whats-new/2018/11/aws-xray-adds-the-ability-to-group-traces/

    https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-groups

    注意:组按检索到的与过滤器表达式匹配的跟踪数计费。

    请让我更详细地了解您的用例。

    【讨论】:

    • 对于用例,我想在 lambda 函数中发生错误时直观地显示在服务图中。如果函数中某处发生错误,我希望能够将父段标记为错误。现在我只能将一个子段标记为故障,这在跟踪本身中可见,但在服务图中不可见。
    • 是的,目前不可能,因为该段由 lambda 管理。 lambda 段也是绿色的,因为函数执行本身没有引发异常。至少今天是这样。
    • 要在服务图中直观地看到它,您可以为此类情况向子分段添加注释。然后,您可以使用我在上面的答案中描述的过滤器表达式创建一个组。这样,您可以看到两个服务图 - 您今天看到的默认一个和一个基于过滤器表达式的组。该组将仅包含与过滤器匹配的跟踪。对于该组,您只需为与我在答案中提到的过滤器匹配的跟踪数量付费。如果您想要直观地跟踪的故障很少发生,那么成本将相对较低。
    • 所以对于我的问题“是否可以将 aws-lambda 函数的父段标记为故障或错误?”简单的答案是否定的。
    • 正确,目前没有。
    猜你喜欢
    • 2021-04-09
    • 2022-07-08
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多