1.panic: duplicate metrics collector registration attempted
重复注册。
错误代码如下
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v1"
},
})
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v1"
},
})
但是这样是可以的(value不一样)
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v1"
},
})
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v2"
},
})
2.panic: a previously registered descriptor with the same fully-qualified name as Desc{fqName: "name", help: "", constLabels: {k2="v2"}, variableLabels: []} has different label names or a different help string
name一样但是labels的key不一样也会导致报错。
特别注意,label的key必须是完全一样
错误示例:
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v1"
},
})
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k2"
:
"v2"
},
})
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v1"
},
})
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v1"
,
"k2"
:
"v2"
},
})
当name一样,help不一样也会导致报错
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
Help:
"help"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v1"
},
})
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
Help:
"help1"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v2"
},
})
正确示例:
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v1"
,
"k2"
:
"v2"
},
})
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v1"
,
"k2"
:
"v22"
},
})
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v1"
,
"k2"
:
"v2"
},
})
promauto.NewCounter(prometheus.CounterOpts{
Name:
"name"
,
ConstLabels: prometheus.Labels{
"k1"
:
"v11"
,
"k2"
:
"v22"
},
})