From 76d8fc5a8e0641eb8e80248bf77bb1bfe508af0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amedee=20Van=20Gasse=20=E2=9C=A8=F0=9F=8C=88=F0=9F=A6=84?= Date: Mon, 16 Sep 2024 21:28:53 +0200 Subject: [PATCH] Add a munin plugin to count the number of emails in folders Uses the doveadm command --- .../etc/munin/plugin-conf.d/mailbox_count | 2 + .../files/etc/munin/plugins/backup_size | 0 .../files/etc/munin/plugins/mailbox_count | 57 +++++++++++++++++++ roles/mailinabox/tasks/munin.yml | 14 ++--- 4 files changed, 66 insertions(+), 7 deletions(-) create mode 100644 roles/mailinabox/files/etc/munin/plugin-conf.d/mailbox_count mode change 100644 => 100755 roles/mailinabox/files/etc/munin/plugins/backup_size create mode 100755 roles/mailinabox/files/etc/munin/plugins/mailbox_count diff --git a/roles/mailinabox/files/etc/munin/plugin-conf.d/mailbox_count b/roles/mailinabox/files/etc/munin/plugin-conf.d/mailbox_count new file mode 100644 index 0000000..68e0db4 --- /dev/null +++ b/roles/mailinabox/files/etc/munin/plugin-conf.d/mailbox_count @@ -0,0 +1,2 @@ +[mailbox_count] +user root diff --git a/roles/mailinabox/files/etc/munin/plugins/backup_size b/roles/mailinabox/files/etc/munin/plugins/backup_size old mode 100644 new mode 100755 diff --git a/roles/mailinabox/files/etc/munin/plugins/mailbox_count b/roles/mailinabox/files/etc/munin/plugins/mailbox_count new file mode 100755 index 0000000..63dddc5 --- /dev/null +++ b/roles/mailinabox/files/etc/munin/plugins/mailbox_count @@ -0,0 +1,57 @@ +#!/bin/sh + +output_config() { + cat <<'EOM' +inbox.label Inbox +archive.label Archive +drafts.label Drafts +sent.label Sent +spam.label Spam +trash.label Trash +graph_args --base 1000 --lower-limit 0 +graph_scale no +graph_category email +graph_info Number of emails in each folder +graph_title Emails +graph_vlabel Emails +EOM +} + +output_values() { + printf "inbox.value %d\n" "$(number_of_emails Inbox)" + printf "archive.value %d\n" "$(number_of_emails Archive)" + printf "drafts.value %d\n" "$(number_of_emails Drafts)" + printf "sent.value %d\n" "$(number_of_emails Sent)" + printf "spam.value %d\n" "$(number_of_emails Spam)" + printf "trash.value %d\n" "$(number_of_emails Trash)" +} + +number_of_emails() { + /usr/bin/doveadm search -A mailbox "$1" | wc --lines +} + +output_usage() { + printf >&2 "%s - munin plugin to graph number of emails\n" "${0##*/}" + printf >&2 "Usage: %s [config]\n" "${0##*/}" +} + +case $# in + 0) + output_values + ;; + 1) + case $1 in + config) + output_config + ;; + *) + output_usage + exit 1 + ;; + esac + ;; + *) + output_usage + exit 1 + ;; +esac diff --git a/roles/mailinabox/tasks/munin.yml b/roles/mailinabox/tasks/munin.yml index 0748172..ce9beff 100644 --- a/roles/mailinabox/tasks/munin.yml +++ b/roles/mailinabox/tasks/munin.yml @@ -4,25 +4,25 @@ path: /lib/systemd/system/munin-node.service section: Service option: ProtectHome - value: read-only + value: false ignore_spaces: true no_extra_spaces: true owner: root mode: u=rw,go=r notify: Reload systemd -- name: Add duplicity plugin +- name: Add munin plugins ansible.builtin.copy: - src: etc/munin/plugins/backup_size - dest: /etc/munin/plugins/backup_size + src: etc/munin/plugins/ + dest: /etc/munin/plugins/ owner: root mode: u=rwx,go=rx notify: Restart munin-node -- name: Add duplicity plugin configuration +- name: Add munin plugin configurations ansible.builtin.copy: - src: etc/munin/plugin-conf.d/backup_size - dest: /etc/munin/plugin-conf.d/backup_size + src: etc/munin/plugin-conf.d/ + dest: /etc/munin/plugin-conf.d/ owner: root mode: u=rw,go=r notify: Restart munin-node