我有 Prometheus 从几台机器上的节点导出器中抓取指标,配置如下:
scrape_configs:
- job_name: node_exporter
static_configs:
- targets:
- 1.2.3.4:9100
- 2.3.4.5:9100
- 3.4.5.6:9100
在 Grafana 中查看时,这些实例被分配了相当无意义的 IP 地址;相反,我更愿意看到他们的主机名。我认为您应该能够重新标记
instance
标签以匹配节点的主机名,所以我尝试使用这样的重新标记规则,但没有任何效果:relabel_configs:
- source_labels: ['nodename']
target_label: 'instance'
我可以手动重新标记每个目标,但这需要将每个主机名硬编码到 Prometheus 中,这不是很好。我看到节点导出器提供了指标
node_uname_info
包含主机名,但我如何从那里提取它?node_uname_info{domainname="(none)",machine="x86_64",nodename="myhostname",release="4.13.0-32-generic",sysname="Linux",version="..."} 1
最佳答案
我刚刚遇到这个问题,解决方案是使用 group_left 来解决这个问题。您不能使用请求中不存在的值重新标记,您仅限于提供给 Prometheus 的不同参数或用于请求的模块中存在的参数(gcp、aws ...)。
因此,我使用的解决方案是将包含我们想要的内容的现有值(hostnmame
)与来自节点导出器的指标相结合。我们的答案存在于 node_uname_info
包含 nodename
的指标值(value)。
我使用这篇文章的答案作为我的请求的模型:https://stackoverflow.com/a/50357418 .
解决方案是这个:
node_memory_Active_bytes
* on(instance) group_left(nodename)
node_uname_info
有了这个,node_memory_Active_bytes
仅包含 instance
的指标和 job
默认情况下,会得到一个额外的 nodename
您可以在 Grafana 的描述字段中使用的标签。希望这对其他人有帮助。
关于prometheus - 在 Prometheus 中将实例重新标记为主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49896956/