Prometheus实例标签与容器

时间:2018-06-24 23:50:35

标签: prometheus

在连续交付的情况下,服务在容器中运行并且每天要部署多次,那么用作instance标签的正确值是什么?

使用容器ID似乎很自然,但是随着时间的推移,instance会导致大量的历史值(即使在任何时间点上只有相对较小的一组值都是“活动的”) )。

考虑到任何标签的基数都不应无限制的建议,这将在Prometheus中引起性能问题。

如果是这样,是否可以通过任何方式减轻它,例如通过调整保留期限或使用其他存储引擎(例如Influx DB适配器)来实现?

1 个答案:

答案 0 :(得分:0)

我对此进行了更多研究,发现其中一个维护者Fabian Reinartz的视频非常启发人:

https://m.youtube.com/watch?v=nDalewt4BOw

基本上,对于Prometheus 2.0或更高版本,仅使用容器ID作为entropy标签就不成问题。

在Prometheus 2中,它具有一个新的时间序列db,已针对这种情况进行了优化。另外,当Prometheus 2检测到instance断开时间过长时,它会认为它已被杀死并且不会再返回,因此正式关闭了该实例的时间序列。这样可以防止时间序列的增长,并有助于解决问题。

从理论上讲,我认为这也意味着我们在计算基数时可以忽略标签的退休历史值,因为不再使用的值最终将通过该机制关闭所有关联的时间序列(假设实例循环情况,例如我所描述的那个)-但是在文档中对此进行澄清将是一件很棒的事情。