我已经使用 Prometheus、Grafana 和 cAdvisor 设置了一个 docker 监控堆栈。使用此查询获取正在运行的容器时:
count_scalar(container_last_seen{name=~container1|container2})
它可以很好地拾取容器,一旦我启动一个新容器,它就会立即被拾取。问题是当一个容器被停止或移除时,它不会捡起它,它仍然显示它是一个正在运行的容器。
一旦容器停止,它就会从 cAdvisor/metrics 端点中删除。
查询有问题吗?
(这是我用于堆栈的内容: https://github.com/vegasbrianc/prometheus )
最佳答案
好像和amount of time cAdvisor stores the data in memory有关.
虽然 cAdvisor 将数据保存在内存中,但您在 container_last_seen
中仍然有一个有效日期。公制。所以count_scalar
指令仍然“看到”容器,因为它具有有效值。
在我的测试设置中,cAdvisor 将数据保留 5 分钟。在这段时间之后,我从你的公式中得到了正确的信息,因为 container_last_seen
指标消失了。
您可以使用 --storage_duration
更改此 cAdvisor 配置。旗帜。
--storage_duration=2m0s: How long to store data.
作为 替代 如果您不想快速发出警报,您还可以考虑运行一个查询,将上次看到的日期与当前日期进行比较:
count_scalar(time()-container_last_seen{name=~"container1|container2"}<=60)
关于docker - Prometheus cAdvisor docker 监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44386907/