From a78146e506be4f5a6bb7d20e8672fabbe5318fc8 Mon Sep 17 00:00:00 2001 From: shirenn Date: Wed, 23 Nov 2022 16:14:05 +0100 Subject: [PATCH] [prometheus-postfix-exporter] Deploy new prometheus exporter --- group_vars/postfix.yml | 3 +++ plays/monitoring.yml | 9 ++++--- .../files/postfix.sh | 11 -------- .../prometheus-node-exporter-postfix.service | 6 ----- .../prometheus-node-exporter-postfix.timer | 9 ------- .../tasks/main.yml | 25 ------------------- .../handlers/main.yml | 5 ++++ .../tasks/main.yml | 22 ++++++++++++++++ .../prometheus-postfix-exporter.j2 | 11 ++++++++ 9 files changed, 47 insertions(+), 54 deletions(-) create mode 100644 group_vars/postfix.yml delete mode 100755 roles/prometheus-node-exporter-postfix/files/postfix.sh delete mode 100644 roles/prometheus-node-exporter-postfix/files/prometheus-node-exporter-postfix.service delete mode 100644 roles/prometheus-node-exporter-postfix/files/prometheus-node-exporter-postfix.timer delete mode 100644 roles/prometheus-node-exporter-postfix/tasks/main.yml create mode 100644 roles/prometheus-postfix-exporter/handlers/main.yml create mode 100644 roles/prometheus-postfix-exporter/tasks/main.yml create mode 100644 roles/prometheus-postfix-exporter/templates/logrotate.d/prometheus-postfix-exporter.j2 diff --git a/group_vars/postfix.yml b/group_vars/postfix.yml new file mode 100644 index 00000000..42ee4953 --- /dev/null +++ b/group_vars/postfix.yml @@ -0,0 +1,3 @@ +--- +glob_prometheus_postfix_exporter: + listen_addr: "{{ query('ldap', 'ip4', ansible_hostname, 'adm') }}" diff --git a/plays/monitoring.yml b/plays/monitoring.yml index b2407344..680c3fc5 100755 --- a/plays/monitoring.yml +++ b/plays/monitoring.yml @@ -55,9 +55,12 @@ roles: - prometheus-bird-exporter -# Monitor mailq with a special text exporter -# - hosts: redisdead.adm.crans.org -# roles: ["prometheus-node-exporter-postfix"] +# Monitor postfix queue +- hosts: postfix, !sputnik.adm.crans.org + vars: + prometheus_postfix_exporter: "{{ glob_prometheus_postfix_exporter | default({}) | combine(loc_prometheus_postfix_exporter | default({})) }}" + roles: + - prometheus-postfix-exporter # Monitor logs with mtail - hosts: mtail diff --git a/roles/prometheus-node-exporter-postfix/files/postfix.sh b/roles/prometheus-node-exporter-postfix/files/postfix.sh deleted file mode 100755 index 4de792c9..00000000 --- a/roles/prometheus-node-exporter-postfix/files/postfix.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# -# Description: Expose metrics from postfix. -# -# Author: Alexandre Iooss - -mailq_length="$(/usr/bin/mailq | grep "[^ ]*@crans.org" | wc -l)" - -echo '# HELP postfix_mailq_length Pending mails in mailq.' -echo '# TYPE postfix_mailq_length gauge' -echo "postfix_mailq_length ${mailq_length}" diff --git a/roles/prometheus-node-exporter-postfix/files/prometheus-node-exporter-postfix.service b/roles/prometheus-node-exporter-postfix/files/prometheus-node-exporter-postfix.service deleted file mode 100644 index 7debb222..00000000 --- a/roles/prometheus-node-exporter-postfix/files/prometheus-node-exporter-postfix.service +++ /dev/null @@ -1,6 +0,0 @@ -[Unit] -Description=Collect postfix metrics for prometheus-node-exporter - -[Service] -Type=oneshot -ExecStart=/bin/bash -c "/usr/share/prometheus-node-exporter/postfix.sh | sponge /var/lib/prometheus/node-exporter/postfix.prom" diff --git a/roles/prometheus-node-exporter-postfix/files/prometheus-node-exporter-postfix.timer b/roles/prometheus-node-exporter-postfix/files/prometheus-node-exporter-postfix.timer deleted file mode 100644 index e1d10dcb..00000000 --- a/roles/prometheus-node-exporter-postfix/files/prometheus-node-exporter-postfix.timer +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Run postfix metrics collection every 15 minutes - -[Timer] -OnBootSec=0 -OnUnitActiveSec=15min - -[Install] -WantedBy=timers.target diff --git a/roles/prometheus-node-exporter-postfix/tasks/main.yml b/roles/prometheus-node-exporter-postfix/tasks/main.yml deleted file mode 100644 index 5e6ca8a5..00000000 --- a/roles/prometheus-node-exporter-postfix/tasks/main.yml +++ /dev/null @@ -1,25 +0,0 @@ ---- -# Install Postfix textfile collector, in bullseye you will have postfix exporter -- name: Install Postfix textfile collector - copy: - src: "{{ item.src }}" - dest: "{{ item.dest }}" - owner: root - group: root - mode: "{{ item.mode }}" - loop: - - src: postfix.sh - dest: /usr/share/prometheus-node-exporter/postfix.sh - mode: "0755" - - src: prometheus-node-exporter-postfix.service - dest: /etc/systemd/system/prometheus-node-exporter-postfix.service - mode: "0644" - - src: prometheus-node-exporter-postfix.timer - dest: /etc/systemd/system/prometheus-node-exporter-postfix.timer - mode: "0644" - -- name: Activate prometheus-node-exporter-postfix timer - systemd: - name: prometheus-node-exporter-postfix.timer - enabled: true - state: started diff --git a/roles/prometheus-postfix-exporter/handlers/main.yml b/roles/prometheus-postfix-exporter/handlers/main.yml new file mode 100644 index 00000000..a83d342d --- /dev/null +++ b/roles/prometheus-postfix-exporter/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: systemctl restart prometheus-postfix-exporter.service + service: + name: prometheus-postfix-exporter + state: restarted diff --git a/roles/prometheus-postfix-exporter/tasks/main.yml b/roles/prometheus-postfix-exporter/tasks/main.yml new file mode 100644 index 00000000..d4edbc03 --- /dev/null +++ b/roles/prometheus-postfix-exporter/tasks/main.yml @@ -0,0 +1,22 @@ +--- +- name: apt install prometheus-postfix-exporter + apt: + update_cache: true + name: prometheus-postfix-exporter + install_recommends: false + register: apt_result + retries: 3 + until: apt_result is succeeded + +- name: edit /etc/default/prometheus-postfix-exporter + lineinfile: + path: /etc/default/prometheus-postfix-exporter + regexp: ^ARGS= + line: | + ARGS="--web.listen-address={{ prometheus_postfix_exporter.listen_addr }}:9154" + notify: systemctl restart prometheus-postfix-exporter.service + +- name: rotate /var/lib/prometheus/postfix-exporter/ + template: + src: logrotate.d/prometheus-postfix-exporter.j2 + dest: /etc/logrotate.d/prometheus-postfix-exporter diff --git a/roles/prometheus-postfix-exporter/templates/logrotate.d/prometheus-postfix-exporter.j2 b/roles/prometheus-postfix-exporter/templates/logrotate.d/prometheus-postfix-exporter.j2 new file mode 100644 index 00000000..494f3f23 --- /dev/null +++ b/roles/prometheus-postfix-exporter/templates/logrotate.d/prometheus-postfix-exporter.j2 @@ -0,0 +1,11 @@ +/var/lib/prometheus/postfix-exporter/mail.log { + weekly + rotate 2 + copytruncate + notifempty + missingok + create 0640 prometheus prometheus + postrotate + /usr/lib/rsyslog/rsyslog-rotate + endscript +}