简体   繁体   中英

Prometheus query for monitoring docker containers filtered by name and image

I have several docker containers running:

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

What I want to do is to build graphs for containers filtered by name and image. Example: built from ubuntu container ( quirky_morse , sleepy_wilson , cranky_booth ) and prometheus container.

I can filter containers by image with this type of query:

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

As you can see I get graphs of three containers (flatlines because they a re doing nothing). 在此处输入图片说明

Now I want to add additional filter parameter name and it dows not work

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

What I want to get is: three graphs for containers derived from image "ubuntu" and the one with name "prometheus" no matter the origin image

You can't do this with one selector.

The proper solution here is to use Grafana, which supports graphing multiple expressions on one graph.

At this level the best you can do is rate(container_network_receive_bytes_total{image="ubuntu"} [1m] or rate(container_network_receive_bytes_total{name="prometheus"}[1m]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM