仪表化范围

状态: 稳定

软件的一个逻辑单元,在此单元下发出的遥测数据可以与之关联。通常由开发者决定什么构成一个合理的 instrumentation scope。最常见的方法是使用 instrumentation library(instrumentation library)的名称和版本,并将任何附加的标识信息作为 scope 的属性。也可以使用其他软件组件来获取名称、版本和附加属性,例如一个模块、一个包、一个类或一个插件。

Instrumentation scope 由 (name,version,schema_url,attributes) 元组定义,其中 version、schema_url 和 attributes 是可选的。该元组 SHOULD 唯一标识发出遥测数据的逻辑软件单元。一种确保唯一性的典型方法是使用发出软件单元的全限定名(例如,全限定库名或全限定类名)。

Instrumentation scope 用于获取 Tracer、Meter 或 Logger

Instrumentation scope 的 name SHOULD 被指定,以标识 InstrumentationScope 名称。

Instrumentation scope 的可选 Schema URL SHOULD 标识 instrumentation 发出的遥测数据所遵循的 Telemetry Schema

Instrumentation scope 的可选 attributes 提供了关于 scope 的附加信息。例如,对于指定了 instrumentation library 的 scope,可以记录一个附加属性来表示库的源代码存储在哪个仓库 URL。

示例

以下是一个不完整的用例列表

  • 带有名称、版本和包含附加库信息的属性的通用 instrumentation library。
  • 数据库访问,使用其自身的名称和版本(例如 db.system.name)进行 instrument。这可以被抽象访问不同底层数据库的 API 所利用,例如 JDBC 或 SqlAlchemy。
  • 消耗或生成信息的客户端,使用其名称、版本和 id 来设置 InstrumentationScope
  • 内部应用程序组件发出自己的遥测数据,依靠 InstrumentationScope 属性来区分自身,以防存在相同类型的多个实例。