Go-Prometheus指标采集与监控全栈实践

📅 2026/8/20 22:48:45
Go-Prometheus指标采集与监控全栈实践
Go-Prometheus指标采集与监控从Counter到Histogram全栈实践文章导语Prometheus是CNCF毕业的监控标准Go的prometheus/client_golang库是集成Prometheus的首选。本文基于Gin构建完整的指标监控体系。一、指标类型var(httpRequestsTotalprometheus.NewCounterVec(prometheus.CounterOpts{Name:http_requests_total,Help:Total number of HTTP requests,},[]string{method,path,status},)httpRequestDurationprometheus.NewHistogramVec(prometheus.HistogramOpts{Name:http_request_duration_seconds,Help:HTTP request latency,Buckets:prometheus.DefBuckets,},[]string{method,path},))funcinit(){prometheus.MustRegister(httpRequestsTotal)prometheus.MustRegister(httpRequestDuration)}二、Gin监控中间件funcPrometheusMiddleware()gin.HandlerFunc{returnfunc(c*gin.Context){start:time.Now()c.Next()status:strconv.Itoa(c.Writer.Status())httpRequestsTotal.WithLabelValues(c.Request.Method,c.FullPath(),status).Inc()httpRequestDuration.WithLabelValues(c.Request.Method,c.FullPath()).Observe(time.Since(start).Seconds())}}// 暴露/metrics端点r.GET(/metrics,gin.WrapH(promhttp.Handler()))三、自定义业务指标var(ordersProcessedprometheus.NewCounter(prometheus.CounterOpts{Name:orders_processed_total,Help:Processed orders count,})activeUsersprometheus.NewGauge(prometheus.GaugeOpts{Name:active_users,Help:Currently active users,}))四、全文总结Counter累计计数只增不减Gauge瞬时值可增可减Histogram分布统计自动计算分位数Summary客户端分位数计算参考文献Prometheus Go Client: https://github.com/prometheus/client_golangPrometheus文档Google SRE Book - Monitoring