首页 文章

Prometheus cAdvisor码头 Worker 监控

提问于
浏览
4

我使用Prometheus,Grafana和cAdvisor Build 了一个docker监控堆栈 . 使用此查询来获取正在运行的容器:

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

它可以直接拿起容器,一旦我启动一个新的容器就立即拿起它 . 问题是当一个容器被停止或被移除时它不会捡起它,它仍然将它显示为一个正在运行的容器 .

从cAdvisor / metrics endpoints ,一旦容器停止,它就会被删除 .

查询有问题吗?

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

1 回答

  • 3

    它似乎与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配置 .

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

    作为 alternative 如果您不快速提醒,您还可以考虑运行一个查询,将上次看到的日期与当前日期进行比较:

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

相关问题