如果source_labels为空或正则表达式没有捕获任何东西,是否可以设置默认值来替换?
例如,类似这样的内容:
- source_labels:
- __address__
- __meta_openstack_tag_prometheus_io_port
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
如果未定义__meta_openstack_tag_prometheus_io_port,我可以将$ 2设置为默认值吗?
答案 0 :(得分:0)
一种方法是采取以下措施:
- source_labels: [__address__, __meta_openstack_tag_prometheus_io_port]
regex: ([^:]+)(?::\d+)?;
replacement: $1:default
target_label: __address__
答案 1 :(得分:0)
据我了解,这不是一步,但是您可以使用临时标签来做到这一点:
- target_label: __tmp_port
replacement: 42
- source_labels: [__meta_openstack_tag_prometheus_io_port]
target_label: __tmp_port
regex: (\d+)
- source_labels:
- __address__
- __tmp_port
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
首先,我们在__tmp_port
中设置默认值,然后在可能的情况下从__meta_openstack_tag_prometheus_io_port
覆盖默认值,然后对最终操作使用__tmp_port
和任一值。