【问题标题】:Prometheus query for monitoring docker containers filtered by name and image用于监控按名称和图像过滤的 docker 容器的 Prometheus 查询
【发布时间】:2017-08-04 08:20:14
【问题描述】:

我有几个 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_morsesleepy_wilsoncranky_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”的容器图,无论原始图像如何

【问题讨论】:

    标签: docker prometheus


    【解决方案1】:

    你不能用一个选择器来做到这一点。

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

    在这个级别你能做的最好的就是rate(container_network_receive_bytes_total{image="ubuntu"} [1m] or rate(container_network_receive_bytes_total{name="prometheus"}[1m]

    【讨论】:

    • 我有 grafana、cAdvisor、Promethues 堆栈。你能写出 Grafana 查询的表达式吗?如果可能的话。
    • @Demaunt container_network_receive_bytes_total 未在指标中列出。我只通过守护进程添加了公开的 docker 指标,并通过关注博客 docs.docker.com/config/thirdparty/prometheus 单独使用了 prometheus。是否需要 cadvisor 和 node_exporter?你能指导或提供一些使用 prometheus 监控 docker 容器的在线参考吗
    • @Demaunt 我已经拉了 Cadvisor 并得到了它。
    猜你喜欢
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 2021-09-10
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    相关资源
    最近更新 更多