7

我正在使用 NewGaugeVec 报告我的指标:

elapsed := prometheus.NewGaugeVec(prometheus.GaugeOpts{
    Name: "gogrinder_elapsed_ms",
    Help: "Current time elapsed of gogrinder teststep",
}, []string{"teststep", "user", "iteration", "timestamp"})
prometheus.MustRegister(elapsed)

一切正常,但我注意到我的自定义导出器包含来自 prometheus/go_collector.go 的所有指标:

# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.00041795300000000004
go_gc_duration_seconds{quantile="0.25"} 0.00041795300000000004
go_gc_duration_seconds{quantile="0.5"} 0.00041795300000000004
...

我怀疑这是一种默认行为,但我在文档中没有找到有关如何禁用它的任何内容。关于如何配置我的自定义导出器以使这些默认指标消失的任何想法?

4

5 回答 5

14

好吧,这个话题相当古老,但以防其他人不得不处理它。以下代码适用于当前代码库v0.9.0-pre1

// [...] imports, metric initialization ...

func main() {
  // go get rid of any additional metrics 
  // we have to expose our metrics with a custom registry
  r := prometheus.NewRegistry()
  r.MustRegister(myMetrics)
  handler := promhttp.HandlerFor(r, promhttp.HandlerOpts{})

  // [...] update metrics within a goroutine

  http.Handle("/metrics", handler)
  log.Fatal(http.ListenAndServe(":12345", nil))
}
于 2018-06-07T16:18:14.203 回答
1

这目前在 Go 客户端中是不可能的,一旦https://github.com/prometheus/client_golang/issues/46完成,您将有办法做到这一点。

一般来说,您希望您的自定义导出器导出这些,我知道目前没有意义的唯一一个是 snmp 和 blackbox 导出器。

顺便说一句timestamp,如果您希望使用日志记录而不是度量标准,那么标签似乎很奇怪。请参阅https://blog.raintank.io/logs-and-metrics-and-graphs-oh-my/ Prometheus 的方式是将时间戳作为一个值,而不是作为一个标签。

于 2016-02-01T08:20:12.677 回答
1

我会这样做->

// Register your collectors
elapsed := prometheus.NewGaugeVec(prometheus.GaugeOpts{
    Name: "gogrinder_elapsed_ms",
    Help: "Current time elapsed of gogrinder teststep",
}, []string{"teststep", "user", "iteration", "timestamp"})
prometheus.MustRegister(elapsed)
// Remove Go collector
prometheus.Unregister(prometheus.NewGoCollector())
于 2020-09-06T19:52:41.713 回答
0

作为回答说“你必须自己去做”并没有真正的帮助,但它似乎是目前唯一的选择。

由于 Prometheus 是开源的,如果你真的需要这样做;我相信您必须将这一go_collector.go 第 28 行和相关部分分叉,或者更好地对其进行修改以使所有这些指标成为可选的并进行 PR,以便其他人将来也可以从中受益。

于 2016-01-31T23:09:17.073 回答
0

你现在可以使用--web.disable-exporter-metrics了。

https://github.com/prometheus/node_exporter/pull/1148

于 2021-05-10T15:16:41.770 回答