【问题标题】:Prometheus relabel_configs - multiple target labelsPrometheus relabel_configs - 多个目标标签
【发布时间】:2022-12-17 06:31:35
【问题描述】:

我将 Prometheus 与 file_sd_configs 来源一起使用。使用这种方法可以从文件名中提取标签。例如。:

file_sd_configs:
  - files:
    - /etc/prometheus/targets/hostname_http_prod.yml
    - /etc/prometheus/targets/hostname_http_dev.yml
relabel_configs:
  - source_labels: [__meta_filepath]
    regex: "/etc/prometheus/targets/hostname_http_(dev|tst|uat|prod)\\.yml"
    target_label: env

我想更进一步,使用单个 Regex 填充多个目标标签。例如。

file_sd_configs:
  - files:
    - /etc/prometheus/targets/hostname_http_prod.yml
    - /etc/prometheus/targets/hostname_http_dev.yml
    - /etc/prometheus/targets/hostname_db_prod.yml
relabel_configs:
  - source_labels: [__meta_filepath]
    regex: "/etc/prometheus/targets/hostname_([^_]+)_(dev|tst|uat|prod)\\.yml"
    target_label: type
    replacement: $2
    target_label: env

这是受支持的方法还是需要多次指定源和正则表达式?

【问题讨论】:

  • 你知道你可以把标签放在那些文件里吗? prometheus.io/docs/guides/file-sd
  • @anemyte 是的,我知道。每个文件中有数百个目标,尽管它们按通用标签分组,但仍然有很多组。这些组中的每一个都需要定义一个相同的变量。这种方法允许我为文件中的每个目标分配一个标签。

标签: prometheus


【解决方案1】:

以下重新标记规则应基于 __meta_filepath 标签值创建 typeenv 标签:

- source_labels: [__meta_filepath]
  regex: "etc/prometheus/targets/hostname_([^_]+)_(dev|tst|uat|prod)\.yml"
  replacement: "$1"
  target_label: type
- source_labels: [__meta_filepath]
  regex: "etc/prometheus/targets/hostname_([^_]+)_(dev|tst|uat|prod)\.yml"
  replacement: "$2"
  target_label: env

基本上它包含两个重新标记规则,它们具有相同的 regex 部分,但具有不同的 replacementtarget_label 部分。这个重新标记规则可以调试here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2022-08-14
    • 2018-09-24
    • 1970-01-01
    相关资源
    最近更新 更多