summaryrefslogtreecommitdiff
path: root/files/munin/dovecot
blob: 1f9e3b4353de7dc759406c20c6ed232dcad53ef8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#!/bin/bash
#
# Munin Plugin
# to count logins to your dovecot mailserver
# 
# Created by Dominik Schulz <lkml@ds.gauner.org>
# http://developer.gauner.org/munin/
# Contributions by:
# - Stephane Enten <tuf@delyth.net>
# 
# Parameters understood:
#
# config    (required)
# autoconf  (optional - used by munin-config)
# 
# Config variables:
#
#       logfile      - Where to find the syslog file
#
# Add the following line to a file in /etc/munin/plugin-conf.d:
#   env.logfile /var/log/your/logfile.log
#
# Magic markers (optional - used by munin-config and installation scripts):
#
#%# family=auto
#%# capabilities=autoconf

######################
# Configuration
######################
STAT_FILE=${STAT_FILE:-/var/lib/munin/plugin-state/plugin-dovecot.state}
EXPR_BIN=/usr/bin/expr
LOGFILE=${logfile:-/var/log/mail.log}
######################

if [ "$1" = "autoconf" ]; then
  echo yes
  exit 0
fi

if [ "$1" = "config" ]; then
  echo 'graph_title Dovcecot Logins'
  echo 'graph_args --base 1000 -l 0'
  echo 'graph_vlabel Login Counters'
  echo 'login_total.label Total Logins'
  echo 'login_tls.label TLS Logins'
  echo 'login_ssl.label SSL Logins'
  echo 'login_imap.label IMAP Logins'
  echo 'login_pop3.label POP3 Logins'
  echo 'login_imap_proxy.label IMAP Proxy Logins'
  echo 'login_pop3_proxy.label POP3 Proxy Logins'
  echo 'connected.label Connected Users'
  exit 0
fi

#############################
# Initialization
#############################
if [ ! -r $STAT_FILE ]; then
  echo "TOTAL=0" > $STAT_FILE
  echo "TLS=0" >> $STAT_FILE
  echo "SSL=0" >> $STAT_FILE
  echo "IMAP=0" >> $STAT_FILE
  echo "POP3=0" >> $STAT_FILE
  echo "IMAP_PROXY=0" >> $STAT_FILE
  echo "POP3_PROXY=0" >> $STAT_FILE
fi
#############################


######################
# Total Logins
######################
echo -en "login_total.value "
NEW_TOTAL=$(egrep '[dovecot]?.*(Login|started proxying)' $LOGFILE | grep "`date '+%b %d'`" | sort | wc -l)
OLD_TOTAL=$(grep TOTAL $STAT_FILE | cut -f2 -d '=')
TOTAL=$($EXPR_BIN $NEW_TOTAL - $OLD_TOTAL)
if [ $TOTAL -gt 0 ]; then
  echo "$TOTAL"
else
  echo "0"
fi
echo -n
######################
# Connected Users
######################
DISCONNECTS=$(egrep '[dovecot]?.*(Disconnected|Connection closed|disconnecting)' $LOGFILE | sort | wc -l)
CONNECTS=$(egrep '[dovecot]?.*(Login|started proxying)' $LOGFILE | sort | wc -l)
DISCON=$($EXPR_BIN $CONNECTS - $DISCONNECTS)
if [ $DISCON -lt 0 ]; then
  DISCON=0
fi
echo -en "connected.value "
echo $DISCON
echo -n
######################
# TLS Logins
######################
echo -en "login_tls.value "
NEW_TLS=$(egrep '[dovecot]?.*Login.*TLS' $LOGFILE | grep "`date '+%b %d'`" | sort | wc -l)
OLD_TLS=$(grep TLS $STAT_FILE | cut -f2 -d '=')
TLS=$($EXPR_BIN $NEW_TLS - $OLD_TLS)
if [ $TLS -gt 0 ]; then
  echo "$TLS"
else
  echo "0"
fi
echo -n
######################
# SSL Logins
######################
echo -en "login_ssl.value "
NEW_SSL=$(egrep '[dovecot]?.*Login.*SSL' $LOGFILE | grep "`date '+%b %d'`" | sort | wc -l)
OLD_SSL=$(grep SSL $STAT_FILE | cut -f2 -d '=')
SSL=$($EXPR_BIN $NEW_SSL - $OLD_SSL)
if [ $SSL -gt 0 ]; then
  echo "$SSL"
else
  echo "0"
fi
echo -n
######################
# IMAP Logins
######################
echo -en "login_imap.value "
NEW_IMAP=$(egrep '[dovecot]?.*imap.*Login' $LOGFILE | grep "`date '+%b %d'`" | sort | wc -l)
OLD_IMAP=$(grep 'IMAP=' $STAT_FILE | cut -f2 -d '=')
IMAP=$($EXPR_BIN $NEW_IMAP - $OLD_IMAP)
if [ $IMAP -gt 0 ]; then
  echo "$IMAP"
else
  echo "0"
fi
echo -n
######################
# POP3 Logins
######################
echo -en "login_pop3.value "
NEW_POP3=$(egrep '[dovecot]?.*pop3.*Login' $LOGFILE | grep "`date '+%b %d'`" | sort | wc -l)
OLD_POP3=$(grep 'POP3=' $STAT_FILE | cut -f2 -d '=')
POP3=$($EXPR_BIN $NEW_POP3 - $OLD_POP3)
if [ $POP3 -gt 0 ]; then
  echo "$POP3"
else
  echo "0"
fi
echo -n
######################
# POP3 Proxy Logins
######################
echo -en "login_pop3_proxy.value "
NEW_POP3_PROXY=$(egrep '[dovecot]?.*pop3.*started proxying' $LOGFILE | grep "`date '+%b %d'`" | sort | wc -l)
OLD_POP3_PROXY=$(grep POP3_PROXY $STAT_FILE | cut -f2 -d '=')
POP3_PROXY=$($EXPR_BIN $NEW_POP3_PROXY - $OLD_POP3_PROXY)
if [ $POP3_PROXY -gt 0 ]; then
  echo "$POP3_PROXY"
else
  echo "0"
fi
echo -n
######################
# IMAP Proxy Logins
######################
echo -en "login_imap_proxy.value "
NEW_IMAP_PROXY=$(egrep '[dovecot]?.*imap*started proxying' $LOGFILE | grep "`date '+%b %d'`" | sort | wc -l)
OLD_IMAP_PROXY=$(grep IMAP_PROXY $STAT_FILE | cut -f2 -d '=')
IMAP_PROXY=$($EXPR_BIN $NEW_IMAP_PROXY - $OLD_IMAP_PROXY)
if [ $IMAP_PROXY -gt 0 ]; then
  echo "$IMAP_PROXY"
else
  echo "0"
fi
echo -n
######################
# Save the new values
######################
echo "TOTAL=$NEW_TOTAL" > $STAT_FILE
echo "TLS=$NEW_TLS" >> $STAT_FILE
echo "SSL=$NEW_SSL" >> $STAT_FILE 
echo "IMAP=$NEW_IMAP" >> $STAT_FILE
echo "POP3=$NEW_POP3" >> $STAT_FILE
echo "POP3_PROXY=$NEW_POP3_PROXY" >> $STAT_FILE
echo "IMAP_PROXY=$NEW_IMAP_PROXY" >> $STAT_FILE