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

如何在Golang项目中集成Prometheus进行监控?

本文将带大家学习如何在 Golang 项目中集成 Prometheus 进行监控,包括安装客户端库、定义和注册指标、暴露指标端点、更新指标值、配置标签和注册表,以及生产环境的建议配置。

添加 Prometheus 客户端库依赖

在 Go 项目中引入 Prometheus 官方客户端库,使用以下命令安装:

go get github.com/prometheus/client_golang/prometheus
go get github.com/prometheus/client_golang/prometheus/promhttp

定义监控指标

根据需求定义指标类型(Counter、Gauge、Histogram 或 Summary)。例如定义一个请求计数器:

var (requestsTotal = prometheus.NewCounter(prometheus.CounterOptsf {Name: "http_requests_total",Help: "Total number of HTTP requests"}}
)

注册指标到默认注册表

在程序初始化阶段注册定义好的指标:

func init() {prometheus.MustRegister(requestsTotal)
}

暴露指标端点

创建一个 HTTP 端点供 Prometheus 抓取数据。通常使用 /metrics 路径:

http.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":8080", nil)

更新指标值

在业务逻辑中更新指标数值。例如在处理 HTTP 请求时增加计数器:

func handler(w http.ResponseWriter, r *http.Request) {requestsTotal.Inc()w.write([]byte("Hello world"))
}

配置标签(可选)

为指标添加动态标签以支持多维监控。例如按状态码统计请求:

requestsByStatus := prometheus.NewCounterVec(prometheus.CounterOpts {Name: "http_requests_by_status",Help:"Requests grouped by status code",},[]string{"code"},
)

自定义注册表(高级用法)

需要隔离指标时创建独立注册表:

reg := prometheus.NewRegistry()
reg.MustRegister(customMetric)
handler := promhttp.HandlerFor(reg, promhttp.HandlerOpts{})

生产环境建议

  • 设置合适的采集间隔(通常 15-30 秒);
  • 为指标添加前缀(如service_name_metric);
  • 监控关键资源(内存、Goroutine 数量等);
  • 使用 Grafana 进行可视化展示。
  • 推荐阅读:https://mybj123.com/27527.html

完整示例代码

package mainimport("net/http""github.com/prometheus/client golang/prometheus""github.com/prometheus/client golang/prometheus/promhttp"
)
var (requestsTotal = prometheus.NewCounter(prometheus.CounterOpts{Name:"myapp_requests_total",Help:"Total requests served",})
)
func init() {prometheus.MustRegister(requestsTotal)
}
func main(){http.HandleFunc("/", func(w http.ResponseWriter,r *http.Request) {requestsTotal.Inc()w.Write([]byte("OK"))})http.Handle("/metrics", promhttp.Handler())http.ListenAndserve(":8080", nil)
}

以上关于如何在Golang项目中集成Prometheus进行监控?的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

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

相关文章:

  • 第177天:信息收集篇自动项目本机导出外部打点域内通讯PillagerBloodHound
  • 如何在Linux中,为Flatpak版本的Edge浏览器导入证书
  • 2025年防火HPL板厂家权威推荐榜单:耐刮防火板/耐高温防火板 /阻燃高压装饰板源头厂家精选
  • Java 集合 “Map(1)”面试清单(含超通俗生活案例与深度理解) - 教程
  • 2025 年铸铁井盖生产厂家最新推荐榜,技术实力与市场口碑深度解析防沉降球墨/防沉降/电力/双层铸铁井盖公司推荐
  • 220kv数字化变电站保护解决方案综述[期刊理解]
  • 2025年10月VI设计公司权威推荐排行榜:排名依据包括项目交付质量、客户满意度、创新能力和市场影响力
  • 2025年0糖苏打水厂家权威推荐榜单:带帽苏打水/茉莉苏打水 /蜜桃苏打水源头厂家精选
  • Bilidown Setup 1.2.7下载
  • rpm因依赖安装失败的一次检查记录
  • 0296-Nand-机器语言
  • 0295-Nand-时序逻辑
  • [apt update docker 密钥问题]
  • 0300-Nand-表示代码
  • Python逻辑运算 _ 今年过节能收礼吗
  • ENGG5301 Information Theory 2025 Midterm Exam P3:Causal Encoding
  • 0291-Nand-实现基础逻辑门(一)
  • NASM下载和安装教程(附安装包)
  • 0292-Nand-实现基础逻辑门(二)
  • 单点登录SSO是怎么实现的?
  • 赋能智慧货运:视频汇聚平台EasyCVR打造货运汽车安全互联网视频监控与管理方案
  • 2025年上海房产继承律师权威推荐榜单:继承律师/离婚律师/婚姻律师事务所精选
  • 【SPIE出版、往届已EI检索】第二届遥感技术与图像处理国际学术会议(RSTIP 2025)
  • autotiny下载_v3.0.0.2
  • 2025 年井盖篦子最新推荐榜,技术实力与市场口碑深度解析铸铁套/树围/球墨铸铁单/溢流井/雨水井盖篦子公司推荐
  • Python嵌套_多条件判断 _ 对象今天会生气吗 II
  • 解析视频融合平台EasyCVR的分析平台技术如何成为“全域视频管理中台”
  • flink-连mongo db
  • uni-app x联系我们,地图显示,拨打电话
  • 统计接口耗时的6种常见方法