如何在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 main

import(
    "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进行监控?的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

posted @ 2025-10-30 18:01  码云笔记  阅读(8)  评论(0)    收藏  举报