登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-16 22:18:23 271浏览 收藏

在使用普罗米修斯 Mesos 导出器时,会产生过时的指标,因为它们不会在收集完成后被清除。为了解决这个问题,可以通过将收集器转换为 GaugeVec 并重置它来清除过时的指标。这样可以确保指标在收集完成时被清除,从而确保它们保持最新和准确。

问题内容

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

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

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


解决方案


好吧,看来这比我想象的要容易(如果我在完成这个任务之前熟悉 go-lang 就好了)。 只需将收集器转换为 gaugevec 并重置它即可:

prometheus.NewGaugeVec(prometheus.GaugeOpts{
            Help:      "Total slave CPUs (fractional)",
            Namespace: "mesos",
            Subsystem: "slave",
            Name:      "cpus",
        }, labels): func(st *state, c prometheus.Collector) {
            c.(*prometheus.GaugeVec).Reset() ## <-- added  this for each GaugeVec
            for _, s := range st.Slaves {
                c.(*prometheus.GaugeVec).WithLabelValues(s.PID).Set(s.Total.CPUs)
            }
        },

今天关于《从收集器中清除普罗米修斯指标》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>