地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Go】otelでspanにattributeを付ける

SetAttributesを使うことで実現できる。例えば以下はtraceの情報にAddという関数の引数をattributeにつけることで情報が追加される。

package calc

import (
    "context"

    "go.opentelemetry.io/otel"
    "go.opentelemetry.io/otel/attribute"
)

var tracer = otel.Tracer("otel-echo-calc")

func Add(ctx context.Context, x, y int) int {
    ctx, span := tracer.Start(ctx, "Add")
    defer span.End()
    span.SetAttributes(
        attribute.Int("x", x),
        attribute.Int("y", y),
    )

    return x + y
}

エラーを記録する

span.RecordErrorを使うことでエラーを記録することができる。またspan.RecordError(err, trace.WithStackTrace(true))とすることでスタックトレースまで送ることができるようになっている。ただこれをやるとデータ量が嵩みそうなので使い所はきちんと選んで使う感じになりそう

pkg.go.dev