首页 > 解决方案 > 如何创建查询以监控 docker 容器一天运行了多少分钟

问题描述

我正在尝试监控 docker 容器,但是在进行查询以监控容器一天运行的分钟数时遇到问题

count(rate(container_last_seen{id=~"/docker/.*",instance=~"$node"}[1d]))

这是我的查询,显示一天运行了多少容器,但我不知道监控容器一天运行多少分钟

标签: prometheusgrafanaprometheus-alertmanagerpromql

解决方案


如果您知道指标数据点之间的间隔container_last_seen(它被称为scrape_interval并且通常在 Prometheus 配置文件中配置),那么可以使用以下查询来计算容器在最后一天运行时的持续时间(以秒为单位):

count_over_time(
  (changes(container_last_seen{id=~"/docker/.*",instance=~"$node"}[<3*scrape_interval>])>0)
  [1d:<3*scrape_interval>]
)*<3*scrape_interval>

例如,如果scrape_interval等于10s,则查询将如下所示:

count_over_time(
  (changes(container_last_seen{id=~"/docker/.*",instance=~"$node"}[30s])>0)
  [1d:30s]
)*30

此查询使用PromQL 子查询来计算时间序列至少有一次更改30s时的数字间隔。container_last_seen


推荐阅读