Skip to content

OpenTelemetryのnoopパッケージ

OpenTelemetry SDK for Goはgo.opentelemetry.io/otel/metric/noopパッケージを提供する。このパッケージは「何もしない」各種カウンタを実装している。

おそらく主要な使いどころは、meter.Int64Counter() などでエラーが発生した際のフォールバック先としての利用ではないかと思う。

import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/metric/noop"
)
var (
meter = otel.Meter("example.com/pkg")
counter metric.Int64Counter
)
func init() {
var err error
counter, err = meter.Int64Counter("count")
if err != nil {
otel.Handle(err)
if counter == nil {
counter = noop.Int64Counter{}
}
}
}

こうしておくと、counternil になることを考慮しなくてもよくなる。