diff options
Diffstat (limited to 'roles/monitoring/prometheus/target/filter_plugins/prometheus.py')
-rw-r--r-- | roles/monitoring/prometheus/target/filter_plugins/prometheus.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/roles/monitoring/prometheus/target/filter_plugins/prometheus.py b/roles/monitoring/prometheus/target/filter_plugins/prometheus.py new file mode 100644 index 00000000..c29bce81 --- /dev/null +++ b/roles/monitoring/prometheus/target/filter_plugins/prometheus.py @@ -0,0 +1,36 @@ +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +from functools import partial + +from ansible import errors + + +def prometheus_job_targets(vars, jobs): + try: + 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 + except Exception as e: + raise errors.AnsibleFilterError("prometheus_job_targets(): %s" % str(e)) + + +class FilterModule(object): + + ''' prometheus filters ''' + filter_map = { + 'prometheus_job_targets': prometheus_job_targets, + } + + def filters(self): + return self.filter_map |