この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/semconv/runtime/go-metrics/

翻訳元: open-telemetry/semantic-conventions v1.44.0(コミット e10a930

Goランタイムメトリクスに関するセマンティック規約

ステータス: Development

この文書では、OpenTelemetryにおけるGoランタイムメトリクスに関するセマンティック規約を定義します。 これらのメトリクスは、Goのruntime/metricsパッケージから取得されます。

Goのメモリ

Description: 名前空間go.memory.*の下で取得されるGoランタイムメトリクス。

メトリクス: go.memory.used

このメトリクスは推奨です。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.memory.usedUpDownCounterByGoランタイムが使用しているメモリ。[1]Development

[1]: (/memory/classes/total:bytes - /memory/classes/heap/released:bytes)から計算されます。

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
go.memory.typeDevelopmentRecommendedstringメモリの種別。other; stack
go.memory.detailed_typeDevelopmentOpt-Instringメモリの詳細な種別。[1]heap/objects; heap/free

[1] go.memory.detailed_type: 値は、/memory/classes/...の下でGoランタイムが報告する具体的なメモリクラスと一致すべきです(SHOULD)。取り得る値の一覧は、使用するGoのバージョンによって変わる場合があります。


go.memory.typeには、次のよく知られた値の一覧があります。いずれかが該当する場合はその値を使用しなければならず(MUST)、それ以外の場合は独自の値を使ってもかまいません(MAY)。

ValueDescriptionStability
otherこの列挙で説明されている他のメモリ使用のカテゴリーを除いた、Goランタイムが使用するメモリ。Development
stackヒープから割り当てられ、現在使用中かどうかにかかわらずスタック空間として予約されているメモリ。[2]Development

[2]: /memory/classes/heap/stacks:bytesから計算されます。

Go 1.26時点で、go.memory.detailed_type属性はgo.memory.type属性に対して次の関係を持ちます。go.memory.detailed_typeの値は、使用するGoのバージョンによって変わる場合があります。

go.memory.typego.memory.detailed_type
otherheap/free
otherheap/objects
otherheap/unused
othermetadata/mcache/free
othermetadata/mcache/inuse
othermetadata/mspan/free
othermetadata/mspan/inuse
othermetadata/other
otheros-stacks
otherother
otherprofiling/buckets
stackheap/stacks

メトリクス: go.memory.limit

このメトリクスは推奨です。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.memory.limitUpDownCounterByユーザーが設定したGoランタイムのメモリ上限(存在する場合)。[1]Development

[1]: /gc/gomemlimit:bytesから計算されます。Goランタイムから取得した上限がmath.MaxInt64の場合、このメトリクスは対象から除外されます。

メトリクス: go.memory.allocated

このメトリクスは推奨です。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.memory.allocatedCounterByアプリケーションによってヒープに割り当てられたメモリ。[1]Development

[1]: /gc/heap/allocs:bytesから計算されます。

メトリクス: go.memory.allocations

このメトリクスは推奨です。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.memory.allocationsCounter{allocation}アプリケーションによるヒープへの割り当ての回数。[1]Development

[1]: /gc/heap/allocs:objectsから計算されます。

Goのガーベジコレクション

Description: 名前空間go.memory.gc.*の下で取得されるGoメトリクス。

メトリクス: go.memory.gc.goal

このメトリクスは推奨です。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.memory.gc.goalUpDownCounterByGCサイクル終了時点のヒープサイズの目標値。[1]Development

[1]: /gc/heap/goal:bytesから計算されます。

メトリクス: go.memory.gc.cycles

このメトリクスはopt-inです。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.memory.gc.cyclesCounter{gc_cycle}完了したGCサイクルの数。[1]Development

[1]: /gc/cycles/total:gc-cyclesから計算されます。

メトリクス: go.memory.gc.pause.duration

このメトリクスはopt-inです。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.memory.gc.pause.durationHistogramsGCに関連する個々のstop-the-world一時停止のレイテンシーの分布。world停止を決定した時点からworldが再開されるまでの時間です。[1]Development

[1]: /sched/pauses/total/gc:secondsから計算されます。バケット境界はランタイムによって提供され、変更される場合があります。

GoのCPU

Description: 名前空間go.cpu.*の下で取得されるGoランタイムメトリクス。

メトリクス: go.cpu.time

このメトリクスはopt-inです。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.cpu.timeCountersGoランタイムによって消費された推定CPU時間。[1]Development

[1]: /cpu/classes/...メトリクスから計算されます。このメトリクスは過大に見積もられており、システムのCPU時間の測定値と直接比較することはできません。他のgo.cpu.timeメトリクスとのみ比較してください。

Attributes:

KeyStabilityRequirement LevelValue TypeDescriptionExample Values
go.cpu.stateDevelopmentRequiredstringCPUの状態。user; gc
go.cpu.detailed_stateDevelopmentOpt-InstringCPUの詳細な状態。[1]gc/pause; gc/mark/assist

[1] go.cpu.detailed_state: 値は、/cpu/classes/...の下でGoランタイムが報告する具体的なCPUクラスと一致すべきです(SHOULD)。取り得る値の一覧は、使用するGoのバージョンによって変わる場合があります。


go.cpu.stateには、次のよく知られた値の一覧があります。いずれかが該当する場合はその値を使用しなければならず(MUST)、それ以外の場合は独自の値を使ってもかまいません(MAY)。

ValueDescriptionStability
gcガーベジコレクションのタスクを実行するために消費されたCPU時間。Development
idleGoまたはGoランタイムのコードを実行していない、利用可能なCPU時間。Development
scavenge未使用のメモリを基盤となるプラットフォームに返すために消費されたCPU時間。Development
userユーザーのGoコードの実行に消費されたCPU時間。Development

Go 1.26時点で、go.cpu.detailed_state属性はgo.cpu.state属性に対して次の関係を持ちます。go.cpu.detailed_stateの値は、使用するGoのバージョンによって変わる場合があります。

go.cpu.statego.cpu.detailed_state
useruser
gcgc/mark/assist
gcgc/mark/dedicated
gcgc/mark/idle
gcgc/pause
scavengescavenge/assist
scavengescavenge/background
idleidle

Goのgoroutine

Description: 名前空間go.goroutine.*の下で取得されるGoメトリクス。

メトリクス: go.goroutine.count

このメトリクスは推奨です。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.goroutine.countUpDownCounter{goroutine}生存しているgoroutineの数。[1]Development

[1]: /sched/goroutines:goroutinesから計算されます。

Goのプロセッサー

Description: 名前空間go.processor.*の下で取得されるGoメトリクス。

メトリクス: go.processor.limit

このメトリクスは推奨です。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.processor.limitUpDownCounter{thread}ユーザーレベルのGoコードを同時に実行できるOSスレッドの数。[1]Development

[1]: /sched/gomaxprocs:threadsから計算されます。

Goのスケジューラー

Description: 名前空間go.schedule.*の下で取得されるGoメトリクス。

メトリクス: go.schedule.duration

このメトリクスは推奨です。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.schedule.durationHistogramsgoroutineが実際に実行される前に、実行可能な状態でスケジューラーに滞在した時間。[1]Development

[1]: /sched/latencies:secondsから計算されます。バケット境界はランタイムによって提供され、変更される場合があります。

Goランタイムの設定

Description: 名前空間go.config.*の下で取得されるGoメトリクス。

メトリクス: go.config.gogc

このメトリクスは推奨です。

NameInstrument TypeUnit (UCUM)DescriptionStabilityEntity Associations
go.config.gogcUpDownCounter%ユーザーが設定したヒープサイズ目標のパーセンテージ。未設定の場合は100。[1]Development

[1]: 値の範囲は[0.0,100.0]です。/gc/gogc:percentから計算されます。