一个 OTEL Span 中的多个错误

主要观点:工作中出现如何处理单个跨度内多个错误的问题,起初认为跨度内有多个错误是设计缺陷,后认为一般应每个跨度只有一个错误,但某些情况下多个错误有意义,需深入探讨。
关键信息:

  • 错误以“event”形式存储在“span”中,可多次调用“span.recordError(err)”,但跨度只有一个状态(Unset、Ok 或 Error)。
  • 想在一个追踪中存储多个错误会导致覆盖之前错误值,且失去很多过滤能力和按错误类型分组的能力。
  • 建议为每个操作(或函数)设置一个跨度,主方法发射单个跨度和多个子跨度,子跨度可有自己的错误细节,父跨度可包含错误和操作总体状态。
  • 存储多个错误的好例子是操作在成功前可多次发出相同错误。
  • 处理方式很大程度取决于使用的追踪提供程序,不同提供程序可能需调整用法。
    重要细节:
  • 示例代码展示了如何在函数中处理跨度和错误,如“handleMessage”函数和“Retry”函数。
  • 提到可添加诸如“operation_count”“operation_failures”等属性。
  • 对于有问题的代码库,建议在问题区域添加更多跨度,但要考虑麻烦程度。
阅读 8
0 条评论