在上文已经介绍了 Exporter,本文将介绍如何自己写一个 Exporter。
概述
本文将使用 Go 语言 和 Gin 框架,结合 Prometheus 实现了一个简单的自定义监控服务器。该服务器能够收集并暴露以下指标:
- 请求计数器:记录每种状态(
success
或error
)的请求次数。 - 活跃请求数:记录当前正在处理的请求数量。
- 请求处理时长:记录请求的处理时长(以秒为单位)。
项目结构
├── main.go # 主程序代码,包含 Gin 路由和监控指标
└── go.mod # Go 项目的模块文件
安装依赖
首先,安装 Gin 和 Prometheus Go 客户端库:
go get github.com/gin-gonic/gin
go get github.com/prometheus/client_golang/prometheus
go get github.com/prometheus/client_golang/prometheus/promhttp
main.go
文件解析
导入依赖
import ("fmt""log""time""github.com/gin-gonic/gin""github.com/prometheus/client_golang/prometheus""github.com/prometheus/client_golang/prometheus/promhttp"
)
该文件导入了:
gin
:用于构建 HTTP 服务器和路由。prometheus
和promhttp
:用于定义和暴露 Prometheus 监控指标。
定义 Prometheus 指标
var (// 请求计数器requestCounter = prometheus.NewCounterVec(prometheus.CounterOpts{Name: "myapp_request_count",Help: "Total number of requests processed by status.",},[]string{"status"},)// 当前活跃请求数activeRequests = prometheus.NewGauge(prometheus.GaugeOpts{Name: