普罗米修斯cAdvisordocker监控

我已经使用Prometheus,Grafana和cAdvisor设置了Docker监视堆栈。 在使用此查询来获取运行容器时:

count_scalar(container_last_seen{name=~container1|container2}) 

它拿起容器好了,只要我推出一个新的容器,它立即被拿起。 问题是当一个容器被停止或移除时,它不会提取它,它仍然显示为一个正在运行的容器。

从cAdvisor /度量指标端点一旦容器停止,它将被删除。

查询有什么问题吗?

(这是我用于堆栈: https : //github.com/vegasbrianc/prometheus )

这似乎与cAdvisor将数据存储在内存中的时间有关 。

当cAdvisor将数据保存在内存中时,您仍然在container_last_seen指标中使用有效的date。 所以count_scalar指令仍然“看到”容器,因为它有一个有效的值。

在我的testing设置中,cAdvisor在5分钟内保存数据。 经过这段时间后,我从您的公式中获得正确的信息,因为container_last_seen指标已经消失。

您可以使用--storage_duration标志更改此cAdvisorconfiguration。

 --storage_duration=2m0s: How long to store data. 

如果不想快速提醒,也可以考虑运行一个查询,将上次查看date与当前date进行比较:

 count_scalar(time()-container_last_seen{name=~"container1|container2"}<=60)