prometheus - 在 Prometheus 中将实例重新标记为主机名

标签 prometheus

我有 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/

相关文章:

azure - 在 azure k8s 中启用 prometheus 监控时出现问题

docker - 如何通过某些 API 测量容器的启动和结束时间?

go - Prometheus Exporter - 直接检测与自定义收集器

monitoring - 如果仪表可以充当计数器,为什么普罗米修斯既有计数器又有仪表?

docker - Kubernetes View 服务监视器

unit-testing - 使用 golang prometheus testutil 进行单元测试

kubernetes - 使用HTTP和HTTPS端口的Prometheus刮刮kubernetes容器的指标

prometheus - 更新选项时出错 : "expanding series: block: XXXXXXXXXXXXXXX : decode postings: invalid size"

正则表达式从具有连续组的分隔字符串进行解析