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

news/2025/10/30 18:03:48/文章来源:https://www.cnblogs.com/mybj123/p/19177824

本文将带大家学习如何在 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.mzph.cn/news/951053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第177天:信息收集篇自动项目本机导出外部打点域内通讯PillagerBloodHound

工具信息收集 内网中 个人用机的角色 账号密码存储 1,浏览器自动存储 2,自己创建文件记录 3,某些工具自动存储 今天的这些工具就是可以对以上这些进行信息进行提取,如果是web服务器或者数据库服务器,用这些工具收…

如何在Linux中,为Flatpak版本的Edge浏览器导入证书

当使用 Flatpak 版本的 Edge 浏览器时,可能会遇到缺少证书管理功能的问题。本文提供了两种解决方案:1)通过 edge://certificate-manager/localcerts 内部链接图形化导入证书;2)将证书文件复制到系统信任目录 /etc…

2025年防火HPL板厂家权威推荐榜单:耐刮防火板/耐高温防火板 /阻燃高压装饰板源头厂家精选

在建筑装饰与工业应用领域,防火HPL板(热固性树脂浸渍纸高压层积板)作为关键的表面装饰耐火材料,其性能直接关系到工程安全与使用寿命。据行业数据显示,2025年全球防火板市场规模预计将以9.74%的年复合增长率持续扩…

Java 集合 “Map(1)”面试清单(含超通俗生活案例与深度理解) - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年铸铁井盖生产厂家最新推荐榜,技术实力与市场口碑深度解析防沉降球墨/防沉降/电力/双层铸铁井盖公司推荐

引言 在城市基础设施建设持续推进的背景下,铸铁井盖的质量与性能对市政安全、道路通行效率至关重要。为助力采购方精准筛选优质供应商,中国市政工程协会联合建筑材料测试中心于 2024 年第四季度开展了铸铁井盖行业专…

smss!SmpStartCsr函数分析之SmpLoadSubSystemsForMuSession3389远程桌面新进程csrss.exe的由来 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

220kv数字化变电站保护解决方案综述[期刊理解]

220kv数字化变电站保护解决方案综述[期刊理解] 本文围绕双母接线型 220kV 数字化变电站,系统阐述了继电保护的实施方案、配置逻辑、故障处理机制及配合关系,核心重点可从以下五大维度梳理:重点内容:核心背景与数字…

2025年10月VI设计公司权威推荐排行榜:排名依据包括项目交付质量、客户满意度、创新能力和市场影响力

摘要 VI设计行业近年来随着品牌竞争加剧而快速发展,企业越来越重视视觉识别系统以提升市场竞争力。2025年,行业趋势聚焦于数字化整合和极简主义设计,帮助企业实现品牌焕新。本文基于权威数据和用户口碑,提供一份VI…

2025年0糖苏打水厂家权威推荐榜单:带帽苏打水/茉莉苏打水 /蜜桃苏打水源头厂家精选

随着健康饮食观念的普及,0糖苏打水市场呈现快速增长态势。行业数据显示,2025年中国无糖饮料市场规模预计突破800亿元,其中0糖苏打水品类年均增长率达25%以上。在这一市场背景下,生产企业的技术实力与品质管控能力成…

Bilidown Setup 1.2.7下载

软件已停更,目前能用,且用且珍惜 Bilidown Setup 1.2.7下载

rpm因依赖安装失败的一次检查记录

rpm安装rpm -i --test XaoS-3.0-1.i386.rpm 出现错误:error: failed dependencies:libslang.so.0 is needed by XaoS-3.0-1libpng.so.0 is needed by XaoS-3.0-1libaa.so.1 is needed by XaoS-3.0-但是,libslang.so.…

0296-Nand-机器语言

环境Time 2023-07-07前言 说明 参考:https://www.nand2tetris.org/ 目标 接上一节,通过模拟的 CPU 实现 mult 和 fill 程序。 mult // r2 = 0 @2 M=0// loop r1 > 0 (LOOP) @1 D=M @END D;JLE// r1 = r1 - 1 D=D-…

0295-Nand-时序逻辑

环境Time 2023-07-07前言 说明 参考:https://www.nand2tetris.org/ 参考:《编码:隐匿在计算机背后的语言》 目标 接上一节,实现 Bit、Register、RAM8、RAM64、RAM512、RAM4K、RAM16K、PC。 Bit /*** 1-bit registe…

[apt update docker 密钥问题]

问题输出 Get:26 http://mirrors.aliyun.com/ubuntu focal-backports/restricted amd64 DEP-11 Metadata [212 B] Get:27 http://mirrors.aliyun.com/ubuntu focal-backports/universe amd64 DEP-11 Metadata [30.5 kB…

0300-Nand-表示代码

环境Time 2023-07-09 Java 17前言 说明 参考:https://craftinginterpreters.com/contents.html https://github.com/GuoYaxiang/craftinginterpreters_zh https://space.bilibili.com/44550904目标 使用 Java 语言脚本…

Python逻辑运算 _ 今年过节能收礼吗

Python逻辑运算 _ 今年过节能收礼吗house_work_count = int(input("house_work_count:"))red_envelope_count = int(input("red_envelope_count:"))shopping_count = int(input("shopping_co…

ENGG5301 Information Theory 2025 Midterm Exam P3:Causal Encoding

题目为回忆版,解答是 GPT-5 写的。 考试时 (1) 问就想偏了,考后看到 GPT-5 的答案很气,不等式想不到直接 (1)(2)(3) 连跪,搞的 (4)(5) 问也没做。 从初中就开始烂完的不等式水平又发力了,但这课确实没啥心思去刷教…

0291-Nand-实现基础逻辑门(一)

环境Time 2023-07-06前言 说明 参考:https://www.nand2tetris.org/ 目标 通过最基础的 Nand(与非门)实现 Not、And、Or、Xor、Mux、DMux 几个基础门。 Not /*** Not gate:* out = not in*/ /** Sets out = in Nand …

NASM下载和安装教程(附安装包)

NASM 全称 Netwide Assembler,诞生于 1996 年,是一款面向 x86 与 x86-64 架构的开源汇编语言编译器。NASM 把纯文本的汇编指令翻译成可执行二进制、目标文件或固件镜像,支持 16/32/64 位三种运行模式,输出格式覆盖…

0292-Nand-实现基础逻辑门(二)

环境Time 2023-07-06前言 说明 参考:https://www.nand2tetris.org/ 目标 接上一节,通过基础的逻辑门实现 Not16、And16、Or16、Mux16 四个基础门。 Not16 /*** 16-bit Not:* for i=0..15: out[i] = not in[i]*/ /** …