Go 运行时指标的语义约定
状态: 开发中
本文档描述了 OpenTelemetry 中 Go 运行时指标的语义约定。这些指标是从 Go 的 runtime/metrics 包中获取的。
Go 内存
描述: 在命名空间 go.memory.* 下捕获的 Go 运行时指标。
指标: go.memory.used
此指标是推荐的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
go.memory.used | UpDownCounter | 每个调用的最大内存使用量的分布。 | Go 运行时使用的内存。[1] |
[1]: 从 (/memory/classes/total:bytes - /memory/classes/heap/released:bytes) 计算得出。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
go.memory.type | 推荐 | 字符串 | 内存的类型。 | other;stack |
go.memory.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
other | Go 运行时使用的内存,不包括此枚举中描述的其他类别的内存使用。 | |
stack | 从堆中分配的、为堆栈空间保留的内存,无论是否当前正在使用。[1] |
[1]: 从 /memory/classes/heap/stacks:bytes 计算得出。
指标: go.memory.limit
此指标是推荐的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
go.memory.limit | UpDownCounter | 每个调用的最大内存使用量的分布。 | 用户配置的 Go 运行时内存限制(如果存在)。[1] |
[1]: 从 /gc/gomemlimit:bytes 计算得出。如果从 Go 运行时获得的限制为 math.MaxInt64,则排除此指标。
指标: go.memory.allocated
此指标是推荐的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
go.memory.allocated | Counter | 每个调用的最大内存使用量的分布。 | 应用程序分配到堆中的内存。[1] |
[1]: 从 /gc/heap/allocs:bytes 计算得出。
指标: go.memory.allocations
此指标是推荐的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
go.memory.allocations | Counter | {allocation} | 应用程序分配到堆中的内存分配次数。[1] |
[1]: 从 /gc/heap/allocs:objects 计算得出。
Go 垃圾回收
描述: 在命名空间 go.memory.gc.* 下捕获的 Go 指标。
指标: go.memory.gc.goal
此指标是推荐的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
go.memory.gc.goal | UpDownCounter | 每个调用的最大内存使用量的分布。 | GC 周期结束时的堆大小目标。[1] |
[1]: 从 /gc/heap/goal:bytes 计算得出。
Go Goroutines
描述: 在命名空间 go.goroutine.* 下捕获的 Go 指标。
指标: go.goroutine.count
此指标是推荐的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
go.goroutine.count | UpDownCounter | {goroutine} | 活动 Goroutine 的数量。[1] |
[1]: 从 /sched/goroutines:goroutines 计算得出。
Go 处理器
描述: 在命名空间 go.processor.* 下捕获的 Go 指标。
指标: go.processor.limit
此指标是推荐的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
go.processor.limit | UpDownCounter | {thread} | 能够同时执行用户级 Go 代码的 OS 线程数。[1] |
[1]: 从 /sched/gomaxprocs:threads 计算得出。
Go 调度器
描述: 在命名空间 go.schedule.* 下捕获的 Go 指标。
指标: go.schedule.duration
此指标是推荐的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
go.schedule.duration | Histogram | s | Goroutines 在实际运行之前处于可运行状态花费在调度器上的时间。[1] |
[1]: 从 /sched/latencies:seconds 计算得出。存储桶边界由运行时提供,并可能发生变化。
Go 运行时配置
描述: 在命名空间 go.config.* 下捕获的 Go 指标。
指标: go.config.gogc
此指标是推荐的。
| 名称 | Instrument Type | Unit (UCUM) | 描述 | Stability | 实体关联 |
|---|---|---|---|---|---|
go.config.gogc | UpDownCounter | % | 用户配置的堆大小目标百分比,否则为 100。[1] |
[1]: 值范围为 [0.0, 100.0]。从 /gc/gogc:percent 计算得出。