重新标签替换中的默认值

时间:2019-03-27 11:54:14

标签: prometheus

如果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设置为默认值吗?

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和任一值。