仪表化范围
状态: 稳定
软件的一个逻辑单元,在此单元下发出的遥测数据可以与之关联。通常由开发者决定什么构成一个合理的 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属性来区分自身,以防存在相同类型的多个实例。