From 09eba9de8049c766f6fb2891f50b3b9f2b720853 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Sun, 10 Dec 2023 12:39:35 -0500 Subject: [PATCH] Add Prometheus Zookeeper exporter --- roles/pvc/handlers/main.yml | 5 +++++ roles/pvc/tasks/zookeeper/main.yml | 20 ++++++++++++++++++++ roles/pvc/templates/zookeeper/prometheus.j2 | 5 +++++ roles/pvc/templates/zookeeper/zoo.cfg.j2 | 5 ++++- 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 roles/pvc/templates/zookeeper/prometheus.j2 diff --git a/roles/pvc/handlers/main.yml b/roles/pvc/handlers/main.yml index 34cb628..5b2e485 100644 --- a/roles/pvc/handlers/main.yml +++ b/roles/pvc/handlers/main.yml @@ -4,6 +4,11 @@ name: zookeeper state: restarted +- name: restart prometheus-zookeeper + service: + name: prometheus-zookeeper-exporter + state: restarted + - name: restart libvirtd service: name: libvirtd diff --git a/roles/pvc/tasks/zookeeper/main.yml b/roles/pvc/tasks/zookeeper/main.yml index 07f94b3..d7d22ec 100644 --- a/roles/pvc/tasks/zookeeper/main.yml +++ b/roles/pvc/tasks/zookeeper/main.yml @@ -21,6 +21,26 @@ - zoo.cfg notify: restart zookeeper +- name: install Prometheus zookeeper exporter if enabled + apt: + name: + - prometheus-zookeeper-exporter + register: apt_res + retries: 5 + until: apt_res is success + when: enable_prometheus_exporters is defined and enable_prometheus_exporters + +- name: install Prometheus zookeeper exporter config if enabled + template: + src: patroni/prometheus.env.j2 + dest: /etc/default/prometheus-zookeeper-exporter + owner: prometheus + group: prometheus + mode: 0640 + notify: + - restart prometheus-zookeeper + when: enable_prometheus_exporters is defined and enable_prometheus_exporters + - name: install daily vacuum script template: src: zookeeper/zookeeper-vacuum.j2 diff --git a/roles/pvc/templates/zookeeper/prometheus.j2 b/roles/pvc/templates/zookeeper/prometheus.j2 new file mode 100644 index 0000000..a3ebe22 --- /dev/null +++ b/roles/pvc/templates/zookeeper/prometheus.j2 @@ -0,0 +1,5 @@ +# Zookeeper Prometheus exporter arguments +# {{ ansible_managed }} + +# Set the zk-hosts to our cluster local IP address as this is where Zookeeper listens +ARGS="-zk-hosts='{% for node in pvc_nodes if node.hostname == this_node %}{{ node.cluster_ip }}{% endfor %}:2181'" diff --git a/roles/pvc/templates/zookeeper/zoo.cfg.j2 b/roles/pvc/templates/zookeeper/zoo.cfg.j2 index e0da718..530ec28 100644 --- a/roles/pvc/templates/zookeeper/zoo.cfg.j2 +++ b/roles/pvc/templates/zookeeper/zoo.cfg.j2 @@ -19,11 +19,14 @@ maxClientCnxns=200 autopurge.snapRetainCount=3 autopurge.purgeInterval=1 -# Enable Prometheus metrics (someday, but not today under Debian 12 or less) +# Enable internal Prometheus metrics (someday, but not today under Debian 12 or less) #metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider #metricsProvider.httpPort=9181 #metricsProvider.exportJvmInfo=true +# Enable all 4LW commands; need MNTR for external Prometheus metrics +4lw.commands.whitelist=* + # Listen on port 2181 on the cluster IP clientPort=2181 clientPortAddress={% for node in pvc_nodes if node.hostname == this_node %}{{ node.cluster_ip }}{% endfor %}