【发布时间】:2020-11-26 02:33:13
【问题描述】:
我正在编写一个导出器,但在收集器的指标方面遇到问题。据我所知,Prometheus 中的指标需要事先定义。有没有办法在运行时动态定义它们?在代码运行之前,我不知道我将拥有多少指标或需要哪些指标。 (例如,如果 k8s 找到连接到集群的所有卷,我需要每个卷都获得自己的 total_capacity/available_capacity 指标)。
【问题讨论】:
标签: go kubernetes prometheus
我正在编写一个导出器,但在收集器的指标方面遇到问题。据我所知,Prometheus 中的指标需要事先定义。有没有办法在运行时动态定义它们?在代码运行之前,我不知道我将拥有多少指标或需要哪些指标。 (例如,如果 k8s 找到连接到集群的所有卷,我需要每个卷都获得自己的 total_capacity/available_capacity 指标)。
【问题讨论】:
标签: go kubernetes prometheus
您可以通过使用动态标签值而不是动态指标名称来处理此问题。也就是说,你可以在运行时调用prometheus.Register() 就好了,client_golang 不会知道区别。
【讨论】:
到目前为止,我只使用过 Python 和 Java Prometheus 客户端,但这不只是建议预先定义指标吗?在 Java 中,我可以在运行时在方法内部或任何我想要的地方创建指标。我只需要确保不会再次创建相同的指标,否则库会抛出异常。
【讨论】: