猿问

从收集器中清除普罗米修斯指标

我正在尝试修改 prometheus mesos 导出器以公开框架状态: https ://github.com/mesos/mesos_exporter/pull/97/files

关于 mesos 导出器的一点信息 - 它从 mesos/metrics/snapshot端点和/state端点收集数据。后者的问题,无论是我的 PR 中的更改以及从服务器上报告的现有指标,都是创建的指标永远持续(直到重新启动导出器)。因此,例如,如果一个框架已完成,则为该框架报告的指标将是陈旧的(例如,它仍将显示该框架正在使用 CPU)。

所以我试图弄清楚如何清除那些陈旧的指标。如果我可以在每次收集完成之前清除整个mesosStateCollector时间,那就太棒了。delete对于不同的 p8s 向量(例如),有一种方法GaugeVec,但是为了删除一个指标,我不仅需要标签名称,还需要相关指标的标签值。


Smart猫小萌
浏览 293回答 1
1回答

月关宝盒

好的,看起来它比我想象的要容易(如果我在处理这个任务之前熟悉 go-lang)。只需要将收集器转换为 GaugeVec 并重置它:&nbsp; &nbsp; &nbsp; &nbsp; prometheus.NewGaugeVec(prometheus.GaugeOpts{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Help:&nbsp; &nbsp; &nbsp; "Total slave CPUs (fractional)",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Namespace: "mesos",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Subsystem: "slave",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Name:&nbsp; &nbsp; &nbsp; "cpus",&nbsp; &nbsp; &nbsp; &nbsp; }, labels): func(st *state, c prometheus.Collector) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.(*prometheus.GaugeVec).Reset() ## <-- added&nbsp; this for each GaugeVec&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for _, s := range st.Slaves {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.(*prometheus.GaugeVec).WithLabelValues(s.PID).Set(s.Total.CPUs)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; },
随时随地看视频慕课网APP

相关分类

Go
我要回答