簡體   English   中英

帶有 Puppet 的 Prometheus 配置文件:如何處理 yaml 配置文件中的引號和括號?

[英]Prometheus config file with Puppet: how to handle quotes and brackets in yaml config file?

我正在嘗試使用此模塊編寫 Prometheus 配置: https : //github.com/voxpupuli/puppet-prometheus

但我似乎無法讓它為 Prometheus 生成有效的重新標記配置。

這是我當前配置的相關部分:

'relabel_configs' => [
  {
    'source_labels' => '[__meta_consul_node]',
    'regex'         => '^(.*)$',
    'target_label'  => 'instance',
    'replacement'   => '$1',
  },
  {
    'source_labels' => '[__meta_consul_service]',
    'regex'         => '^(.*)$',
    'target_label'  => 'job',
    'replacement'   => '$1',
  }
],

這是我在 prometheus.yml 中得到的:

relabel_configs:
  - source_labels: '[__meta_consul_node]'
    regex: ^(.*)$
    target_label: instance
    replacement: $1
  - source_labels: '[__meta_consul_service]'
    regex: ^(.*)$
    target_label: job
    replacement: $1

我想要的是:

relabel_configs:
  - source_labels: ['__meta_consul_node']
    regex: '^(.*)$'
    target_label: 'instance'
    replacement: '$1'
  - source_labels: ['__meta_consul_service']
    regex: '^(.*)$'
    target_label: 'job'
    replacement: '$1'

我嘗試了很多東西,但無法弄清楚如何在我的清單中格式化哈希值,以便我獲得 Prometheus 的正確配置文件。

這似乎是 ruby​​ 解析器的問題? 我如何正確轉義'

我認為這里的困惑在於如何在 Puppet 和 YAML 中處理變量數組,以及如何在 YAML 中解析字符串。

在 YAML 中,變量數組可以是:

array:
- element
- another_element

或者:

array: [element, another_element]

在 Puppet 中,它們看起來像:

$array = [element, another_element]

因此,您可以通過簡單地在 Puppet 哈希中為source_labels鍵指定一個字符串數組來獲得數組的干凈的一對一映射,例如:

'relabel_configs' => [
  {
    'source_labels' => ['__meta_consul_node'], # single element string array
    'regex'         => '^(.*)$',
    'target_label'  => 'instance',
    'replacement'   => '$1',
  },
  {
    'source_labels' => ['__meta_consul_service'], # single element string array
    'regex'         => '^(.*)$',
    'target_label'  => 'job',
    'replacement'   => '$1',
  }
],

這將正確地為您的source_labels生成一個字符串數組,如您所描述的那樣。

relabel_configs:
  - source_labels: ['__meta_consul_node'] # single element string array
    regex: ^(.*)$
    target_label: instance
    replacement: $1
  - source_labels: ['__meta_consul_service'] # single element string array
    regex: ^(.*)$
    target_label: job
    replacement: $1

請注意,對於帶引號和不帶引號的字符串,YAML 的解析方式將完全相同(例如target_label: jobtarget_label: 'job' )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM