我正在编写一个导出器,但在收集器的度量方面遇到麻烦。据我了解,Prometheus中的指标需要预先定义。有什么方法可以在运行时动态定义它们吗?在代码运行之前,我将不知道将拥有多少度量或所需的度量。 (例如,如果k8s找到连接到集群的所有卷,而我需要EACH卷以获取其自己的total_capacity / available_capacity指标)。
答案 0 :(得分:1)
您可以通过使用动态标签值而不是动态指标名称来处理。也就是说,您可以在运行时很好地调用prometheus.Register()
,client_golang不会知道有什么区别。
答案 1 :(得分:0)
到目前为止,我仅使用过Python和Java Prometheus客户端,但这不只是建议预先定义指标吗?在Java中,我可以在运行时在方法内部或任何需要的地方创建指标。我只需要确保不会再次创建相同的指标,否则库将引发异常。