如何配置 prometheus.yml 只为 node-exporter 抓取 运行 个容器

How to configurate prometheus.yml to scrape only running containers for node-exporter

当我使用 node-exporter 从 docker 群节点收集主机资源时,grafana/prometheus 出现问题。

我只测试了一个群节点。当我使用查询
label_values(node_uname_info{job="node-exporter"}, instance) 在 Grafana 变量中。结果返回已停止容器的旧ip和运行容器的ip。我只想要 returns 运行 容器的 ip。可以看到下图,它一直显示节点导出容器的ip。

但实际上,一个容器是运行 ip 10.0.1.12:9100。其他 ip 是启动和停止的 node-exporter 容器的旧 ip。这是创建这些容器的时间序列。

我想我们可以用#relabel_config配置prometheus.yml中的抓取方法,但我不熟悉它。这是我从 https://github.com/stefanprodan/swarmprom.

得到的抓取方法
  - job_name: 'node-exporter'
    dns_sd_configs:
    - names:
      - 'tasks.node-exporter'
      type: 'A'
      port: 9100

您知道如何通过在 prometheus.yml 中添加一些属性来过滤仅有的 运行 个容器吗?非常感谢您的考虑。

根据最后一条评论,您可以使用以下模式修改查询:

min ignoring (instance) (<query without instance>)

所以(示例)查询

rate(cpu_time_seconds{instance="$instance", otherLabel="otherValue"}[5m])

变成

min without (instance) (rate(cpu_time_seconds{otherLabel="otherValue"}[5m])

聚合函数在这里相对无关紧要,因为您一次只有一个值。

此外,您可以从仪表板中删除 instance 变量