0

0

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

P粉602998670

P粉602998670

发布时间:2025-11-25 20:37:02

|

624人浏览过

|

来源于php中文网

原创

首先集成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)等。

立即学习go语言免费学习笔记(深入)”;

定义并暴露监控指标

以一个 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,
    },
)

)

NewsBang
NewsBang

盛大旗下AI团队推出的智能新闻阅读App

下载

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 抓取:

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如何定义变量
golang如何定义变量

golang定义变量的方法:1、声明变量并赋予初始值“var age int =值”;2、声明变量但不赋初始值“var age int”;3、使用短变量声明“age :=值”等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

178

2024.02.23

golang有哪些数据转换方法
golang有哪些数据转换方法

golang数据转换方法:1、类型转换操作符;2、类型断言;3、字符串和数字之间的转换;4、JSON序列化和反序列化;5、使用标准库进行数据转换;6、使用第三方库进行数据转换;7、自定义数据转换函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

226

2024.02.23

golang常用库有哪些
golang常用库有哪些

golang常用库有:1、标准库;2、字符串处理库;3、网络库;4、加密库;5、压缩库;6、xml和json解析库;7、日期和时间库;8、数据库操作库;9、文件操作库;10、图像处理库。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

338

2024.02.23

golang和python的区别是什么
golang和python的区别是什么

golang和python的区别是:1、golang是一种编译型语言,而python是一种解释型语言;2、golang天生支持并发编程,而python对并发与并行的支持相对较弱等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

209

2024.03.05

golang是免费的吗
golang是免费的吗

golang是免费的。golang是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的开源编程语言,采用bsd开源协议。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

391

2024.05.21

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

196

2025.06.09

golang相关判断方法
golang相关判断方法

本专题整合了golang相关判断方法,想了解更详细的相关内容,请阅读下面的文章。

191

2025.06.10

golang数组使用方法
golang数组使用方法

本专题整合了golang数组用法,想了解更多的相关内容,请阅读专题下面的文章。

192

2025.06.17

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

27

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.7万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号