Prometheus cAdvisor docker 监控

Prometheus cAdvisor docker monitoring

我已经使用 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 指令仍然是 'sees' 容器,因为它有一个有效值。

在我的测试设置中,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)