用于监视通过名称和图像过滤的docker容器的Prometheus查询

时间:2017-08-04 08:20:15

标签: docker prometheus

我有几个docker容器正在运行:

docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                    NAMES
736caaa764f4        ubuntu               "/bin/bash"              2 hours ago         Up 2 hours                                   quirky_morse
e2869c98ee1a        ubuntu               "/bin/bash"              2 hours ago         Up 2 hours                                   sleepy_wilson
e4149472a2da        ubuntu               "/bin/bash"              2 hours ago         Up 2 hours                                   cranky_booth
70bb44ac5d24        grafana/grafana      "/run.sh"                2 hours ago         Up 2 hours          0.0.0.0:3000->3000/tcp   microservicemonitoring_grafana_1
e4b30881a83e        prom/prometheus      "/bin/prometheus -..."   2 hours ago         Up 2 hours          0.0.0.0:9090->9090/tcp   prometheus
281f792380f9        prom/node-exporter   "/bin/node_exporte..."   2 hours ago         Up 2 hours          9100/tcp                 node-exporter
17810c718b29        google/cadvisor      "/usr/bin/cadvisor..."   2 hours ago         Up 2 hours          8080/tcp                 microservicemonitoring_cadvisor_1
77711de421e2        prom/alertmanager    "/bin/alertmanager..."   2 hours ago         Up 2 hours          0.0.0.0:9093->9093/tcp   microservicemonitoring_alertmanager_1

我想要做的是为按名称和图像过滤的容器构建图表。 示例:从 ubuntu 容器构建( quirky_morse sleepy_wilson cranky_booth )和 prometheus 容器

我可以使用此类查询按图像过滤容器:

sum by (name) (rate(container_network_receive_bytes_total{image="ubuntu"} [1m] ) )

正如你所看到的,我得到了三个容器的图表(扁平线因为它们什么都不做)。 enter image description here

现在我想添加额外的过滤器参数 name ,它无法正常工作

sum by (name) (rate(container_network_receive_bytes_total{image="ubuntu", name="prometheus"} [1m] ) )

我想得到的是:从图像“ubuntu”派生的容器的三个图表和名称为“prometheus”的容器,无论原始图像

1 个答案:

答案 0 :(得分:1)

您无法使用一个选择器执行此操作。

这里适当的解决方案是使用Grafana,它支持在一个图形上绘制多个表达式。

在此级别,您可以做的最好的事情是rate(container_network_receive_bytes_total{image="ubuntu"} [1m] or rate(container_network_receive_bytes_total{name="prometheus"}[1m]