公司动态

用 go-zero 内置 Prometheus 指标接入 Grafana,5 分钟打通微服务监控链路

📅 2026/9/2 13:33:31
用 go-zero 内置 Prometheus 指标接入 Grafana,5 分钟打通微服务监控链路
用 go-zero 内置 Prometheus 指标接入 Grafana5 分钟打通微服务监控链路【免费下载链接】go-zeroA cloud-native Go microservices framework with cli tool for productivity.项目地址: https://gitcode.com/GitHub_Trending/go/go-zero需要观测 go-zero 服务的接口延迟和错误率时不必额外引入埋点库框架自带 Prometheus 兼容的指标出口和 RPC 采集拦截器配合 Grafana启动后 5 分钟内就能得到一块可查询的监控看板。整体方案一览服务启动 → 9101 端口暴露 /metrics → Prometheus 抓取 → Grafana 画图全程只用框架内置能力。配置与接入开启指标出口在你的服务配置文件中加一段 Prometheus 配置指标端口即随服务自动启动。Prometheus: Host: 0.0.0.0 # 监听地址留空则不启用 Port: 9101 # 默认 9101 Path: /metrics # 默认 /metricsServiceConf.SetUp执行时会自动调用 core/prometheus/agent.go 的 StartAgent 拉起独立 HTTP 端口见 core/service/serviceconf.go无需手写 main 逻辑。挂载采集拦截器zrpc 服务只需打开一个开关RPC 调用统计就会自动挂上。Middlewares: Prometheus: truezrpc/server.go 检测到该开关后会注册UnaryPrometheusInterceptor对每个方法记录耗时与状态码业务代码零改动指标定义见 zrpc/internal/serverinterceptors/prometheusinterceptor.go。确认指标可读启动后直接请求出口是最快的验证方式。curl -s http://localhost:9101/metrics | grep rpc_server能打印出rpc_server_requests_*开头的两个指标族说明出口与拦截器都已就位。看效果# HELP rpc_server_requests_duration_ms rpc server requests duration(ms). # TYPE rpc_server_requests_duration_ms histogram rpc_server_requests_duration_ms_bucket{method/user.UserService/GetUser,le5} 34 rpc_server_requests_duration_ms_bucket{method/user.UserService/GetUser,le50} 56 rpc_server_requests_code_total{code0,method/user.UserService/GetUser} 120这意味着GetUser 的绝大多数请求落在 50ms 桶内错误码 0成功占绝对多数。把它接进 Prometheus 后Grafana 里直接按 method 维度画 P95 延迟和错误率曲线即可。进阶把链路串起来如果你需要进一步定位问题有两个可选方向持续剖析配置里加 Profiling 段并指定 ServerAddr 指向 Pyroscope 实例internal/profiling/profiling.go 会在 CPU 负载超过阈值默认 70%时自动采集 CPU、goroutine、内存数据并上传无需重启服务分布式追踪ServiceConf.Telemetry字段支持按 OpenTelemetry 协议上报 span配合采集后端可从监控指标下钻到具体调用链。两者都是配置驱动不开启时对服务无任何影响。踩坑与调优采集间隔scrape_interval 降到 5s 以内能看更细的波动但时间序列数量翻倍先评估 Prometheus 存储量桶分布默认直方图桶覆盖 1~5000ms如果你的接口 SLA 在几十毫秒内可参照 core/metric/histogram.go 自定义更密的桶让 P95 落在有意义的区间配置字段较新版本中ServiceConf.Prometheus标注了 Deprecated 并提示改用 DevServer 段升级后请确认当前版本里指标出口的实际开启方式避免升级后看板断流。后续可探索基于rpc_server_requests_code_total写告警规则把错误率与 P95 延迟推送到值班渠道引入 eBPF 在内核层采集性能数据不依赖进程内埋点对接 OpenTelemetry 全链路标准统一 trace、metric、log 三种观测数据。【免费下载链接】go-zeroA cloud-native Go microservices framework with cli tool for productivity.项目地址: https://gitcode.com/GitHub_Trending/go/go-zero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考