当前位置: 首页 > news >正文

go metrics的数据如何收集展示

在 Go 中收集和展示 metrics(指标数据),最主流和标准化的方案是使用Prometheus生态系统,即:使用prometheus/client_golang库暴露指标,由 Prometheus 服务抓取存储,最后在 Grafana 中展示

第一步:在 Go 应用中暴露 Metrics 端点

你需要先在你的 Go 应用中集成 Prometheus 客户端库,创建一个 HTTP 端点(通常是/metrics),Prometheus 会从这个端点拉取数据。

1. 安装依赖

首先,安装所需的库:

bash

go get github.com/prometheus/client_golang/prometheus go get github.com/prometheus/client_golang/prometheus/promauto go get github.com/prometheus/client_golang/prometheus/promhttp
2. 暴露默认的 Go 运行时指标

只需几行代码,你就可以将 Go 应用自身的运行时指标(如 Goroutine 数量、内存使用、GC 次数等)暴露出来:

go

package main import ( "net/http" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { // 将 /metrics 路径交给 promhttp 处理 http.Handle("/metrics", promhttp.Handler()) http.ListenAndServe(":2112", nil) // 监听端口 }

启动后,访问http://localhost:2112/metrics,就能看到一大串文本格式的指标数据了。

3. 自定义业务指标

除了默认指标,你通常需要记录自己业务的监控数据。下面的例子创建了一个Counter类型的指标,用来统计处理的总操作数:

go

package main import ( "net/http" "time" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" "github.com/prometheus/client_golang/prometheus/promhttp" ) // 定义一个全局的 Counter 指标 var ( opsProcessed = promauto.NewCounter(prometheus.CounterOpts{ Name: "myapp_processed_ops_total", Help: "The total number of processed events", }) ) func recordMetrics() { go func() { for { opsProcessed.Inc() // 每2秒将计数器加1 time.Sleep(2 * time.Second) } }() } func main() { recordMetrics() http.Handle("/metrics", promhttp.Handler()) http.ListenAndServe(":2112", nil) }

你还可以使用Gauge(可增可减的仪表盘)、Histogram(统计分布,如请求延迟)和Summary等其他指标类型,以满足不同的监控需求。

第二步:部署 Prometheus 服务抓取指标

现在你的应用已经暴露了指标,但它是被动的。你需要部署一个 Prometheus 服务来定期抓取这些数据并存储起来。

配置 Prometheus(prometheus.yml),添加一个抓取任务(scrape job)指向你的 Go 应用地址:

yaml

scrape_configs: - job_name: 'my-go-app' static_configs: - targets: ['你的Go应用IP:2112'] # 这里的端口需要与代码中一致

第三步:使用 Grafana 展示数据

Prometheus 存储了数据,但查看和探索数据的最佳伴侣是Grafana

  1. 添加数据源:在 Grafana 的配置中,添加 Prometheus 作为数据源,填写其地址。

  2. 创建仪表盘(Dashboard):你可以基于 Prometheus 的查询语言(PromQL)创建图表,例如查询myapp_processed_ops_total的增长率,或go_goroutines的实时数量。你也可以在 Grafana 官网找到许多现成的 Go 应用监控仪表盘模板。

除了 Prometheus + Grafana 这个组合,另外两个工具也值得了解:

  • go-metrics库:如果你需要一个更轻量、嵌入式的方案,go-metrics库是另一个选择。它提供了更丰富的指标类型,并支持直接输出到控制台、文件或发送到 Graphite、InfluxDB 等后端,但生态和可视化能力不如 Prometheus 强大。

  • pprof:这是 Go 语言自带的性能剖析工具。它更侧重于“深度调试”(如 CPU 热点、内存分配),而非“日常监控”。通常将 pprof 用于问题定位,与监控系统互补。

总结

对于 Go 应用 metrics 的收集和展示,首选方案是 Prometheus + Grafana 这套标准组合。通过prometheus/client_golang库,你可以轻松地标准化地暴露指标,从而无缝融入现代监控体系。

http://www.jsqmd.com/news/1405066/

相关文章:

  • UE里怎么播放视频和打开外部网页
  • DBeaver 保姆级使用教程(社区版 DBeaver CE,开发通用)
  • 免费视频转文字教程:6款文案提取软件从上传到导出全步骤 - 软件盘点管家
  • FastCSV 为什么这么快?高性能 CSV 解析背后的 5 个优化秘诀
  • 永恒濒死存在论:递归对抗-核心不变量对自指智能系统的存在论支撑深度研究报告
  • 当码表不再只是“测速器”:用 HERE 地图,把每一次骑行变成可复盘的 3D 故事
  • Android Selinux详解[七]--如何给可执行程序bin加标签
  • 2026年国内十大网站建设公司实力推荐榜:覆盖企业官网、品牌网站与集团门户的全场景选型指南
  • 新乡延津中原文武学校怎么样?收费标准、办学特色全面解析供家长参考 - Luckyone王
  • 飞鱼配音 - 东半球免费的配音平台
  • docker安装elasticsearch
  • 2026 八月最新唐山管道疏通马桶堵漏高压清洗异物打捞靠谱门店推荐 - 启航优客
  • 第一次委托第三方检测,需要准备哪些基础资料? - 莱缇CMA检测认证
  • 2026年8月雅思备考公司多少钱,PTE口语培训/英文能力提升/文学写作培训/法语培训/德语培训,雅思备考中心哪家可靠 - 企业权威推荐大使
  • Stateflow状态机建模:状态转移
  • 3个核心能力看懂douyin-downloader:从单条保存到抖音主页批量下载的去水印攻略
  • Android Selinux详解[三]--新增设备节点标签相关
  • 快速傅里叶FFT变换
  • 2026 八月最新廊坊疏通马桶地漏维修高压清洗管道测漏打捞攻略 - 启航优客
  • 免费Steam创意工坊下载器怎么用?WorkshopDL完整上手指南(支持1000+游戏模组)
  • Android14 WMS-Power键短按流程
  • QQ空间备份怎么做最省心?一款把数据存回本地的开源插件
  • 新乡延津哪里有文武学校?一文了解中原文武学校收费与办学情况 - Luckyone王
  • 2026 八月最新唐山下水道疏通地漏反水维修冻管处理异物打捞商家汇总 - 启航优客
  • 2026年广州白云区靠谱的律师事务所推荐:本地产业适配与法律服务选型指南 - 滚动商讯
  • 基于SpringBoot的闲置资产管理系统(毕业设计项目源码+文档)
  • 电子元件-门电路
  • cann 9.0.0 安装同时支持 a2 a3 910 950pr的仿真环境 9.0.0(只支持950pr)
  • 涿州蛋糕谁家好?
  • DFRDisplayKm驱动完整上手指南:让MacBook Pro的Touch Bar在Windows 10下恢复全部功力