aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2026-03-30 12:48:09 +0000
committerGerrit Code Review <review@openstack.org>2026-03-30 12:48:09 +0000
commita7c6c2d6cc32619c01249a9d78ae472ad7e43f9c (patch)
treeb03bee143e9bbeb4718b5f3fce72c88956b115bd
parent10320f4a10a6d880e34ab9ab327e8d5ff54383ad (diff)
parentc90a23005c138edcf4e7f0a0d9c8b7fa7e745bba (diff)
downloadkolla-ansible-a7c6c2d6cc32619c01249a9d78ae472ad7e43f9c.tar.gz
kolla-ansible-a7c6c2d6cc32619c01249a9d78ae472ad7e43f9c.zip
Merge "prometheus: add valkey exporter support"
-rw-r--r--ansible/group_vars/all/prometheus.yml2
-rw-r--r--ansible/inventory/all-in-one3
-rw-r--r--ansible/inventory/multinode3
-rw-r--r--ansible/roles/prometheus/defaults/main.yml17
-rw-r--r--ansible/roles/prometheus/handlers/main.yml13
-rw-r--r--ansible/roles/prometheus/templates/prometheus-valkey-exporter.json.j212
-rw-r--r--ansible/roles/prometheus/templates/prometheus.yml.j213
-rw-r--r--ansible/site.yml1
-rw-r--r--etc/kolla/globals.yml1
-rw-r--r--releasenotes/notes/add-valkey-exporter-6598eafebeefddd1.yaml5
10 files changed, 70 insertions, 0 deletions
diff --git a/ansible/group_vars/all/prometheus.yml b/ansible/group_vars/all/prometheus.yml
index 388825907..0eeca4e7c 100644
--- a/ansible/group_vars/all/prometheus.yml
+++ b/ansible/group_vars/all/prometheus.yml
@@ -22,6 +22,7 @@ enable_prometheus_rabbitmq_exporter: "{{ enable_prometheus | bool and enable_rab
enable_prometheus_libvirt_exporter: "{{ enable_prometheus | bool and enable_nova | bool and nova_compute_virt_type in ['kvm', 'qemu'] }}"
enable_prometheus_etcd_integration: "{{ enable_prometheus | bool and enable_etcd | bool }}"
enable_prometheus_proxysql_exporter: "{{ enable_prometheus | bool and enable_proxysql | bool }}"
+enable_prometheus_valkey_exporter: "{{ enable_prometheus | bool and enable_valkey | bool }}"
prometheus_alertmanager_user: "admin"
prometheus_ceph_exporter_interval: "{{ prometheus_scrape_interval }}"
@@ -56,6 +57,7 @@ prometheus_fluentd_integration_port: "24231"
prometheus_libvirt_exporter_port: "9177"
prometheus_etcd_integration_port: "{{ etcd_client_port }}"
proxysql_prometheus_exporter_port: "6070"
+prometheus_valkey_exporter_port: "9121"
# Prometheus alertmanager ports
prometheus_alertmanager_internal_fqdn: "{{ kolla_internal_fqdn }}"
diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one
index ce3b26f16..5fa8ba959 100644
--- a/ansible/inventory/all-in-one
+++ b/ansible/inventory/all-in-one
@@ -543,6 +543,9 @@ monitoring
[prometheus-libvirt-exporter:children]
compute
+[prometheus-valkey-exporter:children]
+valkey
+
[masakari-api:children]
control
diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode
index 40db78c1e..4aaec0785 100644
--- a/ansible/inventory/multinode
+++ b/ansible/inventory/multinode
@@ -561,6 +561,9 @@ monitoring
[prometheus-libvirt-exporter:children]
compute
+[prometheus-valkey-exporter:children]
+valkey
+
[masakari-api:children]
control
diff --git a/ansible/roles/prometheus/defaults/main.yml b/ansible/roles/prometheus/defaults/main.yml
index 5c4ad787a..03eaae027 100644
--- a/ansible/roles/prometheus/defaults/main.yml
+++ b/ansible/roles/prometheus/defaults/main.yml
@@ -121,6 +121,13 @@ prometheus_services:
image: "{{ prometheus_libvirt_exporter_image_full }}"
volumes: "{{ prometheus_libvirt_exporter_default_volumes + prometheus_libvirt_exporter_extra_volumes }}"
dimensions: "{{ prometheus_libvirt_exporter_dimensions }}"
+ prometheus-valkey-exporter:
+ container_name: "prometheus_valkey_exporter"
+ group: "prometheus-valkey-exporter"
+ enabled: "{{ enable_prometheus_valkey_exporter | bool }}"
+ image: "{{ prometheus_valkey_exporter_image_full }}"
+ volumes: "{{ prometheus_valkey_exporter_default_volumes + prometheus_valkey_exporter_extra_volumes }}"
+ dimensions: "{{ prometheus_valkey_exporter_dimensions }}"
####################
# Prometheus Server
@@ -398,6 +405,10 @@ prometheus_libvirt_exporter_image: "{{ docker_image_url }}prometheus-libvirt-exp
prometheus_libvirt_exporter_tag: "{{ prometheus_tag }}"
prometheus_libvirt_exporter_image_full: "{{ prometheus_libvirt_exporter_image }}:{{ prometheus_libvirt_exporter_tag }}"
+prometheus_valkey_exporter_image: "{{ docker_image_url }}prometheus-valkey-exporter"
+prometheus_valkey_exporter_tag: "{{ prometheus_tag }}"
+prometheus_valkey_exporter_image_full: "{{ prometheus_valkey_exporter_image }}:{{ prometheus_valkey_exporter_tag }}"
+
prometheus_server_dimensions: "{{ default_container_dimensions }}"
prometheus_mysqld_exporter_dimensions: "{{ default_container_dimensions }}"
prometheus_memcached_exporter_dimensions: "{{ default_container_dimensions }}"
@@ -406,6 +417,7 @@ prometheus_openstack_exporter_dimensions: "{{ default_container_dimensions }}"
prometheus_elasticsearch_exporter_dimensions: "{{ default_container_dimensions }}"
prometheus_blackbox_exporter_dimensions: "{{ default_container_dimensions }}"
prometheus_libvirt_exporter_dimensions: "{{ default_container_dimensions }}"
+prometheus_valkey_exporter_dimensions: "{{ default_container_dimensions }}"
prometheus_server_default_volumes:
- "{{ node_config_directory }}/prometheus-server/:{{ container_config_directory }}/:ro"
@@ -441,6 +453,10 @@ prometheus_libvirt_exporter_default_volumes:
- "{{ node_config_directory }}/prometheus-libvirt-exporter/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
- "/run/libvirt:/run/libvirt:ro"
+prometheus_valkey_exporter_default_volumes:
+ - "{{ node_config_directory }}/prometheus-valkey-exporter/:{{ container_config_directory }}/:ro"
+ - "/etc/localtime:/etc/localtime:ro"
+ - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
prometheus_extra_volumes: "{{ default_extra_volumes }}"
prometheus_server_extra_volumes: "{{ prometheus_extra_volumes }}"
@@ -451,6 +467,7 @@ prometheus_openstack_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
prometheus_elasticsearch_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
prometheus_blackbox_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
prometheus_libvirt_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
+prometheus_valkey_exporter_extra_volumes: "{{ prometheus_extra_volumes }}"
prometheus_openstack_exporter_disabled_volume: "{{ '--disable-service.volume' if not enable_cinder | bool else '' }}"
prometheus_openstack_exporter_disabled_dns: "{{ '--disable-service.dns' if not enable_designate | bool else '' }}"
diff --git a/ansible/roles/prometheus/handlers/main.yml b/ansible/roles/prometheus/handlers/main.yml
index 386031040..f83129840 100644
--- a/ansible/roles/prometheus/handlers/main.yml
+++ b/ansible/roles/prometheus/handlers/main.yml
@@ -104,3 +104,16 @@
image: "{{ service.image }}"
volumes: "{{ service.volumes }}"
dimensions: "{{ service.dimensions }}"
+
+- name: Restart prometheus-valkey-exporter container
+ vars:
+ service_name: "prometheus-valkey-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 }}"
+ volumes: "{{ service.volumes }}"
+ dimensions: "{{ service.dimensions }}"
diff --git a/ansible/roles/prometheus/templates/prometheus-valkey-exporter.json.j2 b/ansible/roles/prometheus/templates/prometheus-valkey-exporter.json.j2
new file mode 100644
index 000000000..e3d3f45b0
--- /dev/null
+++ b/ansible/roles/prometheus/templates/prometheus-valkey-exporter.json.j2
@@ -0,0 +1,12 @@
+{
+ "command": "/opt/valkey-exporter -redis.addr=redis://{{ api_interface_address | put_address_in_context('url') }}:{{ valkey_server_port }} -redis.password={{ valkey_master_password }} -web.listen-address={{ api_interface_address | put_address_in_context('url') }}:{{ prometheus_valkey_exporter_port }}",
+ "config_files": [
+ {% if kolla_copy_ca_into_containers | bool %}
+ {
+ "source": "{{ container_config_directory }}/ca-certificates",
+ "dest": "/var/lib/kolla/share/ca-certificates",
+ "owner": "root",
+ "perm": "0600"
+ }{% endif %}
+ ]
+}
diff --git a/ansible/roles/prometheus/templates/prometheus.yml.j2 b/ansible/roles/prometheus/templates/prometheus.yml.j2
index 1aa75fa2c..f07e89cea 100644
--- a/ansible/roles/prometheus/templates/prometheus.yml.j2
+++ b/ansible/roles/prometheus/templates/prometheus.yml.j2
@@ -266,6 +266,19 @@ scrape_configs:
{% endfor %}
{% endif %}
+{% if enable_prometheus_valkey_exporter | bool %}
+ - job_name: valkey_exporter
+ static_configs:
+{% for host in groups["prometheus-valkey-exporter"] %}
+ - targets:
+ - '{{ 'api' | kolla_address(host, override_var='prometheus_target_address') | put_address_in_context('url') }}:{{ hostvars[host]['prometheus_valkey_exporter_port'] }}'
+{% if hostvars[host].prometheus_instance_label | default(false, true) %}
+ labels:
+ instance: "{{ hostvars[host].prometheus_instance_label }}"
+{% endif %}
+{% endfor %}
+{% endif %}
+
alerting:
alertmanagers:
- static_configs:
diff --git a/ansible/site.yml b/ansible/site.yml
index f37939f37..abc31d580 100644
--- a/ansible/site.yml
+++ b/ansible/site.yml
@@ -460,6 +460,7 @@
- prometheus-elasticsearch-exporter
- prometheus-blackbox-exporter
- prometheus-libvirt-exporter
+ - prometheus-valkey-exporter
- "&enable_prometheus_True"
serial: '{{ kolla_serial|default("0") }}'
max_fail_percentage: >-
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 36d2ca381..da9246a4d 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -734,6 +734,7 @@ workaround_ansible_issue_8743: true
#enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}"
#enable_prometheus_libvirt_exporter: "{{ enable_prometheus | bool and enable_nova | bool and nova_compute_virt_type in ['kvm', 'qemu'] }}"
#enable_prometheus_etcd_integration: "{{ enable_prometheus | bool and enable_etcd | bool }}"
+#enable_prometheus_valkey_exporter: "{{ enable_prometheus | bool and enable_valkey | bool }}"
# The labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager).
# prometheus_external_labels:
diff --git a/releasenotes/notes/add-valkey-exporter-6598eafebeefddd1.yaml b/releasenotes/notes/add-valkey-exporter-6598eafebeefddd1.yaml
new file mode 100644
index 000000000..9fa2cf951
--- /dev/null
+++ b/releasenotes/notes/add-valkey-exporter-6598eafebeefddd1.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - |
+ Adds support for deploying ``prometheus-valkey-exporter``
+ to enable monitoring of Valkey servers.