如何创建查询以监控一天 docker 容器 运行 的分钟数

how to create query to monitoring how many minutes docker containers ran for a day

我正在尝试监控 docker 个容器,但在查询监控容器 运行 一天中有多少分钟时遇到问题

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

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

如果您知道 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 subqueries 来计算 30s 个间隔,当 container_last_seen 时间序列至少有一个变化时。