我使用Prometheus,Grafana和cAdvisor Build 了一个docker监控堆栈 . 使用此查询来获取正在运行的容器:
count_scalar(container_last_seen{name=~container1|container2})
它可以直接拿起容器,一旦我启动一个新的容器就立即拿起它 . 问题是当一个容器被停止或被移除时它不会捡起它,它仍然将它显示为一个正在运行的容器 .
从cAdvisor / metrics endpoints ,一旦容器停止,它就会被删除 .
查询有问题吗?
(这是我用于堆栈的内容:https://github.com/vegasbrianc/prometheus)
1 回答
它似乎与amount of time cAdvisor stores the data in memory有关 .
虽然cAdvisor将数据保存在内存中,但您仍然拥有
container_last_seen
metric中的有效日期 . 所以count_scalar
指令仍然是'sees'容器,因为它具有有效值 .在我的测试设置中,cAdvisor在5分钟内保存数据 . 在此期间之后,我从您的公式中获取了正确的信息,因为
container_last_seen
指标已消失 .您可以使用--storage_duration标志更改此cAdvisor配置 .
作为 alternative 如果您不快速提醒,您还可以考虑运行一个查询,将上次看到的日期与当前日期进行比较: