在现代Go应用中,可观测性(Observability)是确保系统可靠性和可维护性的关键。它主要包含三个支柱:Metrics(指标)、Logging(日志)和Tracing(追踪)。下面我将详细介绍如何在Go项目中实现完整的可观测性方案。
1. Metrics(指标)
指标是系统运行状态的量化数据,通常用于监控和告警。
常用库
- Prometheus: 最流行的监控系统
- expvar: Go标准库内置
- OpenTelemetry Metrics: 跨平台指标收集
实现示例
import (
"net/http"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
var (
requestsTotal = prometheus.NewCounterVec(
prometheus.CounterOpts{
Name: "http_requests_total",
Help: "Total number of HTTP requests",
},
[]string{
"method", "path", "status"},
)
requestDuration = prometheus.NewHistogramVec(
prometheus.HistogramOpts{
Name: "http_request_duration_seconds",
Help: "Duration of HTTP requests",
Buckets: prometheus.DefBuckets,
},
[]string{
"method", "path"},
)
)
func init() {
prometheus.MustRegister(requestsTotal)
prometheus.MustRegister(requestDuration)
}
func main() {
http.Handle("/metrics", promhttp.Handler())
http.

最低0.47元/天 解锁文章
645

被折叠的 条评论
为什么被折叠?



