summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormh <mh@immerda.ch>2015-10-31 10:26:05 +0100
committermh <mh@immerda.ch>2015-10-31 10:26:05 +0100
commitc3ca4ac25d7cdfd5826149445f2946d64d968f97 (patch)
tree94f4375d9f1cb33e870ab77ab21b243ee364dbe6
parent2c4f69e1ea1656edf7c7d39fa90d200f901404df (diff)
also add pop3 login checks
-rw-r--r--files/plugins/check_pop3_login83
-rw-r--r--manifests/command/imap_pop3.pp4
-rw-r--r--manifests/plugins/imap_login.pp7
-rw-r--r--manifests/plugins/mail_login.pp10
-rw-r--r--manifests/service/pop3_login.pp22
5 files changed, 118 insertions, 8 deletions
diff --git a/files/plugins/check_pop3_login b/files/plugins/check_pop3_login
new file mode 100644
index 0000000..4eb29b8
--- /dev/null
+++ b/files/plugins/check_pop3_login
@@ -0,0 +1,83 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+# -*- Mode: Python -*-
+#
+# Copyright (C) 2006 Bertera Pietro <pietro@bertera.it>
+# Copyright (C) 2015 mh <mh@immerda.ch>
+# Response time monitoring with perfdata modification by Ivan Savcic <isavcic@gmail.com> and Milos Buncic, 2012.
+# Derived from: https://github.com/isavcic/check_imap_login
+
+# This file may be distributed and/or modified under the terms of
+# the GNU General Public License version 2 as published by
+# the Free Software Foundation.
+# This file is distributed without any warranty; without even the implied
+# warranty of merchantability or fitness for a particular purpose.
+
+import sys, os, poplib, getopt
+from time import time
+
+def usage():
+ print sys.argv[0] + " -u <user> -p <password> -H <host> [-s] -w <warning threshold (sec)> -c <critical threshold (sec)>\n -s is for using POP3s"
+
+def main():
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], "u:p:sH:w:c:")
+ except getopt.GetoptError:
+ usage()
+ return 3
+
+ user = host = password = use_ssl = warning = critical = None
+
+ for o, a in opts:
+ if o == "-u":
+ user = a
+ elif o == "-p":
+ password = a
+ elif o == "-s":
+ use_ssl = True
+ elif o == "-H":
+ host = a
+ elif o == "-w":
+ warning = float(a)
+ elif o == "-c":
+ critical = float(a)
+
+ if user == None or password == None or host == None or warning == None or critical == None:
+ usage()
+ return 1
+
+ if use_ssl:
+ M = poplib.POP3_SSL(host=host)
+ else:
+ M = poplib.POP3(host)
+
+ timestamp = time()
+
+ try:
+ M.getwelcome()
+ M.user(user)
+ M.pass_(password)
+ except Exception, e:
+ print "CRITICAL POP3 Login Failed: %s" % e
+ return 2
+
+ M.quit()
+
+ timestamp = time() - timestamp
+
+ if timestamp < warning:
+ status = "OK"
+ exitcode = 0
+ if timestamp >= warning:
+ status = "WARNING"
+ exitcode = 1
+ if timestamp >= critical:
+ status = "CRITICAL"
+ exitcode = 2
+
+ print '%s POP3 Login | response_time=%.3fs;%.3f;%.3f' % (status, timestamp, warning, critical)
+
+ return exitcode
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/manifests/command/imap_pop3.pp b/manifests/command/imap_pop3.pp
index 632b304..42e4092 100644
--- a/manifests/command/imap_pop3.pp
+++ b/manifests/command/imap_pop3.pp
@@ -1,6 +1,6 @@
# manage mail checks
class nagios::command::imap_pop3 {
- require ::nagios::plugins::imap_login
+ require ::nagios::plugins::mail_login
case $::operatingsystem {
'Debian','Ubuntu': { } # Debian/Ubuntu already define those checks
default: {
@@ -24,5 +24,7 @@ class nagios::command::imap_pop3 {
command_line => '$USER1$/check_tcp -H $ARG1$ -p 2000';
'check_imap_login':
command_line => '$USER1$/check_imap_login -s -H $ARG1$ -u $ARG2$ -p $ARG3$ -w $ARG4$ -c $ARG5$';
+ 'check_pop3_login':
+ command_line => '$USER1$/check_pop3_login -s -H $ARG1$ -u $ARG2$ -p $ARG3$ -w $ARG4$ -c $ARG5$';
}
}
diff --git a/manifests/plugins/imap_login.pp b/manifests/plugins/imap_login.pp
deleted file mode 100644
index bb53b81..0000000
--- a/manifests/plugins/imap_login.pp
+++ /dev/null
@@ -1,7 +0,0 @@
-# a simple imap login check
-class nagios::plugins::imap_login {
- nagios::plugin { 'check_imap_login':
- source => 'nagios/plugins/check_imap_login',
- }
-}
-
diff --git a/manifests/plugins/mail_login.pp b/manifests/plugins/mail_login.pp
new file mode 100644
index 0000000..a86cdc2
--- /dev/null
+++ b/manifests/plugins/mail_login.pp
@@ -0,0 +1,10 @@
+# simple mail login check
+class nagios::plugins::mail_login {
+ nagios::plugin {
+ 'check_imap_login':
+ source => 'nagios/plugins/check_imap_login';
+ 'check_pop3_login':
+ source => 'nagios/plugins/check_pop3_login';
+ }
+}
+
diff --git a/manifests/service/pop3_login.pp b/manifests/service/pop3_login.pp
new file mode 100644
index 0000000..7453528
--- /dev/null
+++ b/manifests/service/pop3_login.pp
@@ -0,0 +1,22 @@
+# a pop3 login check
+define nagios::service::pop3_login(
+ $username,
+ $password,
+ $warning = 5,
+ $critical = 10,
+ $host = $::fqdn,
+ $host_name = $::fqdn,
+ $ensure = 'present',
+){
+ nagios::service{
+ "pop3_login_${name}":
+ ensure => $ensure;
+ }
+
+ if $ensure != 'absent' {
+ Nagios::Service["pop3_login_${name}"]{
+ check_command => "check_pop3_login!${host}!${username}!${password}!${warning}!${critical}",
+ host_name => $host_name,
+ }
+ }
+}