summaryrefslogtreecommitdiff
path: root/roles/monitoring/prometheus/exporter
diff options
context:
space:
mode:
Diffstat (limited to 'roles/monitoring/prometheus/exporter')
-rw-r--r--roles/monitoring/prometheus/exporter/register/filter_plugins/prometheus.py18
-rw-r--r--roles/monitoring/prometheus/exporter/register/tasks/main.yml8
-rw-r--r--roles/monitoring/prometheus/exporter/register/templates/blackbox/probe.yml.j22
-rw-r--r--roles/monitoring/prometheus/exporter/register/templates/modbus/probe.yml.j21
-rw-r--r--roles/monitoring/prometheus/exporter/register/templates/nut/ups.yml.j21
-rw-r--r--roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j21
-rw-r--r--roles/monitoring/prometheus/exporter/register/templates/ssl/probe.yml.j22
-rw-r--r--roles/monitoring/prometheus/exporter/register/templates/whawty-nginx-sso.yml.j24
8 files changed, 29 insertions, 8 deletions
diff --git a/roles/monitoring/prometheus/exporter/register/filter_plugins/prometheus.py b/roles/monitoring/prometheus/exporter/register/filter_plugins/prometheus.py
index e8067a72..76e47056 100644
--- a/roles/monitoring/prometheus/exporter/register/filter_plugins/prometheus.py
+++ b/roles/monitoring/prometheus/exporter/register/filter_plugins/prometheus.py
@@ -6,6 +6,17 @@ from functools import partial
from ansible import errors
+_multitarget_id_map_ = {
+ "blackbox/probe": (lambda vars, config: "%s-%s" % (config['svc_kind'], config['svc_instance'])),
+ "ssl/probe": (lambda vars, config: "%s-%s-%s" % (config['module'], config['sslcert_instance'], vars['inventory_hostname'])),
+ "ipmi/remote": (lambda vars, config: vars['inventory_hostname']),
+ "nut/ups": (lambda vars, config: config['ups']),
+ "snmp/probe": (lambda vars, config: config['snmp_instance']),
+ "modbus/probe": (lambda vars, config: config['modbus_instance']),
+ "whawty-nginx-sso": (lambda vars, config: "%s-%s" % (config['app_instance'], vars['inventory_hostname'])),
+}
+
+
def prometheus_job_targets(jobs, vars):
try:
result = []
@@ -14,15 +25,16 @@ def prometheus_job_targets(jobs, vars):
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,
+ id = _multitarget_id_map_[job](vars, config)
+ result.append({'_id': id, 'job': job, 'instance': vars['inventory_hostname'], '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})
+ result.append({'_id': vars['inventory_hostname'], 'job': job, 'instance': vars['inventory_hostname'], 'enabled': enabled})
return result
except Exception as e:
- raise errors.AnsibleFilterError("prometheus_job_targets(): %s" % str(e))
+ raise errors.AnsibleFilterError("prometheus_job_targets(): %s" % repr(e))
class FilterModule(object):
diff --git a/roles/monitoring/prometheus/exporter/register/tasks/main.yml b/roles/monitoring/prometheus/exporter/register/tasks/main.yml
index 519975d6..1d8585e9 100644
--- a/roles/monitoring/prometheus/exporter/register/tasks/main.yml
+++ b/roles/monitoring/prometheus/exporter/register/tasks/main.yml
@@ -8,20 +8,20 @@
loop: "{{ job_targets | selectattr('enabled') }}"
loop_control:
loop_var: target
- label: "{{ target.job }} -> {{ target.instance }}"
+ label: "{{ target.job }} -> {{ target._id }}"
delegate_to: "{{ prometheus_server }}"
template:
src: "{{ lookup('first_found', {'paths': ['templates'], 'files': [target.job + '.yml.j2', 'generic.yml.j2']}) }}"
- dest: "/etc/prometheus/targets/{{ target.job }}/{{ target.instance }}.yml"
+ dest: "/etc/prometheus/targets/{{ target.job }}/{{ target._id }}.yml"
notify: reload prometheus
- name: remove files for disabled targets
loop: "{{ job_targets | rejectattr('enabled') }}"
loop_control:
loop_var: target
- label: "{{ target.job }} -> {{ target.instance }}"
+ label: "{{ target.job }} -> {{ target._id }}"
delegate_to: "{{ prometheus_server }}"
file:
- path: "/etc/prometheus/targets/{{ target.job }}/{{ target.instance }}.yml"
+ path: "/etc/prometheus/targets/{{ target.job }}/{{ target._id }}.yml"
state: absent
notify: reload prometheus
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 5f98e3a8..fbbce7df 100644
--- a/roles/monitoring/prometheus/exporter/register/templates/blackbox/probe.yml.j2
+++ b/roles/monitoring/prometheus/exporter/register/templates/blackbox/probe.yml.j2
@@ -1,6 +1,8 @@
- targets: [ '{{ (target.exporter_hostname == prometheus_server) | ternary('127.0.0.1:9999', hostvars[target.exporter_hostname].prometheus_scrape_endpoint) }}' ]
labels:
instance: '{{ target.instance }}'
+ svc_kind: '{{ target.config.svc_kind }}'
+ svc_instance: '{{ target.config.svc_instance }}'
__param_target: '{{ target.config.target }}'
__param_module: '{{ target.config.module }}'
{% if 'hostname' in target.config %}
diff --git a/roles/monitoring/prometheus/exporter/register/templates/modbus/probe.yml.j2 b/roles/monitoring/prometheus/exporter/register/templates/modbus/probe.yml.j2
index 5d51398a..d450f535 100644
--- a/roles/monitoring/prometheus/exporter/register/templates/modbus/probe.yml.j2
+++ b/roles/monitoring/prometheus/exporter/register/templates/modbus/probe.yml.j2
@@ -1,6 +1,7 @@
- targets: [ '{{ (target.exporter_hostname == prometheus_server) | ternary('127.0.0.1:9999', hostvars[target.exporter_hostname].prometheus_scrape_endpoint) }}' ]
labels:
instance: '{{ target.instance }}'
+ modbus_instance: '{{ target.config.modbus_instance }}'
__param_target: '{{ target.config.target }}'
__param_sub_target: '{{ target.config.sub_target }}'
__param_module: '{{ target.config.module }}'
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 5181f4e4..6c549e1e 100644
--- a/roles/monitoring/prometheus/exporter/register/templates/nut/ups.yml.j2
+++ b/roles/monitoring/prometheus/exporter/register/templates/nut/ups.yml.j2
@@ -1,6 +1,7 @@
- targets: [ '{{ (target.exporter_hostname == prometheus_server) | ternary('127.0.0.1:9999', hostvars[target.exporter_hostname].prometheus_scrape_endpoint) }}' ]
labels:
instance: '{{ target.instance }}'
+ ups_instance: '{{ target.config.ups }}'
__param_ups: '{{ target.config.ups }}'
__param_server: '{{ target.config.server | default('127.0.0.1') }}'
{% if 'username' in target.config %}
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 a50a32ff..90b70003 100644
--- a/roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j2
+++ b/roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j2
@@ -1,6 +1,7 @@
- targets: [ '{{ (target.exporter_hostname == prometheus_server) | ternary('127.0.0.1:9999', hostvars[target.exporter_hostname].prometheus_scrape_endpoint) }}' ]
labels:
instance: '{{ target.instance }}'
+ snmp_instance: '{{ target.config.snmp_instance }}'
__param_target: '{{ target.config.target }}'
__param_module: '{{ target.config.module }}'
{% if 'auth' in target.config %}
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 3ecf129a..6d26e779 100644
--- a/roles/monitoring/prometheus/exporter/register/templates/ssl/probe.yml.j2
+++ b/roles/monitoring/prometheus/exporter/register/templates/ssl/probe.yml.j2
@@ -1,6 +1,8 @@
- targets: [ '{{ (target.exporter_hostname == prometheus_server) | ternary('127.0.0.1:9999', hostvars[target.exporter_hostname].prometheus_scrape_endpoint) }}' ]
labels:
instance: '{{ target.instance }}'
+ sslcert_kind: '{{ target.config.module }}'
+ sslcert_instance: '{{ target.config.sslcert_instance }}'
__param_target: '{{ target.config.target }}'
__param_module: '{{ target.config.module }}'
{% for name, value in prometheus_target_labels.items() %}
diff --git a/roles/monitoring/prometheus/exporter/register/templates/whawty-nginx-sso.yml.j2 b/roles/monitoring/prometheus/exporter/register/templates/whawty-nginx-sso.yml.j2
index 74ada64e..8675a143 100644
--- a/roles/monitoring/prometheus/exporter/register/templates/whawty-nginx-sso.yml.j2
+++ b/roles/monitoring/prometheus/exporter/register/templates/whawty-nginx-sso.yml.j2
@@ -1,7 +1,9 @@
- targets: [ '{{ (target.exporter_hostname == prometheus_server) | ternary('127.0.0.1:9999', hostvars[target.exporter_hostname].prometheus_scrape_endpoint) }}' ]
labels:
instance: '{{ target.instance }}'
- __metrics_path__: '/whawty-nginx-sso/{{ target.config.instance_name }}'
+ app_kind: 'whawty-nginx-sso'
+ app_instance: '{{ target.config.app_instance }}'
+ __metrics_path__: '/whawty-nginx-sso/{{ target.config.app_instance }}'
{% for name, value in prometheus_target_labels.items() %}
{{ name }}: '{{ value }}'
{% endfor %}