【问题标题】:clear prometheus metrics from collector从收集器中清除普罗米修斯指标
【发布时间】:2020-06-24 07:59:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: go prometheus


    【解决方案1】:

    好吧,看来这比我想象的要容易(如果我在处理这个任务之前熟悉 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)
                }
            },
    

    【讨论】:

      猜你喜欢
      • 2022-12-22
      • 1970-01-01
      • 2020-01-10
      • 2020-11-12
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      相关资源
      最近更新 更多