'How to relabel address with it's current value and a label
In a json config file (referred to from file_sd_configs
) I have entries such as
[
...
"targets": [ "10.123.456.789"],
"labels": { "node_exporter_port": "9300" }
},
...
]
In Prometheus configuration I'd like to relabel_configs
so that the value of __address__
is the current value of address plus the port. Attempts such as the following do not work:
relabel_configs:
- source_labels: [node_exporter_port]
regex: (.*)
target_label: __address__
replacement: [__address__]:${1}
EDIT: The following seems to work:
relabel_configs:
- source_labels: [__address__, node_exporter_port]
separator: ';'
regex: '(.*);(.*)'
target_label: __address__
replacement: ${1}:${2}
Is this idiomatic?
Solution 1:[1]
If you change the separator to colon you can remove the regex and replacement, as the defaults do what you need.
The port label should be prefixed with __ so that it doesn't end up as a target label.
Solution 2:[2]
The following relabeling config appends the port from node_exporter_port
label to the __address__
label:
- source_labels: [__address__, node_exporter_port]
target_label: __address__
separator: ':'
It joins the original __address__
label value and the node_exporter_port
label value with the given separator: ':'
.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | brian-brazil |
Solution 2 | valyala |