基本介绍

框架内置了 Go 基础指标,默认情况下是关闭的,需要手动开启,可以通过创建 Provider 时通过 otelmetric.WithBuiltInMetrics() 参数开启。

  1. package main
  2. import (
  3. "go.opentelemetry.io/otel/exporters/prometheus"
  4. "github.com/gogf/gf/contrib/metric/otelmetric/v2"
  5. "github.com/gogf/gf/v2/frame/g"
  6. "github.com/gogf/gf/v2/os/gctx"
  7. "github.com/gogf/gf/v2/os/gmetric"
  8. )
  9. const (
  10. instrument = "github.com/gogf/gf/example/metric/basic"
  11. instrumentVersion = "v1.0"
  12. )
  13. var (
  14. meter = gmetric.GetGlobalProvider().Meter(gmetric.MeterOption{
  15. Instrument: instrument,
  16. InstrumentVersion: instrumentVersion,
  17. })
  18. counter = meter.MustCounter(
  19. "goframe.metric.demo.counter",
  20. gmetric.MetricOption{
  21. Help: "This is a simple demo for Counter usage",
  22. Unit: "bytes",
  23. },
  24. )
  25. )
  26. func main() {
  27. var ctx = gctx.New()
  28. // Prometheus exporter to export metrics as Prometheus format.
  29. exporter, err := prometheus.New(
  30. prometheus.WithoutCounterSuffixes(),
  31. prometheus.WithoutUnits(),
  32. )
  33. if err != nil {
  34. g.Log().Fatal(ctx, err)
  35. }
  36. // OpenTelemetry provider.
  37. provider := otelmetric.MustProvider(
  38. otelmetric.WithReader(exporter),
  39. otelmetric.WithBuiltInMetrics(),
  40. )
  41. provider.SetAsGlobal()
  42. defer provider.Shutdown(ctx)
  43. // Counter.
  44. counter.Inc(ctx)
  45. counter.Add(ctx, 10)
  46. // HTTP Server for metrics exporting.
  47. otelmetric.StartPrometheusMetricsServer(8000, "/metrics")
  48. }

执行后,访问 http://127.0.0.1:8000/metrics 查看结果。

监控告警-内置指标 - 图1

内置指标说明

指标名称指标类型指标单位指标描述
process.runtime.go.cgo.callsCounter当前进程调用的 cgo 次数。
process.runtime.go.gc.countCounter已完成的 gc 周期的次数。
process.runtime.go.gc.pause_nsHistogramnsGC stop-the-world 中暂停的纳秒数量。
process.runtime.go.gc.pause_total_nsCounterns自程序启动以来, GC stop-the-world 的累计微秒计数。
process.runtime.go.goroutinesGauge当前运行的协程数量。
process.runtime.go.lookupsCounter运行时执行的指针查询的数量。
process.runtime.go.mem.heap_allocGaugebytes分配的堆对象的字节数。
process.runtime.go.mem.heap_idleGaugebytes空闲(未使用)的堆内存。
process.runtime.go.mem.heap_inuseGaugebytes已使用的堆内存。
process.runtime.go.mem.heap_objectsGauge已分配的堆对象数量。
process.runtime.go.mem.live_objectsGauge存活对象数量( Mallocs - Frees)
process.runtime.go.mem.heap_releasedGaugebytes已交还给操作系统的堆内存。
process.runtime.go.mem.heap_sysGaugebytes从操作系统获得的堆内存。
process.runtime.uptimeCounterms自应用程序被初始化以来的毫秒数。