新闻中心

如何在Golang中使用Prometheus+Grafana监控_Golang Prometheus Grafana监控实践

2025-11-25
浏览次数:
返回列表
首先集成Prometheus客户端库,定义请求量、响应时间等指标并暴露/metrics接口;接着配置Prometheus抓取目标,确保状态为UP;最后通过Grafana添加数据源并导入或创建Dashboard展示QPS和延迟等关键指标。

如何在golang中使用prometheus+grafana监控_golang prometheus grafana监控实践

在Golang服务开发中,系统可观测性至关重要。Prometheus 和 Grafana 是目前最流行的开源监控与可视化组合。通过集成 Prometheus 客户端库,可以轻松暴露指标数据,再由 Grafana 展示成直观图表。下面介绍如何在 Golang 项目中实践 Prometheus + Grafana 监控。

引入 Prometheus 客户端库

Prometheus 提供了官方的 Go 客户端库 prometheus/client_golang,用于在应用中定义和暴露指标。

安装依赖:

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

在代码中注册常用指标类型,如计数器(Counter)、直方图(Histogram)、仪表(Gauge)等。

定义并暴露监控指标

以一个 HTTP 服务为例,统计请求次数、响应时间等常见指标。

示例代码:

package main

import ( "net/http" "time" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" )

// 定义指标 var ( httpRequestsTotal = prometheus.NewCounterVec( prometheus.CounterOpts{ Name: "http_requests_total", Help: "Total number of HTTP requests.", }, []string{"method", "endpoint", "code"}, )

httpRequestDuration = prometheus.NewHistogram(
    prometheus.HistogramOpts{
        Name:    "http_request_duration_seconds",
        Help:    "HTTP request latency in seconds.",
        Buckets: prometheus.DefBuckets,
    },
)

)

func init() { prometheus.MustRegister(httpRequestsTotal) prometheus.MustRegister(httpRequestDuration) }

func handler(w http.ResponseWriter, r *http.Request) { start := time.Now()

// 模拟业务逻辑
w.WriteHeader(http.StatusOK)
w.Write([]byte("Hello, Prometheus!"))

// 记录指标
httpRequestsTotal.WithLabelValues(r.Method, r.URL.Path, "200").Inc()
httpRequestDuration.Observe(time.Since(start).Seconds())

}

启动一个 /metrics 接口供 Prometheus 抓取:

美图云修 美图云修

商业级AI影像处理工具

美图云修 50 查看详情 美图云修 func main() { http.HandleFunc("/", handler) http.Handle("/metrics", promhttp.Handler()) // 暴露指标 http.ListenAndServe(":8080", nil) }

配置 Prometheus 抓取数据

修改 prometheus.yml 配置文件,添加你的 Go 应用为监控目标。

scrape_configs: - job_name: 'go-app' static_configs: - targets: ['your-go-app-host:8080']

启动 Prometheus 服务后,访问其 Web 界面(默认 9090 端口),在 “Targets” 中确认状态为 UP,表示抓取正常。

使用 Grafana 可视化监控数据

启动 Grafana(通常使用 Docker):

docker run -d -p 3000:3000 --name=grafana grafana/grafana-enterprise

登录 Grafana(默认账号/密码:admin/admin),添加 Prometheus 为数据源,地址填入 Prometheus 服务地址(如 http://host:9090)。

导入或创建 Dashboard:

  • 可导入社区常用的 Go 应用模板,如 ID 12683("Go Metrics")
  • 自定义面板,查询 http_requests_total 查看 QPS,http_request_duration_seconds 查看 P99 延迟

基本上就这些。只要在 Golang 中正确暴露指标,Prometheus 抓取,Grafana 展示,整套链路就能跑通。关键是指标设计要合理,比如按 endpoint、method、status 分维度,才能支持有效分析。不复杂但容易忽略细节,比如 histogram buckets 设置、label 维度过载等。保持简洁清晰最重要。

以上就是如何在Golang中使用Prometheus+Grafana监控_Golang Prometheus Grafana监控实践的详细内容,更多请关注其它相关文章!


# 何为  # 软文营销推广重要性  # 韶关网站营销推广  # 网站建设后怎么优化网页  # SEO优化网站关键词快速排名百度推广教程  # 商丘全网营销推广软件  # 智慧推广系统网站  # 图标搜索网站建设素材  # 申论网站建设模板范文  # 大足网站建设公司  # 营销推广ppt素材  # 就能  # 访问权限  # 响应时间  # 内网  # git  # 如何使用  # 如何在  # 客户端  # 美图  # igs  # 配置文件  # ai  # 端口  # app  # golang  # github  # docker  # go 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略  Pandas DataFrame:高效添加条件计算列  Highcharts 雷达图径向轴标签定制指南:利用多Y轴实现数值标注  Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略  如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit  如何使用纯J*aScript判断Input元素是否在特定类容器内  双系统安装时,如何设置默认启动系统? msconfig命令了解一下!  如何更改在 Excel 中打开超链接时的默认浏览器  神庙逃亡小游戏在线玩 神庙逃亡小游戏入口  QQ邮箱正确登录入口_QQ邮箱官方网站使用地址  蛙漫移动版在线看 蛙漫手机浏览器直达入口  C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能  深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现  俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航  2025-2030年全球乘用车销量预测:新能源成增长主力  qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决  c++如何使用TBB库进行任务并行_c++ Intel线程构建模块  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  如何仅使用CSS更改登录界面背景图像图标的颜色  微博网页版直接访问 微博网页版账号管理快速入口  Python getattr() 异常处理深度解析:避免程序意外退出  Python模块化编程:有效管理依赖与避免循环引用  铁路12306改签能改到更早的车次吗_铁路12306改签提前车次规则  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程  Angular Material 垂直步进器:实现底部到顶部排序的教程  Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】  Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】  如何在CSS中使用visited与link控制链接颜色_visited link伪类配合  J*aScript类型检查_j*ascript代码规范  蛙漫正版漫画平台入口_蛙漫免费阅读全站漫画资源  一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】  电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】  AO3访问入口汇总 AO3网页版同人作品一键直达  解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误  Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】  qq游戏网页版直接玩_qq游戏免下载快速入口  LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理  Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】  J*a递归快速排序中静态变量的状态管理与陷阱  微信聊天记录怎么加密_微信聊天记录加密方法  漫蛙2正版漫画站 漫蛙2网页版快速访问入口  NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略  小红书网页版入口链接分享 小红书官网直接进  从J*aScript对象中精确提取指定属性的教程  印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  cad如何更改注释性对象的比例_cad注释性比例调整方法  Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】  《GTA6》开发画面疑似泄露!这次可不是AI了 

搜索