# prome **Repository Path**: zhucheer/prome ## Basic Information - **Project Name**: prome - **Description**: 微服务Prometheus接入封装 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-09-03 - **Last Updated**: 2023-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Prometheus 快速接入封装 ### 支持框架 - gin 框架 ### 封装说明 此包封装了 3 个默认指标 - 接口请求量计数 - 接口请求耗时 P99, P90, P70, P50 - 应用业务异常计数 其中接口请求量计数和接口请求耗时指标通过中间件接入,应用业务异常计数需要在业务代码中进行调用。 ### gin框架接入 第一步:在入口函数初始化 Prometheus 对象, 传入一个参数,建议是应用名称。 ***注意:*** 初始化时应用应用名称只能是 `[A-Za-z1-9_]` 不能使用中划线 `-`。 ```go prome.NewPrometheus("gin_demo") ``` 注册 gin 服务后添加中间件即可开启接口请求量计数和应用业务异常计数指标 ```go r := gin.Default() prome.Use(r) ``` 业务服务报错指标需要在需要的位置自行添加计数埋点 ```go // 业务报错计数指标 prome.PromeHandler().IncGinServiceErr(c,"testSrv") ``` 一个 gin 完整接入示例: ```go package main import ( "github.com/gin-gonic/gin" "gitee.com/zhucheer/prome" "github.com/prometheus/client_golang/prometheus" ) func main() { promeIns:=prome.NewPrometheus("gin_demo"). RegisterCustomerMetrics("customer","customer metrics", prome.CounterVec, []string{"label1","label2"}) r := gin.Default() promeIns.Use(r) r.GET("/ping", func(c *gin.Context) { // 自定义指标 metrix:=prome.PromeHandler().PromeMetrics("customer").(*prometheus.CounterVec) metrix.WithLabelValues("srvname1","/ping").Inc() // 业务报错计数指标 prome.PromeHandler().IncGinServiceErr(c,"testSrv") c.JSON(200, gin.H{ "message": "pong", }) }) r.Run(":8001") } ```