Metrics No-Op API Implementation

状态: 稳定

OpenTelemetry 的用户需要一种方法来禁用 API 的实际操作。No-Op OpenTelemetry API 实现(以下简称 No-Op)为用户提供了此功能。它实现了 OpenTelemetry API,因此不会产生任何遥测数据,并最大限度地减少了计算资源。

所有语言实现的 OpenTelemetry 都必须提供 No-Op。

MeterProvider

No-Op 必须允许创建多个 MeterProvider。

No-Op 创建的 MeterProvider 需要占用尽可能小的内存。因此,所有创建的 MeterProvider 都不能包含配置或操作状态。

由于所有 MeterProvider 都具有相同的空状态,因此 No-Op 可以为所有创建请求提供相同的 MeterProvider 实例。

No-Op 被 OpenTelemetry 用户用来禁用 OpenTelemetry 的计算开销并消除 OpenTelemetry 相关的输出。因此,MeterProvider 在执行任何操作时都不能返回非空错误或记录任何消息。

MeterProvider 提供的所有操作都必须是并发安全的。

Meter 创建

New Meter 实例始终使用 MeterProvider 创建。因此,MeterProvider 必须允许创建 Meter。所有创建的 Meter 都必须是 No-Op Meter 的实例。

由于所有 Meter 都将具有相同的空状态,因此 MeterProvider 可以为所有创建请求返回相同的 Meter 实例。

API 指定了创建操作需要接受的多个参数。MeterProvider 必须接受这些参数。但是,MeterProvider 不能验证它收到的任何参数。

Meter

No-Op 创建的 Meter 需要占用尽可能小的内存。因此,所有创建的 Meter 都不能包含配置或操作状态。

Meter 在执行任何操作时都不能返回非空错误或记录任何消息。

Meter 提供的所有操作都必须是并发安全的。

Counter 创建

No-Op Meter 必须为用户提供一个接口来创建 Counter instrument

由于所有 Counter 都具有相同的空状态,因此 Meter 可以为所有创建请求返回相同的 Counter 实例。

API 指定了创建操作需要接受的多个参数。Meter 必须接受这些参数。但是,Meter 不能验证它收到的任何参数。

UpDownCounter 创建

No-Op Meter 必须为用户提供一个接口来创建 UpDownCounter instrument

由于所有 UpDownCounter 都具有相同的空状态,因此 Meter 可以为所有创建请求返回相同的 UpDownCounter 实例。

API 指定了创建操作需要接受的多个参数。Meter 必须接受这些参数。但是,Meter 不能验证它收到的任何参数。

Histogram 创建

No-Op Meter 必须为用户提供一个接口来创建 Histogram instrument

由于所有 Histogram 都具有相同的空状态,因此 Meter 可以为所有创建请求返回相同的 Histogram 实例。

API 指定了创建操作需要接受的多个参数。Meter 必须接受这些参数。但是,Meter 不能验证它收到的任何参数。

Asynchronous Counter 创建

No-Op Meter 必须为用户提供一个接口来创建 Asynchronous Counter instrument

由于所有 Asynchronous Counter 都具有相同的空状态,因此 Meter 可以为所有创建请求返回相同的 Asynchronous Counter 实例。

API 指定了创建操作需要接受的多个参数。Meter 必须接受这些参数。但是,Meter 不能验证它收到的任何参数,也不能保留对传入回调的任何引用。

Asynchronous UpDownCounter 创建

No-Op Meter 必须为用户提供一个接口来创建 Asynchronous UpDownCounter instrument

由于所有 Asynchronous UpDownCounter 都具有相同的空状态,因此 Meter 可以为所有创建请求返回相同的 Asynchronous UpDownCounter 实例。

API 指定了创建操作需要接受的多个参数。Meter 必须接受这些参数。但是,Meter 不能验证它收到的任何参数,也不能保留对传入回调的任何引用。

Asynchronous Gauge 创建

No-Op Meter 必须为用户提供一个接口来创建 Asynchronous Gauge instrument

由于所有 Asynchronous Gauge 都具有相同的空状态,因此 Meter 可以为所有创建请求返回相同的 Asynchronous UpDownCounter 实例。

API 指定了创建操作需要接受的多个参数。Meter 必须接受这些参数。但是,Meter 不能验证它收到的任何参数,也不能保留对传入回调的任何引用。

Instruments

Instrument 用于对系统进行测量和报告遥测数据。但是,No-Op 用于禁用此遥测数据的生成。因此,No-Op 提供的所有 instrument 都不能包含任何配置或操作状态,包括遥测数据的聚合。

Counter

Counter 在执行任何操作时都不能返回非空错误或记录任何消息。

Counter 提供的所有操作都必须是并发安全的。

Counter Add

No-Op Counter 必须为用户提供一个 Add 接口,该接口实现 API。它不能验证或保留关于其收到的参数的任何状态。

UpDownCounter

UpDownCounter 在执行任何操作时都不能返回非空错误或记录任何消息。

UpDownCounter 提供的所有操作都必须是并发安全的。

UpDownCounter Add

No-Op UpDownCounter 必须为用户提供一个 Add 接口,该接口实现 API。它不能验证或保留关于其收到的参数的任何状态。

Histogram

Histogram 在执行任何操作时都不能返回非空错误或记录任何消息。

Histogram 提供的所有操作都必须是并发安全的。

Histogram Record

No-Op Histogram 必须为用户提供一个 Record 接口,该接口实现 API。它不能验证或保留关于其收到的参数的任何状态。

Asynchronous Counter

Asynchronous Counter 在执行任何操作时都不能返回非空错误或记录任何消息。

Asynchronous Counter 提供的所有操作都必须是并发安全的。

Asynchronous Counter Observations

No-Op Asynchronous Counter 不能验证或保留关于 instrument 的 observations 的任何状态。

Asynchronous UpDownCounter

Asynchronous UpDownCounter 在执行任何操作时都不能返回非空错误或记录任何消息。

Asynchronous UpDownCounter 提供的所有操作都必须是并发安全的。

Asynchronous UpDownCounter Observations

No-Op Asynchronous UpDownCounter 不能验证或保留关于 instrument 的 observations 的任何状态。

Asynchronous Gauge

Asynchronous Gauge 在执行任何操作时都不能返回非空错误或记录任何消息。

Asynchronous Gauge 提供的所有操作都必须是并发安全的。

Asynchronous Gauge Observations

No-Op Asynchronous Gauge 不能验证或保留关于 instrument 的 observations 的任何状态。

参考