Prometheus 是一个开源的监控和警报工具包,用于收集和处理应用程序和系统的指标数据。Go 语言(Golang)是一种快速、简洁和并发友好的编程语言,非常适合开发高性能的后端服务。为了使用 Prometheus 监控 Go 语言编写的应用程序,你需要用到 Go 客户端库。

以下是一个简单的示例,演示如何在 Go 应用程序中使用 Prometheus 监控:

1、安装 Prometheus Go 客户端库:

在你的 Go 项目中,使用以下命令安装 Prometheus Go 客户端库:

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

2、在 Go 应用程序中集成 Prometheus 指标:

package main

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

var (
	httpRequestsTotal = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name: "http_requests_total",
			Help: "Number of HTTP requests",
		},
		[]string{"method", "path"},
	)
)

func init() {
	// 注册 Prometheus 指标
	prometheus.MustRegister(httpRequestsTotal)
}

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		httpRequestsTotal.With(prometheus.Labels{"method": r.Method, "path": r.URL.Path}).Inc()
		w.Write([]byte("Hello, world!"))
	})

	// 暴露 Prometheus 指标端点
	http.Handle("/metrics", promhttp.Handler())
	http.ListenAndServe(":8080", nil)
}

此示例创建了一个简单的 HTTP 服务器,监听 8080 端口。服务器会在每个请求到达根路径(“/”)时递增 http_requests_total 指标。还有一个 “/metrics” 端点,用于暴露 Prometheus 指标。

3、配置并运行 Prometheus 以抓取指标:

创建一个名为 prometheus.yml 的配置文件,指向你的 Go 应用程序实例:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'go_app'
    static_configs:
      - targets: ['localhost:8080']

使用以下命令启动 Prometheus,并指定配置文件:

./prometheus --config.file=prometheus.yml

现在,Prometheus 会定期从你的 Go 应用程序抓取指标。你可以在 Prometheus Web UI(默认为 http://localhost:9090)上查询和查看这些指标。

注意:这个示例展示了如何使用 Prometheus Go 客户端库的基本功能。实际应用中,你可能还需要添加其他指标(例如,请求持续时间、内存使用情况等),以便更好地监控你的 Go 应用程序。