我正在使用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
...
我怀疑这是一种默认行为,但我没有找到任何关于如何禁用它的文档。如何配置我的自定义导出器,使这些默认指标消失的想法?
6条答案
按热度按时间f5emj3cl1#
这个主题已经很老了,但是为了防止其他人不得不处理它,下面的代码可以很好地与当前的代码库v0.9.0-pre1配合使用
chy5wohz2#
我会简单地这样做-〉
mdfafbf13#
我的想法是创建一个自定义注册表并注册我们的指标。确保在打开指标的处理程序选项中传递
False
将禁用那些默认指标q8l4jmvw4#
这在Go语言的客户端是不可能的,一旦https://github.com/prometheus/client_golang/issues/46完成,你就有办法做到这一点。
一般来说,你希望你的自定义出口出口这些,唯一的我知道它目前没有意义的是snmp和黑盒出口。
顺便说一下,
timestamp
作为标签似乎有些奇怪,如果你想的话,你应该使用日志记录而不是指标。参见https://blog.raintank.io/logs-and-metrics-and-graphs-oh-my/普罗米修斯的方法是将时间戳作为一个值,而不是作为一个标签。h79rfbju5#
说“你必须自己去做”并不是一个真正有帮助的答案,但这似乎是目前唯一的选择。
因为普罗米修斯是开源的,如果你真的需要这样做;我相信你必须派生this one go_collector.go第28行和相关部分,或者更好的是修改它,使所有这些指标都是可选的,并制作一个PR,以便其他人也可以在未来从中受益。
wljmcqd86#
现在可以使用
--web.disable-exporter-metrics
了。https://github.com/prometheus/node_exporter/pull/1148