diff --git a/ansible/roles/prometheus/handlers/main.yml b/ansible/roles/prometheus/handlers/main.yml index 5e935dc789..368ffc9598 100644 --- a/ansible/roles/prometheus/handlers/main.yml +++ b/ansible/roles/prometheus/handlers/main.yml @@ -145,4 +145,5 @@ - inventory_hostname in groups[service.group] - service.enabled | bool - config_json.changed | bool + or prometheus_alertmanager_confs.changed | bool or prometheus_container.changed | bool diff --git a/ansible/roles/prometheus/tasks/config.yml b/ansible/roles/prometheus/tasks/config.yml index 981af0f5a0..4acf1d6eb8 100644 --- a/ansible/roles/prometheus/tasks/config.yml +++ b/ansible/roles/prometheus/tasks/config.yml @@ -24,6 +24,32 @@ notify: - Restart {{ item.key }} container +- name: Find custom prometheus alert rules files + local_action: + module: find + path: "{{ node_custom_config }}/prometheus/" + pattern: "*.rules" + run_once: True + register: prometheus_alert_rules + when: + - enable_prometheus_alertmanager | bool + +- name: Copying over custom prometheus alert rules files + vars: + service: "{{ prometheus_services['prometheus-server']}}" + copy: + src: "{{ item.path }}" + dest: "{{ node_config_directory }}/prometheus-server/{{ item.path | basename }}" + mode: "0660" + register: prometheus_confs + when: + - inventory_hostname in groups[service.group] + - service.enabled | bool and enable_prometheus_alertmanager | bool + - prometheus_alert_rules is defined and prometheus_alert_rules.files | length > 0 + with_items: "{{ prometheus_alert_rules.files }}" + notify: + - Restart prometheus-server container + - name: Copying over prometheus config file vars: service: "{{ prometheus_services['prometheus-server']}}" @@ -47,7 +73,7 @@ template: src: "{{ item }}" dest: "{{ node_config_directory }}/prometheus-alertmanager/prometheus-alertmanager.yml" - register: prometheus_confs + register: prometheus_alertmanager_confs when: - inventory_hostname in groups[service.group] - service.enabled | bool diff --git a/ansible/roles/prometheus/templates/prometheus-server.json.j2 b/ansible/roles/prometheus/templates/prometheus-server.json.j2 index 46b70425cd..3470e6de93 100644 --- a/ansible/roles/prometheus/templates/prometheus-server.json.j2 +++ b/ansible/roles/prometheus/templates/prometheus-server.json.j2 @@ -7,6 +7,15 @@ "owner": "prometheus", "perm": "0600" } +{% if enable_prometheus_alertmanager %} + ,{ + "source": "{{ container_config_directory }}/*.rules", + "dest": "/etc/prometheus/", + "optional": true, + "owner": "prometheus", + "perm": "0600" + } +{% endif %} ], "permissions": [ { diff --git a/ansible/roles/prometheus/templates/prometheus.yml.j2 b/ansible/roles/prometheus/templates/prometheus.yml.j2 index 6de1ca9ae7..5bcb48dbf6 100644 --- a/ansible/roles/prometheus/templates/prometheus.yml.j2 +++ b/ansible/roles/prometheus/templates/prometheus.yml.j2 @@ -5,6 +5,13 @@ global: external_labels: monitor: 'kolla' +{% if prometheus_alert_rules is defined and prometheus_alert_rules.files | length > 0 %} +rule_files: +{% for rule in prometheus_alert_rules.files %} + - "/etc/prometheus/{{ rule.path | basename }}" +{% endfor %} +{% endif %} + scrape_configs: - job_name: prometheus static_configs: