Repository
Munin (2.0)
Last change
2020-05-27
Graph Categories
Family
auto
Capabilities
Language
Shell
License
GPL-2.0-only

exim_mailqueue

Name

exim_mailqueue - Plugin to monitor exim queue size

Configuration

This plugin needs to run as a user that has access to run exiqgrep and examine the queue directories. This is done like this for example:

[exim_*]
  user exim

Configuration parameters for a file in @@CONFDIR@@/plugin-conf.d/ if you need to override the defaults below:

[exim_mailqueue]
  env.exiqgrep   - Use if exiqgrep is not in $PATH
  env.graphtitle - Title of the graph
  env.queuewarn  - When to warn (of undelivered mails)
  env.queuecrit  - When to crit (of undelivered mails)
  env.frozenwarn - When to warn (of frozen mails)
  env.frozencrit - When to crit (of frozen mails)

Default Configuration

[exim_mailqueue]
  env.graphtitle Exim Mailqueue
  env.exiqgrep  <autodetected>
  env.queuewarn 100
  env.queuecrit 200
  env.frozenwarn 100
  env.frozencrit 200

Author

The original author was Audun Ytterdal, though the plugin has been heavily modified by lots of people since then.

License

GPLv2

Magic Markers

#%# family=auto
#%# capabilities=autoconf
#!@@GOODSH@@
# -*- sh -*-

set -e

: << EOF

=head1 NAME

exim_mailqueue - Plugin to monitor exim queue size

=head1 CONFIGURATION

This plugin needs to run as a user that has access to run exiqgrep and
examine the queue directories.  This is done like this for example:

  [exim_*]
    user exim

Configuration parameters for a file in @@CONFDIR@@/plugin-conf.d/
if you need to override the defaults below:

  [exim_mailqueue]
    env.exiqgrep   - Use if exiqgrep is not in $PATH
    env.graphtitle - Title of the graph
    env.queuewarn  - When to warn (of undelivered mails)
    env.queuecrit  - When to crit (of undelivered mails)
    env.frozenwarn - When to warn (of frozen mails)
    env.frozencrit - When to crit (of frozen mails)

=head2 DEFAULT CONFIGURATION

  [exim_mailqueue]
    env.graphtitle Exim Mailqueue
    env.exiqgrep  <autodetected>
    env.queuewarn 100
    env.queuecrit 200
    env.frozenwarn 100
    env.frozencrit 200

=head1 AUTHOR

The original author was Audun Ytterdal, though the plugin has been heavily
modified by lots of people since then.

=head1 LICENSE

GPLv2

=begin comment

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.

=end comment

=head1 MAGIC MARKERS

=begin comment

These magic markers are used by munin-node-configure when installing
munin-node.

=end comment

  #%# family=auto
  #%# capabilities=autoconf

=cut

EOF


GRAPHTITLE='Exim Mailqueue'

EXIQGREP=${exiqgrep:-$(command -v exiqgrep || true)}
GRAPHTITLE=${graphtitle:-$GRAPHTITLE}

QUEUEWARN=${queuewarn:-100}
QUEUECRIT=${queuecrit:-200}
FROZENWARN=${frozenwarn:-100}
FROZENCRIT=${frozencrit:-200}

if [ "$1" = "autoconf" ]; then
    if [ ! -x "$EXIQGREP" ]; then
        echo "no (command exiqgrep not found)"
        exit 0
    else
	    echo yes
        exit 0
    fi
fi

if [ "$1" = "config" ]; then
	echo "graph_title $GRAPHTITLE"
	echo 'graph_args --base 1000 -l 0'
	echo 'graph_vlabel mails in queue'
	echo 'graph_category exim'

	echo 'mails.label queued mails'
	# Use "AREASTACK" in munin 1.3.3 and later
	echo 'mails.draw AREA'
	echo "mails.warning 0:$QUEUEWARN"
	echo "mails.critical 0:$QUEUECRIT"
	echo 'mails.colour 00AA00'

	echo 'frozen.label frozen mails'
	# Use "AREASTACK" in munin 1.3.3 and later
	echo 'frozen.draw STACK'
	echo "frozen.warning 0:$FROZENWARN"
	echo "frozen.critical 0:$FROZENCRIT"
	echo 'frozen.colour 0022FF'

	exit 0
fi

$EXIQGREP -cz | awk '
  BEGIN { frozen=mails="U"; }
  /[0-9]+ matches out of [0-9]+ messages/ { frozen=$1; mails=($5-$1); }
  END { printf("frozen.value %s\nmails.value %s\n",frozen,mails); }
'