如何配置 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
变量
当我使用 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
变量