Prometheus 重新标记替换中的默认值

Prometheus 重新标记替换中的默认值,prometheus,Prometheus,如果源标签为空或正则表达式没有捕获任何内容,是否可以为替换设置默认值 例如,对于类似以下内容: - source_labels: - __address__ - __meta_openstack_tag_prometheus_io_port action: replace regex: ([^:]+)(?::\d+)?;(\d+) replacement: $1:$2 target_label: __address_

如果源标签为空或正则表达式没有捕获任何内容,是否可以为替换设置默认值

例如,对于类似以下内容:

    - source_labels:
      - __address__
      - __meta_openstack_tag_prometheus_io_port
      action: replace
      regex: ([^:]+)(?::\d+)?;(\d+)
      replacement: $1:$2
      target_label: __address__

如果未定义uuu meta\u openstack\u tag\u prometheus\u io\u port,我可以将$2设置为默认值吗?

一种方法是在它之后有一个动作,如:

- source_labels: [__address__, __meta_openstack_tag_prometheus_io_port]
  regex: ([^:]+)(?::\d+)?;
  replacement: $1:default
  target_label: __address__

据我所知,并非一步到位,但您可以使用临时标签:

 - 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__
首先,我们在
\uuuuTMP\uPort
中设置默认值,然后从
\uuuMeta\uOpenStack\uTag\uPrometheus\uIO\uPort
覆盖它(如果可能),然后使用
\uTMP\uPort
中的任一值作为最终操作