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 应用程序。