aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/roles/prometheus-node-exporters/defaults/main.yml60
-rw-r--r--ansible/roles/prometheus-node-exporters/handlers/main.yml27
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/check-containers.yml3
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/check.yml1
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/config.yml30
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/config_validate.yml1
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/copy-certs.yml6
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/deploy-containers.yml2
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/deploy.yml7
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/main.yml2
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/precheck.yml41
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/pull.yml3
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/reconfigure.yml2
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/stop.yml6
-rw-r--r--ansible/roles/prometheus-node-exporters/tasks/upgrade.yml7
-rw-r--r--ansible/roles/prometheus-node-exporters/templates/prometheus-cadvisor.json.j2 (renamed from ansible/roles/prometheus/templates/prometheus-cadvisor.json.j2)0
-rw-r--r--ansible/roles/prometheus-node-exporters/templates/prometheus-node-exporter.json.j2 (renamed from ansible/roles/prometheus/templates/prometheus-node-exporter.json.j2)0
-rw-r--r--ansible/roles/prometheus/defaults/main.yml45
-rw-r--r--ansible/roles/prometheus/handlers/main.yml27
-rw-r--r--ansible/roles/prometheus/tasks/precheck.yml26
-rw-r--r--ansible/site.yml18
-rw-r--r--releasenotes/notes/split-prometheus-role-d363716375b14143.yaml6
22 files changed, 220 insertions, 100 deletions
diff --git a/ansible/roles/prometheus-node-exporters/defaults/main.yml b/ansible/roles/prometheus-node-exporters/defaults/main.yml
new file mode 100644
index 000000000..419e56902
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/defaults/main.yml
@@ -0,0 +1,60 @@
+---
+project_name: "prometheus"
+
+prometheus_services:
+ prometheus-node-exporter:
+ container_name: "prometheus_node_exporter"
+ group: "prometheus-node-exporter"
+ enabled: "{{ enable_prometheus_node_exporter | bool }}"
+ image: "{{ prometheus_node_exporter_image_full }}"
+ pid_mode: "host"
+ volumes: "{{ prometheus_node_exporter_default_volumes + prometheus_node_exporter_extra_volumes }}"
+ dimensions: "{{ prometheus_node_exporter_dimensions }}"
+ prometheus-cadvisor:
+ container_name: "prometheus_cadvisor"
+ group: "prometheus-cadvisor"
+ enabled: "{{ enable_prometheus_cadvisor | bool }}"
+ image: "{{ prometheus_cadvisor_image_full }}"
+ volumes: "{{ prometheus_cadvisor_default_volumes + prometheus_cadvisor_extra_volumes }}"
+ dimensions: "{{ prometheus_cadvisor_dimensions }}"
+
+####################
+# Docker
+####################
+prometheus_install_type: "{{ kolla_install_type }}"
+prometheus_tag: "{{ openstack_tag }}"
+
+prometheus_node_exporter_image: "{{ docker_image_url }}prometheus-node-exporter"
+prometheus_node_exporter_tag: "{{ prometheus_tag }}"
+prometheus_node_exporter_image_full: "{{ prometheus_node_exporter_image }}:{{ prometheus_node_exporter_tag }}"
+
+prometheus_cadvisor_image: "{{ docker_image_url }}prometheus-cadvisor"
+prometheus_cadvisor_tag: "{{ prometheus_tag }}"
+prometheus_cadvisor_image_full: "{{ prometheus_cadvisor_image }}:{{ prometheus_cadvisor_tag }}"
+
+prometheus_node_exporter_dimensions: "{{ default_container_dimensions }}"
+prometheus_cadvisor_dimensions: "{{ default_container_dimensions }}"
+
+prometheus_node_exporter_default_volumes:
+ - "{{ node_config_directory }}/prometheus-node-exporter/:{{ container_config_directory }}/:ro"
+ - "/etc/localtime:/etc/localtime:ro"
+ - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
+ - "kolla_logs:/var/log/kolla/"
+ - "/:/host:ro,rslave"
+prometheus_cadvisor_default_volumes:
+ - "{{ node_config_directory }}/prometheus-cadvisor/:{{ container_config_directory }}/:ro"
+ - "/etc/localtime:/etc/localtime:ro"
+ - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
+ - "kolla_logs:/var/log/kolla/"
+ - "/:/rootfs:ro"
+ - "/var/run:/var/run:rw"
+ - "/sys:/sys:ro"
+ - "/var/lib/docker/:/var/lib/docker:ro"
+ - "/dev/disk/:/dev/disk:ro"
+
+prometheus_extra_volumes: "{{ default_extra_volumes }}"
+prometheus_node_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
+prometheus_cadvisor_extra_volumes: "{{ prometheus_extra_volumes }}"
+
+prometheus_cadvisor_cmdline_extras: "--docker_only --store_container_labels=false --disable_metrics=percpu,referenced_memory,cpu_topology,resctrl,udp,advtcp,sched,hugetlb,memory_numa,tcp,process --housekeeping_interval={{ prometheus_scrape_interval }}"
+prometheus_node_exporter_cmdline_extras: ""
diff --git a/ansible/roles/prometheus-node-exporters/handlers/main.yml b/ansible/roles/prometheus-node-exporters/handlers/main.yml
new file mode 100644
index 000000000..747669e18
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/handlers/main.yml
@@ -0,0 +1,27 @@
+---
+- name: Restart prometheus-node-exporter container
+ vars:
+ service_name: "prometheus-node-exporter"
+ service: "{{ prometheus_services[service_name] }}"
+ become: true
+ kolla_container:
+ action: "recreate_or_restart_container"
+ common_options: "{{ docker_common_options }}"
+ name: "{{ service.container_name }}"
+ image: "{{ service.image }}"
+ pid_mode: "{{ service.pid_mode | default(omit) }}"
+ volumes: "{{ service.volumes }}"
+ dimensions: "{{ service.dimensions }}"
+
+- name: Restart prometheus-cadvisor container
+ vars:
+ service_name: "prometheus-cadvisor"
+ service: "{{ prometheus_services[service_name] }}"
+ become: true
+ kolla_container:
+ action: "recreate_or_restart_container"
+ common_options: "{{ docker_common_options }}"
+ name: "{{ service.container_name }}"
+ image: "{{ service.image }}"
+ volumes: "{{ service.volumes }}"
+ dimensions: "{{ service.dimensions }}"
diff --git a/ansible/roles/prometheus-node-exporters/tasks/check-containers.yml b/ansible/roles/prometheus-node-exporters/tasks/check-containers.yml
new file mode 100644
index 000000000..b7e2f7c29
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/check-containers.yml
@@ -0,0 +1,3 @@
+---
+- import_role:
+ name: service-check-containers
diff --git a/ansible/roles/prometheus-node-exporters/tasks/check.yml b/ansible/roles/prometheus-node-exporters/tasks/check.yml
new file mode 100644
index 000000000..ed97d539c
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/check.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/prometheus-node-exporters/tasks/config.yml b/ansible/roles/prometheus-node-exporters/tasks/config.yml
new file mode 100644
index 000000000..83de189b2
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/config.yml
@@ -0,0 +1,30 @@
+---
+- name: Ensuring config directories exist
+ become: true
+ file:
+ path: "{{ node_config_directory }}/{{ item.key }}"
+ state: "directory"
+ owner: "{{ config_owner_user }}"
+ group: "{{ config_owner_group }}"
+ mode: "0770"
+ when:
+ - inventory_hostname in groups[item.value.group]
+ - item.value.enabled | bool
+ with_dict: "{{ prometheus_services }}"
+
+- include_tasks: copy-certs.yml
+ when:
+ - kolla_copy_ca_into_containers | bool
+
+- name: Copying over config.json files
+ become: true
+ template:
+ src: "{{ item.key }}.json.j2"
+ dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
+ mode: "0660"
+ when:
+ - inventory_hostname in groups[item.value.group]
+ - item.value.enabled | bool
+ with_dict: "{{ prometheus_services }}"
+ notify:
+ - Restart {{ item.key }} container
diff --git a/ansible/roles/prometheus-node-exporters/tasks/config_validate.yml b/ansible/roles/prometheus-node-exporters/tasks/config_validate.yml
new file mode 100644
index 000000000..ed97d539c
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/config_validate.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/prometheus-node-exporters/tasks/copy-certs.yml b/ansible/roles/prometheus-node-exporters/tasks/copy-certs.yml
new file mode 100644
index 000000000..674942839
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/copy-certs.yml
@@ -0,0 +1,6 @@
+---
+- name: "Copy certificates and keys for {{ project_name }}"
+ import_role:
+ role: service-cert-copy
+ vars:
+ project_services: "{{ prometheus_services }}"
diff --git a/ansible/roles/prometheus-node-exporters/tasks/deploy-containers.yml b/ansible/roles/prometheus-node-exporters/tasks/deploy-containers.yml
new file mode 100644
index 000000000..eb24ab5c7
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/prometheus-node-exporters/tasks/deploy.yml b/ansible/roles/prometheus-node-exporters/tasks/deploy.yml
new file mode 100644
index 000000000..49edff81e
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/deploy.yml
@@ -0,0 +1,7 @@
+---
+- import_tasks: config.yml
+
+- import_tasks: check-containers.yml
+
+- name: Flush handlers
+ meta: flush_handlers
diff --git a/ansible/roles/prometheus-node-exporters/tasks/main.yml b/ansible/roles/prometheus-node-exporters/tasks/main.yml
new file mode 100644
index 000000000..bc5d1e625
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/main.yml
@@ -0,0 +1,2 @@
+---
+- include_tasks: "{{ kolla_action }}.yml"
diff --git a/ansible/roles/prometheus-node-exporters/tasks/precheck.yml b/ansible/roles/prometheus-node-exporters/tasks/precheck.yml
new file mode 100644
index 000000000..87e56d7a4
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/precheck.yml
@@ -0,0 +1,41 @@
+---
+- import_role:
+ name: service-precheck
+ vars:
+ service_precheck_services: "{{ prometheus_services }}"
+ service_name: "{{ project_name }}"
+
+- name: Get container facts
+ become: true
+ kolla_container_facts:
+ action: get_containers
+ container_engine: "{{ kolla_container_engine }}"
+ name:
+ - prometheus_node_exporter
+ - prometheus_cadvisor
+ check_mode: false
+ register: container_facts
+
+- name: Checking free port for Prometheus node_exporter
+ wait_for:
+ host: "{{ 'api' | kolla_address }}"
+ port: "{{ prometheus_node_exporter_port }}"
+ connect_timeout: 1
+ timeout: 1
+ state: stopped
+ when:
+ - container_facts.containers['prometheus_node_exporter'] is not defined
+ - inventory_hostname in groups['prometheus-node-exporter']
+ - enable_prometheus_node_exporter | bool
+
+- name: Checking free port for Prometheus cAdvisor
+ wait_for:
+ host: "{{ 'api' | kolla_address }}"
+ port: "{{ prometheus_cadvisor_port }}"
+ connect_timeout: 1
+ timeout: 1
+ state: stopped
+ when:
+ - container_facts.containers['prometheus_cadvisor'] is not defined
+ - inventory_hostname in groups['prometheus-cadvisor']
+ - enable_prometheus_cadvisor | bool
diff --git a/ansible/roles/prometheus-node-exporters/tasks/pull.yml b/ansible/roles/prometheus-node-exporters/tasks/pull.yml
new file mode 100644
index 000000000..53f9c5fda
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/pull.yml
@@ -0,0 +1,3 @@
+---
+- import_role:
+ role: service-images-pull
diff --git a/ansible/roles/prometheus-node-exporters/tasks/reconfigure.yml b/ansible/roles/prometheus-node-exporters/tasks/reconfigure.yml
new file mode 100644
index 000000000..5b10a7e11
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/reconfigure.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: deploy.yml
diff --git a/ansible/roles/prometheus-node-exporters/tasks/stop.yml b/ansible/roles/prometheus-node-exporters/tasks/stop.yml
new file mode 100644
index 000000000..18d4f9bc5
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/stop.yml
@@ -0,0 +1,6 @@
+---
+- import_role:
+ name: service-stop
+ vars:
+ project_services: "{{ prometheus_services }}"
+ service_name: "{{ project_name }}"
diff --git a/ansible/roles/prometheus-node-exporters/tasks/upgrade.yml b/ansible/roles/prometheus-node-exporters/tasks/upgrade.yml
new file mode 100644
index 000000000..49edff81e
--- /dev/null
+++ b/ansible/roles/prometheus-node-exporters/tasks/upgrade.yml
@@ -0,0 +1,7 @@
+---
+- import_tasks: config.yml
+
+- import_tasks: check-containers.yml
+
+- name: Flush handlers
+ meta: flush_handlers
diff --git a/ansible/roles/prometheus/templates/prometheus-cadvisor.json.j2 b/ansible/roles/prometheus-node-exporters/templates/prometheus-cadvisor.json.j2
index 21463e433..21463e433 100644
--- a/ansible/roles/prometheus/templates/prometheus-cadvisor.json.j2
+++ b/ansible/roles/prometheus-node-exporters/templates/prometheus-cadvisor.json.j2
diff --git a/ansible/roles/prometheus/templates/prometheus-node-exporter.json.j2 b/ansible/roles/prometheus-node-exporters/templates/prometheus-node-exporter.json.j2
index 41e8e8fea..41e8e8fea 100644
--- a/ansible/roles/prometheus/templates/prometheus-node-exporter.json.j2
+++ b/ansible/roles/prometheus-node-exporters/templates/prometheus-node-exporter.json.j2
diff --git a/ansible/roles/prometheus/defaults/main.yml b/ansible/roles/prometheus/defaults/main.yml
index 12420d636..2ce4f0848 100644
--- a/ansible/roles/prometheus/defaults/main.yml
+++ b/ansible/roles/prometheus/defaults/main.yml
@@ -28,14 +28,6 @@ prometheus_services:
backend_http_extra:
- "option httpchk GET /-/ready HTTP/1.0"
- "http-check send hdr Authorization 'Basic {{ (prometheus_haproxy_user + ':' + prometheus_haproxy_password) | b64encode }}'"
- prometheus-node-exporter:
- container_name: prometheus_node_exporter
- group: prometheus-node-exporter
- enabled: "{{ enable_prometheus_node_exporter | bool }}"
- image: "{{ prometheus_node_exporter_image_full }}"
- pid_mode: "host"
- volumes: "{{ prometheus_node_exporter_default_volumes + prometheus_node_exporter_extra_volumes }}"
- dimensions: "{{ prometheus_node_exporter_dimensions }}"
prometheus-mysqld-exporter:
container_name: prometheus_mysqld_exporter
group: prometheus-mysqld-exporter
@@ -50,13 +42,6 @@ prometheus_services:
image: "{{ prometheus_memcached_exporter_image_full }}"
volumes: "{{ prometheus_memcached_exporter_default_volumes + prometheus_memcached_exporter_extra_volumes }}"
dimensions: "{{ prometheus_memcached_exporter_dimensions }}"
- prometheus-cadvisor:
- container_name: "prometheus_cadvisor"
- group: "prometheus-cadvisor"
- enabled: "{{ enable_prometheus_cadvisor | bool }}"
- image: "{{ prometheus_cadvisor_image_full }}"
- volumes: "{{ prometheus_cadvisor_default_volumes + prometheus_cadvisor_extra_volumes }}"
- dimensions: "{{ prometheus_cadvisor_dimensions }}"
prometheus-alertmanager:
container_name: "prometheus_alertmanager"
group: "prometheus-alertmanager"
@@ -358,18 +343,10 @@ prometheus_mysqld_exporter_image: "{{ docker_image_url }}prometheus-mysqld-expor
prometheus_mysqld_exporter_tag: "{{ prometheus_tag }}"
prometheus_mysqld_exporter_image_full: "{{ prometheus_mysqld_exporter_image }}:{{ prometheus_mysqld_exporter_tag }}"
-prometheus_node_exporter_image: "{{ docker_image_url }}prometheus-node-exporter"
-prometheus_node_exporter_tag: "{{ prometheus_tag }}"
-prometheus_node_exporter_image_full: "{{ prometheus_node_exporter_image }}:{{ prometheus_node_exporter_tag }}"
-
prometheus_memcached_exporter_image: "{{ docker_image_url }}prometheus-memcached-exporter"
prometheus_memcached_exporter_tag: "{{ prometheus_tag }}"
prometheus_memcached_exporter_image_full: "{{ prometheus_memcached_exporter_image }}:{{ prometheus_memcached_exporter_tag }}"
-prometheus_cadvisor_image: "{{ docker_image_url }}prometheus-cadvisor"
-prometheus_cadvisor_tag: "{{ prometheus_tag }}"
-prometheus_cadvisor_image_full: "{{ prometheus_cadvisor_image }}:{{ prometheus_cadvisor_tag }}"
-
prometheus_alertmanager_image: "{{ docker_image_url }}prometheus-alertmanager"
prometheus_alertmanager_tag: "{{ prometheus_tag }}"
prometheus_alertmanager_image_full: "{{ prometheus_alertmanager_image }}:{{ prometheus_alertmanager_tag }}"
@@ -393,9 +370,7 @@ prometheus_libvirt_exporter_image_full: "{{ prometheus_libvirt_exporter_image }}
prometheus_server_dimensions: "{{ default_container_dimensions }}"
prometheus_mysqld_exporter_dimensions: "{{ default_container_dimensions }}"
-prometheus_node_exporter_dimensions: "{{ default_container_dimensions }}"
prometheus_memcached_exporter_dimensions: "{{ default_container_dimensions }}"
-prometheus_cadvisor_dimensions: "{{ default_container_dimensions }}"
prometheus_alertmanager_dimensions: "{{ default_container_dimensions }}"
prometheus_openstack_exporter_dimensions: "{{ default_container_dimensions }}"
prometheus_elasticsearch_exporter_dimensions: "{{ default_container_dimensions }}"
@@ -413,27 +388,11 @@ prometheus_mysqld_exporter_default_volumes:
- "/etc/localtime:/etc/localtime:ro"
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
- "kolla_logs:/var/log/kolla/"
-prometheus_node_exporter_default_volumes:
- - "{{ node_config_directory }}/prometheus-node-exporter/:{{ container_config_directory }}/:ro"
- - "/etc/localtime:/etc/localtime:ro"
- - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
- - "kolla_logs:/var/log/kolla/"
- - "/:/host:ro,rslave"
prometheus_memcached_exporter_default_volumes:
- "{{ node_config_directory }}/prometheus-memcached-exporter/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
- "kolla_logs:/var/log/kolla/"
-prometheus_cadvisor_default_volumes:
- - "{{ node_config_directory }}/prometheus-cadvisor/:{{ container_config_directory }}/:ro"
- - "/etc/localtime:/etc/localtime:ro"
- - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
- - "kolla_logs:/var/log/kolla/"
- - "/:/rootfs:ro"
- - "/var/run:/var/run:rw"
- - "/sys:/sys:ro"
- - "/var/lib/docker/:/var/lib/docker:ro"
- - "/dev/disk/:/dev/disk:ro"
prometheus_alertmanager_default_volumes:
- "{{ node_config_directory }}/prometheus-alertmanager/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
@@ -464,9 +423,7 @@ prometheus_libvirt_exporter_default_volumes:
prometheus_extra_volumes: "{{ default_extra_volumes }}"
prometheus_server_extra_volumes: "{{ prometheus_extra_volumes }}"
prometheus_mysqld_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
-prometheus_node_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
prometheus_memcached_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
-prometheus_cadvisor_extra_volumes: "{{ prometheus_extra_volumes }}"
prometheus_alertmanager_extra_volumes: "{{ prometheus_extra_volumes }}"
prometheus_openstack_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
prometheus_elasticsearch_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
@@ -485,11 +442,9 @@ prometheus_server_command: >-
--storage.tsdb.path /var/lib/prometheus{% if prometheus_cmdline_extras %} {{ prometheus_cmdline_extras }}{% endif %}
prometheus_blackbox_exporter_cmdline_extras: ""
-prometheus_cadvisor_cmdline_extras: "--docker_only --store_container_labels=false --disable_metrics=percpu,referenced_memory,cpu_topology,resctrl,udp,advtcp,sched,hugetlb,memory_numa,tcp,process --housekeeping_interval={{ prometheus_scrape_interval }}"
prometheus_elasticsearch_exporter_cmdline_extras: ""
prometheus_memcached_exporter_cmdline_extras: ""
prometheus_mysqld_exporter_cmdline_extras: ""
-prometheus_node_exporter_cmdline_extras: ""
prometheus_openstack_exporter_cmdline_extras: ""
prometheus_alertmanager_external_url: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ prometheus_alertmanager_port }}"
diff --git a/ansible/roles/prometheus/handlers/main.yml b/ansible/roles/prometheus/handlers/main.yml
index 9b58a236d..386031040 100644
--- a/ansible/roles/prometheus/handlers/main.yml
+++ b/ansible/roles/prometheus/handlers/main.yml
@@ -12,20 +12,6 @@
volumes: "{{ service.volumes }}"
dimensions: "{{ service.dimensions }}"
-- name: Restart prometheus-node-exporter container
- vars:
- service_name: "prometheus-node-exporter"
- service: "{{ prometheus_services[service_name] }}"
- become: true
- kolla_container:
- action: "recreate_or_restart_container"
- common_options: "{{ docker_common_options }}"
- name: "{{ service.container_name }}"
- image: "{{ service.image }}"
- pid_mode: "{{ service.pid_mode | default(omit) }}"
- volumes: "{{ service.volumes }}"
- dimensions: "{{ service.dimensions }}"
-
- name: Restart prometheus-mysqld-exporter container
vars:
service_name: "prometheus-mysqld-exporter"
@@ -52,19 +38,6 @@
volumes: "{{ service.volumes }}"
dimensions: "{{ service.dimensions }}"
-- name: Restart prometheus-cadvisor container
- vars:
- service_name: "prometheus-cadvisor"
- service: "{{ prometheus_services[service_name] }}"
- become: true
- kolla_container:
- action: "recreate_or_restart_container"
- common_options: "{{ docker_common_options }}"
- name: "{{ service.container_name }}"
- image: "{{ service.image }}"
- volumes: "{{ service.volumes }}"
- dimensions: "{{ service.dimensions }}"
-
- name: Restart prometheus-alertmanager container
vars:
service_name: "prometheus-alertmanager"
diff --git a/ansible/roles/prometheus/tasks/precheck.yml b/ansible/roles/prometheus/tasks/precheck.yml
index de8ac17b4..e3b19ad11 100644
--- a/ansible/roles/prometheus/tasks/precheck.yml
+++ b/ansible/roles/prometheus/tasks/precheck.yml
@@ -12,10 +12,8 @@
container_engine: "{{ kolla_container_engine }}"
name:
- prometheus_server
- - prometheus_node_exporter
- prometheus_memcached_exporter
- prometheus_mysqld_exporter
- - prometheus_cadvisor
- prometheus_alertmanager
- prometheus_openstack_exporter
- prometheus_elasticsearch_exporter
@@ -66,18 +64,6 @@
- inventory_hostname in groups['prometheus']
- enable_prometheus_server | bool
-- name: Checking free port for Prometheus node_exporter
- wait_for:
- host: "{{ 'api' | kolla_address }}"
- port: "{{ prometheus_node_exporter_port }}"
- connect_timeout: 1
- timeout: 1
- state: stopped
- when:
- - container_facts.containers['prometheus_node_exporter'] is not defined
- - inventory_hostname in groups['prometheus-node-exporter']
- - enable_prometheus_node_exporter | bool
-
- name: Checking free port for Prometheus mysqld_exporter
wait_for:
host: "{{ 'api' | kolla_address }}"
@@ -102,18 +88,6 @@
- inventory_hostname in groups['prometheus-memcached-exporter']
- enable_prometheus_memcached_exporter | bool
-- name: Checking free port for Prometheus cAdvisor
- wait_for:
- host: "{{ 'api' | kolla_address }}"
- port: "{{ prometheus_cadvisor_port }}"
- connect_timeout: 1
- timeout: 1
- state: stopped
- when:
- - container_facts.containers['prometheus_cadvisor'] is not defined
- - inventory_hostname in groups['prometheus-cadvisor']
- - enable_prometheus_cadvisor | bool
-
- name: Checking free ports for Prometheus Alertmanager
wait_for:
host: "{{ 'api' | kolla_address }}"
diff --git a/ansible/site.yml b/ansible/site.yml
index 6c8755e80..1f6f409d6 100644
--- a/ansible/site.yml
+++ b/ansible/site.yml
@@ -440,10 +440,8 @@
gather_facts: false
hosts:
- prometheus
- - prometheus-node-exporter
- prometheus-mysqld-exporter
- prometheus-memcached-exporter
- - prometheus-cadvisor
- prometheus-alertmanager
- prometheus-openstack-exporter
- prometheus-elasticsearch-exporter
@@ -459,6 +457,22 @@
- { role: prometheus,
tags: prometheus }
+- name: Apply role prometheus-node-exporters
+ gather_facts: false
+ hosts:
+ - prometheus-node-exporter
+ - prometheus-cadvisor
+ - '&enable_prometheus_True'
+ serial: '{{ kolla_serial|default("0") }}'
+ max_fail_percentage: >-
+ {{ prometheus_node_exporters_max_fail_percentage |
+ default(kolla_max_fail_percentage) |
+ default(100) }}
+ roles:
+ - { role: prometheus-node-exporters,
+ tags: [prometheus, prometheus-node-exporters],
+ when: enable_prometheus | bool }
+
- name: Apply role iscsi
gather_facts: false
hosts:
diff --git a/releasenotes/notes/split-prometheus-role-d363716375b14143.yaml b/releasenotes/notes/split-prometheus-role-d363716375b14143.yaml
new file mode 100644
index 000000000..1f0019717
--- /dev/null
+++ b/releasenotes/notes/split-prometheus-role-d363716375b14143.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ Improves performance of Prometheus deployment by separating the
+ ``prometheus_node_exporter`` and ``prometheus_cadvisor`` services to a new
+ ``prometheus-node-exporters`` role.