服务字段的使用和示例

编辑

本页面涵盖以下主题。

字段复用
编辑

服务字段可用于 * 描述收集数据所属或来源的服务(即被观察服务)* 或 描述与被观察服务存在直接调用关系的外部服务

事件根目录下的服务字段
编辑

使用事件根目录下的服务字段来描述事件主要相关的服务。此用例的一个示例是为特定服务或应用程序(例如 MyService)记录的日志条目。

{
  "service": { 
    "id": "d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6",
    "name": "MyService",
    "version": "1.0.0"
  },
  ...
}

描述正在捕获日志条目的服务

描述调用关系中的外部服务
编辑

多个服务可能存在调用关系。如果可以在所有相关服务上应用 分布式追踪,则使用根级别服务字段 描述各个服务,并使用 追踪字段 来表示调用关系。

在某些情况下,无法在与被观察服务存在调用关系的某些外部服务上应用分布式追踪。让我们考虑一个部署在云提供商上的服务 MyService 的示例,该服务有一个上游 API 网关,该网关将请求传递给 MyService(并提供有关 API 网关本身的其他上下文信息)。为了从 MyService 的角度描述 API 网关作为服务,可以在 service.origin 下嵌套服务字段。

{
  "service": { 
    "id": "d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6",
    "name": "MyService",
    "version": "1.0.0",
    "origin": { 
      "id": "api-gateway-46372994637e2b4567",
      "name": "SomeGateway",
      "version" "2.5.1",
    }
  },
  ...
}

描述接收来自外部服务的入站请求的被观察服务

描述入站请求的外部来源服务

类似于 service.origin 字段的使用,服务字段可以在 service.target.* 下自嵌套,以描述出站请求的外部目标服务。

{
  "service": { 
    "id": "d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6",
    "name": "MyService",
    "version": "1.0.0",
    "target": { 
      "id": "sms-service-0xe6c4272dbeAf0134",
      "name": "ManagedSMSService",
      "version": "1.9.0",
    }
  },
  ...
}

描述发出对外部服务的出站请求的被观察服务

描述出站请求的目标外部服务

请注意,service.origin.*service.target.* 字段应该只用于表示调用关系的事件。