代码拉取完成,页面将自动刷新
package metric
import (
prom "github.com/prometheus/client_golang/prometheus"
)
type (
// A CounterVecOpts is an alias of VectorOpts.
CounterVecOpts VectorOpts
// CounterVec interface represents a counter vector.
CounterVec interface {
// Inc increments labels.
Inc(labels ...string)
// Add adds labels with v.
Add(v float64, labels ...string)
}
promCounterVec struct {
// CounterVec允许在同一个指标名称下记录多个不同维度的计数器值,每个维度都有自己的标签,更加灵活
// 用于记录只增不减的度量数据,即Counter类型指标。
// Counter指标通常用于表示计数器的数量,例如HTTP请求数、错误次数、任务执行次数等。
// CounterVec同样可以包含多个维度,每个维度对应一个标签,方便对计数器进行细粒度的区分和查询。
counter *prom.CounterVec
}
)
// NewCounterVec returns a CounterVec.
func NewCounterVec(cfg *CounterVecOpts) CounterVec {
if cfg == nil {
return nil
}
// 这里有多种声明方式 也可以这样声明
//vec := promauto.NewCounterVec(prom.CounterOpts{
// Namespace: cfg.Namespace, // 指标的命名空间 并避免不同应用程序之间的指标名称冲突
// Subsystem: cfg.Subsystem, // 指标的子系统名称 用于更进一步组织指标,并区分同一应用程序中的不同组件
// Name: cfg.Name, // 指标的名称 唯一
// Help: cfg.Help, // 指标的相关信息
//}, cfg.Labels)
vec := prom.NewCounterVec(prom.CounterOpts{
Namespace: cfg.Namespace, // 指标的命名空间 并避免不同应用程序之间的指标名称冲突
Subsystem: cfg.Subsystem, // 指标的子系统名称 用于更进一步组织指标,并区分同一应用程序中的不同组件
Name: cfg.Name, // 指标的名称 唯一
Help: cfg.Help, // 指标的相关信息
}, cfg.Labels) // 指标的标签名
prom.MustRegister(vec)
// 存储到 自定义的结构体 自己在此基础上进行封装
cv := &promCounterVec{
counter: vec,
}
return cv
}
// Inc 恒定进行+1 操作
func (cv *promCounterVec) Inc(labels ...string) {
cv.counter.WithLabelValues(labels...).Inc()
}
// Add 添加 任意值 到原来值中
func (cv *promCounterVec) Add(v float64, labels ...string) {
cv.counter.WithLabelValues(labels...).Add(v)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。