新闻中心
Golang如何使用Prometheus监控服务_Golang Prometheus监控操作指南
首先引入Prometheus客户端库,然后定义并注册请求计数器和响应时间直方图等指标,接着通过promhttp暴露/metrics接口,再在中间件中记录请求数和耗时,最后配置Prometheus抓取目标实现监控。

在Go语言开发的微服务或Web应用中,集成Prometheus监控是实现可观测性的常见做法。通过暴露指标接口并交由Prometheus抓取,可以实时掌握服务的运行状态,比如请求量、响应时间、错误率等。下面介绍如何在Golang项目中快速接入Prometheus。
1. 引入Prometheus客户端库
要在Go项目中使用Prometheus,需要引入官方提供的客户端库。该库支持定义和暴露各种类型的监控指标。
go get github.com/prometheus/client_golang/prometheusgo get github.com/prometheus/client_golang/prometheus/promhttp
其中,prometheus 包用于定义指标,promhttp 提供了用于暴露指标的HTTP处理器。
2. 定义并注册监控指标
常见的指标类型包括计数器(Counter)、仪表盘(Gauge)、直方图(Histogram)和摘要(Summary)。根据实际需求选择合适的类型。
例如,定义一个请求计数器和响应时间直方图:
var (
httpRequestsTotal = prometheus.NewCounterVec(
prometheus.CounterOpts{
Name: "http_requests_total",
Help: "Total number of HTTP requests.",
},
[]string{"method", "endpoint", "code"},
)
<pre class='brush:php;toolbar:false;'>httpResponseTime = prometheus.NewHistogramVec(
prometheus.HistogramOpts{
Name: "http_response_time_seconds",
Help: "Histogram of response time for HTTP requests.",
Buckets: []float64{0.1, 0.3, 0.5, 1.0, 3.0},
},
[]string{"method", "endpoint"},
))
注册这些指标到默认的注册中心:
func init() {
prometheus.MustRegister(httpRequestsTotal)
prometheus.MustRegister(httpResponseTime)
}
3. 在HTTP服务中暴露指标接口
使用 promhttp 将指标通过HTTP端点暴露出来,通常挂载在 /metrics 路径。
示例:使用标准 net/http 启动一个监控端口:
CA.LA
第一款时尚产品在线设计平台,服装设计系统
94
查看详情
import (
"net/http"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
<p>func startMetricsServer() {
http.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":9091", nil)
}</p>也可以将该Handler集成进现有服务,比如 Gin 或 Echo 框架中:
r := gin.New()
r.GET("/metrics", gin.WrapH(promhttp.Handler()))
4. 在业务逻辑中更新指标
在处理请求时记录相关数据。例如,在中间件中统计请求数和耗时:
func metricsMiddleware(next http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
<pre class='brush:php;toolbar:false;'> next.ServeHTTP(w, r)
// 假设能获取状态码(需包装ResponseWriter)
httpRequestsTotal.WithLabelValues(
r.Method,
r.URL.Path,
"200", // 实际应动态获取
).Inc()
httpResponseTime.WithLabelValues(
r.Method,
r.URL.Path,
).Observe(time.Since(start).Seconds())
}}
注意:要准确获取状态码,建议封装 http.ResponseWriter 实现 WriteHeader 方法拦截。
配置Prometheus抓取目标时,只需在 prometheus.yml 中添加:
scrape_configs:
- job_name: 'my-go-service'
static_configs:
- targets: ['your-service-ip:9091']
启动Prometheus后,访问其Web界面即可看到采集到的指标。
基本上就这些。只要定义好关键指标,暴露/metrics接口,并让Prometheus定期抓取,就能完成基础监控接入。后续可结合Grafana做可视化展示,提升排查效率。
以上就是Golang如何使用Prometheus监控服务_Golang Prometheus监控操作指南的详细内容,更多请关注其它相关文章!
# 并从
# 巩义便宜网站建设公司
# 宁夏网站建设怎么选
# 设计网站吸引力排名优化
# 南京seo排名电话
# 浦城专业seo
# pc网站建设营销推广
# 大连seo软件电话号码
# 绵竹网站建设定做
# 民宿营销软文推广报价
# 洛阳搜狗关键词排名优化
# 要在
# 只需
# 就能
# 加载
# css
# 如何在
# 客户端
# 响应时间
# 操作指南
# 如何使用
# igs
# 状态码
# 端口
# go语言
# 处理器
# golang
# github
# go
# git
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
使用 Pandas 高效处理 .dat 文件:字符清理与数据计算
EMS快递官网app_中国邮政速递物流手机客户端
qq音乐在线播放入口_qq音乐电脑版登录链接
韩小圈电脑版在线入口_网页版免费登录地址
在J*a里如何理解依赖关系的方向_依赖方向在模块结构中的作用
TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法
《北京人工智能产业白皮书(2025)》发布:全年核心产值预计突破 4500 亿元
Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问
Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】
PostgreSQL海量数据高效导入策略:Python与Django实践指南
基于动态规划的房屋花卉种植最小成本算法详解
Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧
探索高级语言到原生C/C++的转译:挑战与内存管理策略
顺丰国际快递查询 国际件官方查询入口
印象笔记如何设离线包出差查阅_印象笔记设离线包出差查阅【离线阅读】
如何使用 Excel 发布器与 Power BI 分享 Excel 洞察
怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法
蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗
Go语言中Map值调用指针接收器方法的限制与应对
漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址
如何在CSS中使用浮动制作导航栏_float实现水平菜单
Linux如何构建多环境配置管理_Linux多环境配置方案
Mac怎么锁定备忘录_Mac备忘录加密设置教程
NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口
excel如何生成目录 excel一键生成工作表目录超链接
为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法
C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能
免费抖音短视频入口_抖音网页版短视频免费通道
Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接
海棠电脑版入口_通过电脑访问海棠官网阅读
必由学官方平台入口 必由学在线课堂登录地址
1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】
火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧
小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法
千牛数据看板网页版_千牛数据看板网页版访问方法
html5 app怎么运行环境_配html5 app运行环境【教程】
电脑IP地址怎么查 查看本机IP地址的几种方法
必由学官方登录入口 必由学教师学生账号快速访问
QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录
fishbowl官网免费版 fishbowl养鱼网站入口
Flexbox布局实践:实现粘性导航栏与底部固定页脚
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图
顺丰快递查单号物流信息 顺丰快递小程序查询入口
Linux如何排查内存不足OOME问题_LinuxOOM分析教程
Steam官网入口直达 Steam注册及登录步骤
J*a里如何使用forEach遍历Map_Map遍历方法说明
高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法


2025-11-22
浏览次数:次
返回列表
start := time.Now()
<pre class='brush:php;toolbar:false;'> next.ServeHTTP(w, r)
// 假设能获取状态码(需包装ResponseWriter)
httpRequestsTotal.WithLabelValues(
r.Method,
r.URL.Path,
"200", // 实际应动态获取
).Inc()
httpResponseTime.WithLabelValues(
r.Method,
r.URL.Path,
).Observe(time.Since(start).Seconds())
}