如何在普罗米修斯中使用 relable_config 为指标添加前缀

Posted

技术标签:

【中文标题】如何在普罗米修斯中使用 relable_config 为指标添加前缀【英文标题】:How to add prefix to metrics using relable_config in prometheus 【发布时间】:2021-12-06 03:16:38 【问题描述】:

终于用 Prometheus 和 Grafana 在 Docker 环境中运行 Harvest2。

问题是,在同一个 Prometheus 数据库中还有其他系统报告,而 NetApp Harvest 并未在其指标名称上添加前缀,例如 netapp_ 到每个 netapp 指标。以这种方式找到正确的指标真是太痛苦了。

我想使用 Prometheus_config 的 relable_config 选项作为解决方法。 目前我对收获轮询器有以下配置:

 - job_name: harvest
    scrape_interval: 1m
    scrape_timeout: 1m
    metrics_path: /metrics
    relabel_configs:
    - action: replace
      source_labels: [__name__]
      regex: (.*)
      target_label: __name__
      replacement: 'netapp_$1'

    - action: keep
      source_labels:
      - "custom_labels"
      - "custom_labels"
      - "custom_labels"
      - "custom_labels"
      regex: '.+;.+;.+;.+'

    file_sd_configs:
     - refresh_interval: 10s
       files:
       - targets/harvest.yml

但这导致 Grafana/Prometheus 中根本没有出现收获轮询器。关于如何添加所需前缀的任何想法?

【问题讨论】:

【参考方案1】:

此配置存在两个问题,但它们的原因相同。此外,在这种情况下,添加前缀可能不是最好的主意。请务必阅读此答案末尾的注释。

问题在于relabel_configs 包含应在抓取之前应用的重新标记配置。例如,您可以更改__address__,以便 Prometheus 将联系其他主机,而不是服务发现提供的主机。当然,__name__ 目前不可用,因为 Prometheus 还没有抓取任何东西

解决方案是将__name__ 移动到metric_relabel_configs。在这一步,指标已收集但尚未提取,您可以更改其__name__。这是一个为所有抓取的指标添加 super_ 前缀的示例:

metric_relabel_configs:
- source_labels: [__name__]
  target_label: __name__
  replacement: super_$1

问题中的第二次重新标记几乎相同:

    - action: keep
      source_labels:
      - "custom_labels"
      - "custom_labels"
      - "custom_labels"
      - "custom_labels"
      regex: '.+;.+;.+;.+'

指标尚未抓取,因此还没有自定义标签。这有效地删除了所有目标,因为没有提到的标签。如果您认为需要重新标记(为标签名称添加前缀不需要),则必须将其放在 metric_relabel_configs 下。

为什么为标签名称添加前缀可能不是最好的主意

问题在于,由于标签名称不同,您将无法使用具有重命名指标的相同仪表板/警报。您将不得不为这些指标制作单独的仪表板,或者使用奇怪且无效的查询,例如:

__name__=~".*my_metric_without_prefix"

最好简单地添加一个标签来区分一组指标与另一组指标。您可以添加自己的新标签或使用不同的作业来抓取这些指标。在最后一种情况下,您可以通过job 标签将一组指标与另一组指标区分开来。

【讨论】:

非常感谢这个详尽的回答!我使用收获配置为所有轮询器添加前缀。我认为这也应该是通过添加前缀来解决所描述问题的解决方法,因为所有收获指标的本地名称都将带有我的前缀。到目前为止似乎工作正常

以上是关于如何在普罗米修斯中使用 relable_config 为指标添加前缀的主要内容,如果未能解决你的问题,请参考以下文章

如何在普罗米修斯中对具有高基数的指标发出警报

我如何在普罗米修斯(kubernetes 监控)中获取(当前)已建立的 TCP 连接数

如何限制普罗米修斯的目标数量

window普罗米修斯监控如何重启

如何在普罗米修斯中获得速率的分位数

我如何在普罗米修斯中可视化弹性搜索指标?,两者都安装在 gke 集群中