Opentracing - 我应该跟踪内部服务工作还是只跟踪 API 调用?

Opentracing - Should I trace internal service work or just API calls?

假设我有执行以下操作的服务:

  1. 收到输入通知
  2. 处理输入通知,这意味着:
    • 一些计算
    • 存储在数据库中
    • 一些计算
    • 生成自己的通知
  3. 向多个客户端发送自己的通知

在这种情况下,最佳做法是什么?我应该使用单独的跨度精细地跟踪每个操作,如计算、存储在数据库中等,还是将其留给指标(即普罗米修斯)并为整个通知处理创建单个跨度?

对于适合您的应用程序的粒度以及您期望生成的跟踪数据量,这在某种程度上取决于您。一个每分钟处理几个请求的应用程序与一个每秒处理 1000 个请求的应用程序有不同的需求。

也就是说,我建议在控制流进入或离开您的应用程序时创建跨度(例如当您的应用程序开始处理来自外部系统的请求或消息时,以及当您的应用程序调用外部依赖项时,例如HTTP 请求、发送通知或来自数据库的 writing/reading),并对应用程序内部的所有内容使用 logs/tags。