diff --git a/monitoring.yml b/monitoring.yml index 98968977..0ed2a250 100644 --- a/monitoring.yml +++ b/monitoring.yml @@ -57,3 +57,8 @@ - hosts: fyre.adm.crans.org roles: - ninjabot + +# Monitor mailq with a special text exporter +- hosts: redisdead.adm.crans.org + roles: + - prometheus-node-exporter-postfix diff --git a/roles/prometheus-node-exporter-postfix/files/postfix.sh b/roles/prometheus-node-exporter-postfix/files/postfix.sh new file mode 100755 index 00000000..4de792c9 --- /dev/null +++ b/roles/prometheus-node-exporter-postfix/files/postfix.sh @@ -0,0 +1,11 @@ +#!/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 new file mode 100644 index 00000000..7debb222 --- /dev/null +++ b/roles/prometheus-node-exporter-postfix/files/prometheus-node-exporter-postfix.service @@ -0,0 +1,6 @@ +[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 new file mode 100644 index 00000000..e1d10dcb --- /dev/null +++ b/roles/prometheus-node-exporter-postfix/files/prometheus-node-exporter-postfix.timer @@ -0,0 +1,9 @@ +[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 new file mode 100644 index 00000000..5e6ca8a5 --- /dev/null +++ b/roles/prometheus-node-exporter-postfix/tasks/main.yml @@ -0,0 +1,25 @@ +--- +# 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