基本介绍

框架内置了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

自应用程序被初始化以来的毫秒数。

Content Menu

  • No labels