From a4aaa50f35d6d58a0ccf3e089622a6bc4d023899 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Tue, 7 Feb 2023 00:26:47 +0100 Subject: prometheus targets: cleanup and add support for target specific labels --- inventory/group_vars/promzone-test/vars.yml | 3 ++ inventory/host_vars/ch-testvm-prometheus.yml | 4 +++ .../prometheus/exporter/register/defaults/main.yml | 6 ++++ .../prometheus/exporter/register/tasks/main.yml | 42 +--------------------- .../register/templates/blackbox/probe.yml.j2 | 3 ++ .../exporter/register/templates/generic.yml.j2 | 3 ++ .../exporter/register/templates/ipmi/remote.yml.j2 | 3 ++ .../exporter/register/templates/nut/ups.yml.j2 | 3 ++ .../exporter/register/templates/snmp/probe.yml.j2 | 3 ++ .../exporter/register/templates/ssl/probe.yml.j2 | 3 ++ 10 files changed, 32 insertions(+), 41 deletions(-) create mode 100644 roles/monitoring/prometheus/exporter/register/defaults/main.yml diff --git a/inventory/group_vars/promzone-test/vars.yml b/inventory/group_vars/promzone-test/vars.yml index d44ec3e8..df27fb0b 100644 --- a/inventory/group_vars/promzone-test/vars.yml +++ b/inventory/group_vars/promzone-test/vars.yml @@ -27,3 +27,6 @@ prometheus_server_jobs: prometheus_zone_name: chaos@test prometheus_zone_targets: "{{ groups['promzone-test'] }}" + +prometheus_target_labels_default: + ansible_env_group: "{{ env_group }}" diff --git a/inventory/host_vars/ch-testvm-prometheus.yml b/inventory/host_vars/ch-testvm-prometheus.yml index 034b5d67..2b3c3099 100644 --- a/inventory/host_vars/ch-testvm-prometheus.yml +++ b/inventory/host_vars/ch-testvm-prometheus.yml @@ -81,6 +81,10 @@ prometheus_job_multitarget_ssl__probe: module: file +prometheus_target_labels_extra: + blub: foo + + monitoring_landingpage_hostnames: - "mon-test.chaos-at-home.org" monitoring_landingpage_title: "chaos@test Monitoring Host" diff --git a/roles/monitoring/prometheus/exporter/register/defaults/main.yml b/roles/monitoring/prometheus/exporter/register/defaults/main.yml new file mode 100644 index 00000000..90e839ed --- /dev/null +++ b/roles/monitoring/prometheus/exporter/register/defaults/main.yml @@ -0,0 +1,6 @@ +--- +prometheus_target_labels_default: {} +# foo: bar + +prometheus_target_labels_extra: {} +# blub: huhu diff --git a/roles/monitoring/prometheus/exporter/register/tasks/main.yml b/roles/monitoring/prometheus/exporter/register/tasks/main.yml index 5627add2..519975d6 100644 --- a/roles/monitoring/prometheus/exporter/register/tasks/main.yml +++ b/roles/monitoring/prometheus/exporter/register/tasks/main.yml @@ -1,48 +1,8 @@ --- -# - name: register simple targets -# loop: "{{ prometheus_server_jobs | select('in', prometheus_exporters_default+prometheus_exporters_extra) }}" -# delegate_to: "{{ prometheus_server }}" -# template: -# src: "{{ lookup('first_found', {'paths': ['templates'], 'files': [item + '.yml.j2', 'generic.yml.j2']}) }}" -# dest: "/etc/prometheus/targets/{{ item }}/{{ inventory_hostname }}.yml" -# notify: reload prometheus - - - - - - -# result = [] -# for job in jobs: -# multitarget_config_varname = 'prometheus_job_multitarget_' + job.replace('-', '_').replace('/', '__') -# if multitarget_config_varname in vars: -# for exporter_hostname, configs in vars[multitarget_config_varname].items(): -# for config in configs: -# result.append({'job': job, 'instance': config['instance'], 'enabled': True, -# 'exporter_hostname': exporter_hostname, 'config': config}) -# -# else: -# enabled = job in vars['prometheus_exporters_default'] or job in vars['prometheus_exporters_extra'] -# result.append({'job': job, 'instance': vars['inventory_hostname'], 'enabled': enabled}) -# return result - -# - loop: "{{ prometheus_server_jobs | replace('-', '_') | replace('/', '__') }}" -# when: "('prometheus_job_multitarget_' + item) in vars" -# vars: -# blub: "{{ vars[item] }}" -# debug: -# var: blub - - -# set_fact: -# "prometheus_job_multitarget_{{ item }}": "{{ vars[item] }}" -# prometheus_job_multitarget_blackbox__probe: "{{ prometheus_job_multitarget_blackbox__probe }}" -# prometheus_job_multitarget_ssl__probe: "{{ prometheus_job_multitarget_ssl__probe }}" - - - name: enable/disable job targets vars: job_targets: "{{ prometheus_server_jobs | prometheus_job_targets(hostvars[inventory_hostname]) }}" + prometheus_target_labels: "{{ prometheus_target_labels_default | combine(prometheus_target_labels_extra) }}" block: - name: install files for enabled targets loop: "{{ job_targets | selectattr('enabled') }}" diff --git a/roles/monitoring/prometheus/exporter/register/templates/blackbox/probe.yml.j2 b/roles/monitoring/prometheus/exporter/register/templates/blackbox/probe.yml.j2 index 47e6dceb..3ecf129a 100644 --- a/roles/monitoring/prometheus/exporter/register/templates/blackbox/probe.yml.j2 +++ b/roles/monitoring/prometheus/exporter/register/templates/blackbox/probe.yml.j2 @@ -3,3 +3,6 @@ instance: '{{ target.instance }}' __param_target: '{{ target.config.target }}' __param_module: '{{ target.config.module }}' +{% for name, value in prometheus_target_labels.items() %} + {{ name }}: '{{ value }}' +{% endfor %} diff --git a/roles/monitoring/prometheus/exporter/register/templates/generic.yml.j2 b/roles/monitoring/prometheus/exporter/register/templates/generic.yml.j2 index 341cb45a..f269cf3a 100644 --- a/roles/monitoring/prometheus/exporter/register/templates/generic.yml.j2 +++ b/roles/monitoring/prometheus/exporter/register/templates/generic.yml.j2 @@ -1,3 +1,6 @@ - targets: [ '{{ (target.instance == prometheus_server) | ternary('127.0.0.1:9999', hostvars[target.instance].prometheus_scrape_endpoint) }}' ] labels: instance: '{{ target.instance }}' +{% for name, value in prometheus_target_labels.items() %} + {{ name }}: '{{ value }}' +{% endfor %} diff --git a/roles/monitoring/prometheus/exporter/register/templates/ipmi/remote.yml.j2 b/roles/monitoring/prometheus/exporter/register/templates/ipmi/remote.yml.j2 index 47e6dceb..3ecf129a 100644 --- a/roles/monitoring/prometheus/exporter/register/templates/ipmi/remote.yml.j2 +++ b/roles/monitoring/prometheus/exporter/register/templates/ipmi/remote.yml.j2 @@ -3,3 +3,6 @@ instance: '{{ target.instance }}' __param_target: '{{ target.config.target }}' __param_module: '{{ target.config.module }}' +{% for name, value in prometheus_target_labels.items() %} + {{ name }}: '{{ value }}' +{% endfor %} diff --git a/roles/monitoring/prometheus/exporter/register/templates/nut/ups.yml.j2 b/roles/monitoring/prometheus/exporter/register/templates/nut/ups.yml.j2 index a25cdfe5..5181f4e4 100644 --- a/roles/monitoring/prometheus/exporter/register/templates/nut/ups.yml.j2 +++ b/roles/monitoring/prometheus/exporter/register/templates/nut/ups.yml.j2 @@ -15,3 +15,6 @@ {% if 'statuses' in target.config %} __param_statuses: '{{ target.config.statuses }}' {% endif %} +{% for name, value in prometheus_target_labels.items() %} + {{ name }}: '{{ value }}' +{% endfor %} diff --git a/roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j2 b/roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j2 index 47e6dceb..3ecf129a 100644 --- a/roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j2 +++ b/roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j2 @@ -3,3 +3,6 @@ instance: '{{ target.instance }}' __param_target: '{{ target.config.target }}' __param_module: '{{ target.config.module }}' +{% for name, value in prometheus_target_labels.items() %} + {{ name }}: '{{ value }}' +{% endfor %} diff --git a/roles/monitoring/prometheus/exporter/register/templates/ssl/probe.yml.j2 b/roles/monitoring/prometheus/exporter/register/templates/ssl/probe.yml.j2 index 47e6dceb..3ecf129a 100644 --- a/roles/monitoring/prometheus/exporter/register/templates/ssl/probe.yml.j2 +++ b/roles/monitoring/prometheus/exporter/register/templates/ssl/probe.yml.j2 @@ -3,3 +3,6 @@ instance: '{{ target.instance }}' __param_target: '{{ target.config.target }}' __param_module: '{{ target.config.module }}' +{% for name, value in prometheus_target_labels.items() %} + {{ name }}: '{{ value }}' +{% endfor %} -- cgit v1.2.3