Prometheus 查询监控 docker 按名称和图像过滤的容器
Prometheus query for monitoring docker containers filtered by name and image
我有几个 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] ) )
如您所见,我得到了三个容器的图表(扁平线,因为它们什么都不做)。
现在我想添加额外的过滤器参数 name 但它不起作用
sum by (name) (rate(container_network_receive_bytes_total{image="ubuntu", name="prometheus"} [1m] ) )
我想要得到的是:从图像 "ubuntu" 派生的容器的三个图和一个名称为 "prometheus" 的图,无论原始图像如何
您不能使用一个选择器来完成此操作。
这里正确的解决方案是使用Grafana,它支持在一张图上绘制多个表达式。
在这个级别你能做到的最好的是rate(container_network_receive_bytes_total{image="ubuntu"} [1m] or rate(container_network_receive_bytes_total{name="prometheus"}[1m]
我有几个 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] ) )
如您所见,我得到了三个容器的图表(扁平线,因为它们什么都不做)。
现在我想添加额外的过滤器参数 name 但它不起作用
sum by (name) (rate(container_network_receive_bytes_total{image="ubuntu", name="prometheus"} [1m] ) )
我想要得到的是:从图像 "ubuntu" 派生的容器的三个图和一个名称为 "prometheus" 的图,无论原始图像如何
您不能使用一个选择器来完成此操作。
这里正确的解决方案是使用Grafana,它支持在一张图上绘制多个表达式。
在这个级别你能做到的最好的是rate(container_network_receive_bytes_total{image="ubuntu"} [1m] or rate(container_network_receive_bytes_total{name="prometheus"}[1m]