0ec41f2092
This patch extends the configuration task for prometheus to allow the operator to pass a(set) of prometheus alert rules files, that will be used by alertmanager to produce alerts. This functionality is only enabled when the prometheus-alertmanager service is enabled. Change-Id: I882759c3774f43640631c1058f8a9cb24e7a60d2 Closes-Bug: #1776529 Signed-off-by: Jorge Niedbalski <jorge.niedbalski@linaro.org>
120 lines
4.0 KiB
YAML
120 lines
4.0 KiB
YAML
---
|
|
- name: Ensuring config directories exist
|
|
file:
|
|
path: "{{ node_config_directory }}/{{ item.key }}"
|
|
state: "directory"
|
|
owner: "{{ config_owner_user }}"
|
|
group: "{{ config_owner_group }}"
|
|
mode: "0770"
|
|
become: true
|
|
when:
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ prometheus_services }}"
|
|
|
|
- name: Copying over config.json files
|
|
template:
|
|
src: "{{ item.key }}.json.j2"
|
|
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
|
|
register: prometheus_config_jsons
|
|
when:
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ prometheus_services }}"
|
|
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']}}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/prometheus-server/prometheus.yml"
|
|
register: prometheus_confs
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/prometheus/{{ inventory_hostname }}/prometheus.yml"
|
|
- "{{ node_custom_config }}/prometheus/prometheus.yml"
|
|
- "{{ role_path }}/templates/prometheus.yml.j2"
|
|
notify:
|
|
- Restart prometheus-server container
|
|
|
|
- name: Copying over prometheus alertmanager config file
|
|
vars:
|
|
service: "{{ prometheus_services['prometheus-alertmanager']}}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/prometheus-alertmanager/prometheus-alertmanager.yml"
|
|
register: prometheus_alertmanager_confs
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/prometheus/{{ inventory_hostname }}/prometheus-alertmanager.yml"
|
|
- "{{ node_custom_config }}/prometheus/prometheus-alertmanager.yml"
|
|
- "{{ role_path }}/templates/prometheus-alertmanager.yml.j2"
|
|
notify:
|
|
- Restart prometheus-alertmanager container
|
|
|
|
- name: Copying over my.cnf for mysqld_exporter
|
|
vars:
|
|
service: "{{ prometheus_services['prometheus-mysqld-exporter']}}"
|
|
merge_configs:
|
|
sources:
|
|
- "{{ node_custom_config }}/prometheus-mysqld-exporter/{{ inventory_hostname }}/my.cnf"
|
|
- "{{ node_custom_config }}/prometheus-mysqld-exporter/my.cnf"
|
|
- "{{ role_path }}/templates/my.cnf.j2"
|
|
dest: "{{ node_config_directory }}/prometheus-mysqld-exporter/my.cnf"
|
|
register: prometheus_conf_mycnf
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart prometheus-mysqld-exporter container
|
|
|
|
- name: Check prometheus containers
|
|
become: true
|
|
kolla_docker:
|
|
action: "compare_container"
|
|
common_options: "{{ docker_common_options }}"
|
|
name: "{{ item.value.container_name }}"
|
|
image: "{{ item.value.image }}"
|
|
volumes: "{{ item.value.volumes }}"
|
|
dimensions: "{{ item.value.dimensions }}"
|
|
register: check_prometheus_containers
|
|
when:
|
|
- kolla_action != "config"
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ prometheus_services }}"
|
|
notify:
|
|
- Restart {{ item.key }} container
|