【发布时间】:2017-02-11 15:53:22
【问题描述】:
我正在尝试使用此模块编写 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 解析器的问题?如何正确转义'?
【问题讨论】:
-
在 YAML 中指定此键值对:
regex: ^(.*)$或此:regex: '^(.*)$'完全相同,因为第一个标量值不需要引用。他们的 KV 对与密钥regex、target_labels和replacement也是如此。在那里添加引号绝对没有意义。仅对于source_labels,您正在将值从以括号开头和结尾的标量字符串更改为包含单个标量字符串值的列表。为什么要添加所有这些多余的引号?
标签: arrays yaml puppet prometheus