Add Prometheus metrics relabel configuration for exporters
Tested succesfully with the following test cases:
source_labels: instance
source_labels: instance,__name__,test
source_labels: [instance,__name__,test]
source_labels:
- instance
- __name__
- test
Change-Id: I9750bb0a4204335dd202cc4020445e850824c497
Depends-On: I2f85fe2f9cc67d2d03d5e8dad5ac0b74e82b0fcc
diff --git a/prometheus/files/prometheus.yml b/prometheus/files/prometheus.yml
index c8dd17b..e7652f3 100644
--- a/prometheus/files/prometheus.yml
+++ b/prometheus/files/prometheus.yml
@@ -47,9 +47,15 @@
{%- if static_target[job_name]['endpoint'] is not defined %}
{%- do static_target[job_name].update({'endpoint': []}) %}
{%- endif %}
+ {%- if static_target[job_name]['metric_relabel'] is not defined %}
+ {%- do static_target[job_name].update({'metric_relabel': []}) %}
+ {%- endif %}
{%- for target in job.get('endpoint', []) %}
{%- do static_target[job_name]['endpoint'].append(target) %}
{%- endfor %}
+ {%- for label in job.get('metric_relabel', []) %}
+ {%- do static_target[job_name]['metric_relabel'].append(label) %}
+ {%- endfor %}
{%- endfor %}
{%- endfor %}
@@ -71,6 +77,22 @@
{%- endif %}
static_configs:
- targets: [{{ nodes | join(',') }}]
+ {%- if job.get('metric_relabel') %}
+ metric_relabel_configs:
+ {%- for label in job.get('metric_relabel', []) %}
+ {%- if label.source_labels is string %}
+ {%- set label_list = label.source_labels.split(',') %}
+ {%- elif label.source_labels is list %}
+ {%- set label_list = label.source_labels %}
+ {%- endif %}
+ {%- if label_list is defined %}
+ - source_labels: {{ label_list }}
+ regex: "{{ label.regex }}"
+ target_label: "{{ label.target_label }}"
+ replacement: {{ label.replacement }}
+ {%- endif %}
+ {%- endfor %}
+ {%- endif %}
{%- endif %}
{%- endfor %}