框架内置了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 查看结果。
指标名称 | 指标类型 | 指标单位 | 指标描述 |
---|---|---|---|
|
| 当前进程调用的 | |
|
| 已完成的 | |
|
|
| 在 |
|
|
| 自程序启动以来, |
|
| 当前运行的协程数量。 | |
|
| 运行时执行的指针查询的数量。 | |
|
|
| 分配的堆对象的字节数。 |
|
|
| 空闲(未使用)的堆内存。 |
|
|
| 已使用的堆内存。 |
|
| 已分配的堆对象数量。 | |
|
| 存活对象数量( | |
|
|
| 已交还给操作系统的堆内存。 |
|
|
| 从操作系统获得的堆内存。 |
|
|
| 自应用程序被初始化以来的毫秒数。 |