From 55cc7a229a5c3bb1258d8f0d5723f72f019f5fbe Mon Sep 17 00:00:00 2001 From: Christian Boltz Date: Mar 24 2024 17:34:53 +0000 Subject: Merge branch 'crameleon/postfix-queue-metrics' into 'production' Collect Postfix queue size metrics See merge request infra/salt!1595 --- diff --git a/salt/profile/postfix/files/etc/systemd/system/postfix-queue-size-metrics.service.j2 b/salt/profile/postfix/files/etc/systemd/system/postfix-queue-size-metrics.service.j2 new file mode 100644 index 0000000..687de33 --- /dev/null +++ b/salt/profile/postfix/files/etc/systemd/system/postfix-queue-size-metrics.service.j2 @@ -0,0 +1,4 @@ +{{ pillar['managed_by_salt'] }} + +[Service] +ExecStart=/usr/local/libexec/systemd/postfix-queue-size-metrics.sh diff --git a/salt/profile/postfix/files/etc/systemd/system/postfix-queue-size-metrics.timer.j2 b/salt/profile/postfix/files/etc/systemd/system/postfix-queue-size-metrics.timer.j2 new file mode 100644 index 0000000..beeb531 --- /dev/null +++ b/salt/profile/postfix/files/etc/systemd/system/postfix-queue-size-metrics.timer.j2 @@ -0,0 +1,11 @@ +{{ pillar['managed_by_salt'] }} + +[Unit] +BindsTo=postfix.service + +[Timer] +OnCalendar=*:0/5 +AccuracySec=1us + +[Install] +WantedBy=timers.target diff --git a/salt/profile/postfix/files/usr/local/libexec/systemd/postfix-queue-size-metrics.sh.j2 b/salt/profile/postfix/files/usr/local/libexec/systemd/postfix-queue-size-metrics.sh.j2 new file mode 100644 index 0000000..5c4c43b --- /dev/null +++ b/salt/profile/postfix/files/usr/local/libexec/systemd/postfix-queue-size-metrics.sh.j2 @@ -0,0 +1,21 @@ +#!/bin/sh -Cefu +{{ pillar['managed_by_salt'] }} + +# Inspired by https://gitlab.torproject.org/tpo/tpa/grafana-dashboards/-/issues/1 + +queues='active bounce corrupt deferred flush hold incoming maildrop' +spool_dir='/var/spool/postfix' + +{ + for queue in ${queues} + do + if [ -d "${spool_dir}/${queue}" ] + then + >&2 echo "Checking $queue" + printf 'postfix_queue_length{postfix_instance="postfix", queue="%s"} ' "$queue" + find "${spool_dir}/${queue}" -type f | wc -l + else + >&2 echo "Skipping $queue" + fi + done +} | sponge /var/spool/prometheus/postfix_queues.prom diff --git a/salt/profile/postfix/init.sls b/salt/profile/postfix/init.sls index 1c89271..d981fab 100644 --- a/salt/profile/postfix/init.sls +++ b/salt/profile/postfix/init.sls @@ -57,3 +57,25 @@ postfix_alias_present_{{ user }}: - onchanges: - file: /etc/postfix/discard_ndrs {%- endif %} + +profile_postfix_queue_size_metrics_files: + file.managed: + - names: + - /usr/local/libexec/systemd/postfix-queue-size-metrics.sh: + - source: salt://{{ slspath }}/files/usr/local/libexec/systemd/postfix-queue-size-metrics.sh.j2 + - makedirs: True + - mode: '0750' + - /etc/systemd/system/postfix-queue-size-metrics.service: + - source: salt://{{ slspath }}/files/etc/systemd/system/postfix-queue-size-metrics.service.j2 + - /etc/systemd/system/postfix-queue-size-metrics.timer: + - source: salt://{{ slspath }}/files/etc/systemd/system/postfix-queue-size-metrics.timer.j2 + - template: jinja + +profile_postfix_queue_size_metrics_timer: + service.running: + - name: postfix-queue-size-metrics.timer + - enable: True + - require: + - service: postfix + - watch: + - file: profile_postfix_queue_size_metrics_files