基本介绍
框架内置了 Go 基础指标,默认情况下是关闭的,需要手动开启,可以通过创建 Provider 时通过 otelmetric.WithBuiltInMetrics() 参数开启。
package main
import (
"go.opentelemetry.io/otel/exporters/prometheus"
"github.com/gogf/gf/contrib/metric/otelmetric/v2"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"github.com/gogf/gf/v2/os/gmetric"
)
const (
instrument = "github.com/gogf/gf/example/metric/basic"
instrumentVersion = "v1.0"
)
var (
meter = gmetric.GetGlobalProvider().Meter(gmetric.MeterOption{
Instrument: instrument,
InstrumentVersion: instrumentVersion,
})
counter = meter.MustCounter(
"goframe.metric.demo.counter",
gmetric.MetricOption{
Help: "This is a simple demo for Counter usage",
Unit: "bytes",
},
)
)
func main() {
var ctx = gctx.New()
// Prometheus exporter to export metrics as Prometheus format.
exporter, err := prometheus.New(
prometheus.WithoutCounterSuffixes(),
prometheus.WithoutUnits(),
)
if err != nil {
g.Log().Fatal(ctx, err)
}
// OpenTelemetry provider.
provider := otelmetric.MustProvider(
otelmetric.WithReader(exporter),
otelmetric.WithBuiltInMetrics(),
)
provider.SetAsGlobal()
defer provider.Shutdown(ctx)
// Counter.
counter.Inc(ctx)
counter.Add(ctx, 10)
// HTTP Server for metrics exporting.
otelmetric.StartPrometheusMetricsServer(8000, "/metrics")
}执行后,访问 http://127.0.0.1:8000/metrics 查看结果。
内置指标说明
| 指标名称 | 指标类型 | 指标单位 | 指标描述 |
|---|---|---|---|
process.runtime.go.cgo.calls |
Counter |
当前进程调用的 CGO 次数。 | |
process.runtime.go.gc.count |
Counter |
已完成的 GC 周期的次数。 | |
process.runtime.go.gc.pause_ns |
Histogram |
ns |
在 GC stop-the-world 中暂停的纳秒数量。 |
process.runtime.go.gc.pause_total_ns |
Counter |
ns |
自程序启动以来,GC stop-the-world 的累计纳秒计数。 |
process.runtime.go.goroutines |
Gauge |
当前运行的协程数量。 | |
process.runtime.go.lookups |
Counter |
运行时执行的指针查找的数量。 | |
process.runtime.go.mem.heap_alloc |
Gauge |
bytes |
分配的堆对象的字节数。 |
process.runtime.go.mem.heap_idle |
Gauge |
bytes |
空闲(未使用)的堆内存。 |
process.runtime.go.mem.heap_inuse |
Gauge |
bytes |
已使用的堆内存。 |
process.runtime.go.mem.heap_objects |
Gauge |
已分配的堆对象数量。 | |
process.runtime.go.mem.live_objects |
Gauge |
存活对象数量(Mallocs - Frees)。 | |
process.runtime.go.mem.heap_released |
Gauge |
bytes |
已交还给操作系统的堆内存。 |
process.runtime.go.mem.heap_sys |
Gauge |
bytes |
从操作系统获得的堆内存。 |
process.runtime.uptime |
Counter |
ms |
自应用程序被初始化以来的毫秒数。 |