From c4497a9ecc9f5f2d96a6b7a0aca0d95fb988b1f0 Mon Sep 17 00:00:00 2001
From: "Th.L" <thl-cmk@outlook.com>
Date: Wed, 24 Mar 2021 23:38:49 +0100
Subject: [PATCH] update project

---
 checks/cisco_asyncos_conn       |  64 ------------------------
 checks/cisco_asyncos_dns        |  73 ---------------------------
 checks/cisco_asyncos_messageage |  78 -----------------------------
 checks/cisco_asyncos_queue      |  86 --------------------------------
 cisco_asyncos.mkp               | Bin 12111 -> 44 bytes
 5 files changed, 301 deletions(-)
 delete mode 100644 checks/cisco_asyncos_conn
 delete mode 100644 checks/cisco_asyncos_dns
 delete mode 100644 checks/cisco_asyncos_messageage
 delete mode 100644 checks/cisco_asyncos_queue

diff --git a/checks/cisco_asyncos_conn b/checks/cisco_asyncos_conn
deleted file mode 100644
index a66954b..0000000
--- a/checks/cisco_asyncos_conn
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/python
-# -*- encoding: utf-8; py-indent-offset: 4 -*-
-# +------------------------------------------------------------------+
-# |             ____ _               _        __  __ _  __           |
-# |            / ___| |__   ___  ___| | __   |  \/  | |/ /           |
-# |           | |   | '_ \ / _ \/ __| |/ /   | |\/| | ' /            |
-# |           | |___| | | |  __/ (__|   <    | |  | | . \            |
-# |            \____|_| |_|\___|\___|_|\_\___|_|  |_|_|\_\           |
-# |                                                                  |
-# | Copyright Mathias Kettner 2013             mk@mathias-kettner.de |
-# +------------------------------------------------------------------+
-#
-# This file is part of Check_MK.
-# The official homepage is at http://mathias-kettner.de/check_mk.
-#
-# check_mk 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 in version 2.  check_mk is  distributed
-# in the hope that it will be useful, but WITHOUT ANY WARRANTY;  with-
-# out even the implied warranty of  MERCHANTABILITY  or  FITNESS FOR A
-# PARTICULAR PURPOSE. See the  GNU General Public License for more de-
-# ails.  You should have  received  a copy of the  GNU  General Public
-# License along with GNU Make; see the file  COPYING.  If  not,  write
-# to the Free Software Foundation, Inc., 51 Franklin St,  Fifth Floor,
-# Boston, MA 02110-1301 USA.
-#
-# only use full for Cisco WSA appliances
-#
-
-
-cisco_asyncos_conn_default_levels = {}
-
-
-def inventory_cisco_asyncos_conn(info):
-    if len(info) > 0:
-        return [(None, 'cisco_asyncos_conn_default_levels')]
-
-
-def check_cisco_asyncos_conn(_no_item, params, info):
-    state = 0
-    perfdata = []
-    warn, crit = None, None
-    idle, total, max = info[0]
-    active = int(total) - int(idle)
-    perfdata.append(('active', active, warn, crit, 0, int(max)))
-    perfdata.append(('idle', idle, '', '', 0, int(max)))
-    infotext = '%s Active Connections - %s Idle Connections - Maximum Connections was %s' % (active, idle, max)
-    return state, infotext, perfdata
-
-
-check_info['cisco_asyncos_conn'] = {
-    'check_function':          check_cisco_asyncos_conn,
-    'inventory_function':      inventory_cisco_asyncos_conn,
-    'service_description':     'Connection Stats',
-    'has_perfdata':            True,
-    'snmp_info':               ('.1.3.6.1.4.1.15497.1.2.3.2', [  # ASYNCOSWEBSECURITYAPPLIANCE-MIB::proxyClientSidePerf
-                                '7',  # cacheClientIdleConns
-                                '8',  # cacheClientTotalConns
-                                '9',  # cacheClientMaxConns
-                                ]),
-    'snmp_scan_function':  lambda oid: oid('.1.3.6.1.2.1.1.1.0').find('AsyncOS') != -1,
-    # 'snmp_scan_function': scan_cisco_asyncos,
-    # 'includes': ['cisco_asyncos.include'],
-}
diff --git a/checks/cisco_asyncos_dns b/checks/cisco_asyncos_dns
deleted file mode 100644
index 579959d..0000000
--- a/checks/cisco_asyncos_dns
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/python
-# -*- encoding: utf-8; py-indent-offset: 4 -*-
-#
-# Author: Th.L.
-# Date: 08-03-2020
-#
-# monitors status Cisco IronPort Appliances (ESA) DNS requests
-# Tested with: C380, C370
-#
-# check_mk 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 in version 2.  check_mk is  distributed
-# in the hope that it will be useful, but WITHOUT ANY WARRANTY;  with-
-# out even the implied warranty of  MERCHANTABILITY  or  FITNESS FOR A
-# PARTICULAR PURPOSE. See the  GNU General Public License for more de-
-# tails. You should have  received  a copy of the  GNU  General Public
-# License along with GNU Make; see the file  COPYING.  If  not,  write
-# to the Free Software Foundation, Inc., 51 Franklin St,  Fifth Floor,
-# Boston, MA 02110-1301 USA.
-#
-# .1.3.6.1.4.1.15497.1.1.1.15.0 = Gauge32: 0
-# .1.3.6.1.4.1.15497.1.1.1.16.0 = Gauge32: 0
-#
-# ASYNCOS-MAIL-MIB::outstandingDNSRequests.0 = Gauge32: 0
-# ASYNCOS-MAIL-MIB::pendingDNSRequests.0 = Gauge32: 0
-#
-# sample info
-# [[u'0', u'0']]
-#
-
-factory_settings['cisco_asyncos_dns_default_levels'] = {
-
-}
-
-
-def inventory_cisco_asyncos_dns(info):
-    if len(info[0]) == 2:
-        return [(None, None)]
-
-def check_cisco_asyncos_dns(_no_item, params, info):
-    if len(info[0]) == 2:
-        outstandingDNSRequests, pendingDNSRequests = info[0]
-
-        outstandingDNSRequests = int(outstandingDNSRequests)
-        pendingDNSRequests = int(pendingDNSRequests)
-
-        # Outstanding DNS requests --> DNS requests awaiting answer
-        # Pending DNS requests --> DNS requests waiting to be send
-        infotext = 'DNS requests awaiting answer: %d, DNS requests waiting to be send: %d' %(outstandingDNSRequests, pendingDNSRequests)
-
-        perfdata = []
-        perfdata.append(('outstandingdnsrequests', outstandingDNSRequests))
-        perfdata.append(('pendingdnsrequests', pendingDNSRequests))
-
-        return 0, infotext, perfdata
-
-check_info['cisco_asyncos_dns'] = {
-    'inventory_function': inventory_cisco_asyncos_dns,
-    'check_function': check_cisco_asyncos_dns,
-    'group': 'aysncos_dns',
-    'service_description': 'DNS requests',
-    'has_perfdata': True,
-    'snmp_info': (
-        '.1.3.6.1.4.1.15497.1.1.1',  # ASYNCOS-MAIL-MIB
-        [
-            '15',  # outstandingDNSRequests
-            '16',  # pendingDNSRequests
-        ]),
-    'default_levels_variable': 'cisco_asyncos_dns_default_levels',
-    'snmp_scan_function':  lambda oid: oid('.1.3.6.1.2.1.1.1.0').find('AsyncOS') != -1,
-    # 'snmp_scan_function': scan_cisco_asyncos,
-    # 'includes': ['cisco_asyncos.include'],
-}
diff --git a/checks/cisco_asyncos_messageage b/checks/cisco_asyncos_messageage
deleted file mode 100644
index b1e3ee5..0000000
--- a/checks/cisco_asyncos_messageage
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/python
-# -*- encoding: utf-8; py-indent-offset: 4 -*-
-#
-# Author: Th.L.
-# Date: 08-03-2020
-#
-# monitors status Cisco IronPort Appliances (ESA) oldest message age
-# Tested with: C380, C370
-#
-# check_mk 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 in version 2.  check_mk is  distributed
-# in the hope that it will be useful, but WITHOUT ANY WARRANTY;  with-
-# out even the implied warranty of  MERCHANTABILITY  or  FITNESS FOR A
-# PARTICULAR PURPOSE. See the  GNU General Public License for more de-
-# tails. You should have  received  a copy of the  GNU  General Public
-# License along with GNU Make; see the file  COPYING.  If  not,  write
-# to the Free Software Foundation, Inc., 51 Franklin St,  Fifth Floor,
-# Boston, MA 02110-1301 USA.
-#
-# .1.3.6.1.4.1.15497.1.1.1.14.0 = Gauge32: 258454
-#
-# ASYNCOS-MAIL-MIB::oldestMessageAge.0 = Gauge32: 259706
-#
-# sample info
-# [[u'258454']]
-#
-
-factory_settings['cisco_asyncos_messageage_default_levels'] = {
-
-}
-
-
-def inventory_cisco_asyncos_messageage(info):
-    if len(info[0]) == 1:
-        return [(None, None)]
-
-def check_cisco_asyncos_messageage(_no_item, params, info):
-    def get_messageage(messageage):  # expects time in seconds
-        m, s = divmod(messageage, 60)  # break in seconds / minutes
-        h, m = divmod(m, 60)  # break in mintes / hours
-        if h >= 24:  # more then one day
-            d, h = divmod(h, 24)  # break in hours / days
-        else:
-            return '%02d:%02d:%02d' % (h, m, s)
-        if d >= 365:  # more the one year
-            y, d = divmod(d, 365)  # break in days / years
-            return '%dy %dd %02d:%02d:%02d' % (y, d, h, m, s)
-        else:
-            return '%dd %02d:%02d:%02d' % (d, h, m, s)
-
-    if len(info[0]) == 1:
-        oldestMessageAge = int(info[0][0])
-
-        perfdata = []
-        perfdata.append(('oldestmessageage', oldestMessageAge))
-
-        infotext = 'Oldest message age: %s' %(get_messageage(oldestMessageAge))
-
-        return 0, infotext, perfdata
-
-
-check_info['cisco_asyncos_messageage'] = {
-    'inventory_function': inventory_cisco_asyncos_messageage,
-    'check_function': check_cisco_asyncos_messageage,
-    'group': 'aysncos_messageage',
-    'service_description': 'Message age',
-    'has_perfdata': True,
-    'snmp_info': (
-        '.1.3.6.1.4.1.15497.1.1.1',  # ASYNCOS-MAIL-MIB
-        [
-            '14',  # oldestMessageAge
-        ]),
-    'default_levels_variable': 'cisco_asyncos_messageage_default_levels',
-    'snmp_scan_function':  lambda oid: oid('.1.3.6.1.2.1.1.1.0').find('AsyncOS') != -1,
-    # 'snmp_scan_function': scan_cisco_asyncos,
-    # 'includes': ['cisco_asyncos.include'],
-}
diff --git a/checks/cisco_asyncos_queue b/checks/cisco_asyncos_queue
deleted file mode 100644
index e4105d0..0000000
--- a/checks/cisco_asyncos_queue
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/usr/bin/python
-# -*- encoding: utf-8; py-indent-offset: 4 -*-
-#
-#  Rewritten by: Th.L.
-#  Date: 10-02-2020
-#
-#  added wato, fixed inventory function, changed snmp scan function, changed item to 'work queue'
-#
-# +------------------------------------------------------------------+
-# |             ____ _               _        __  __ _  __           |
-# |            / ___| |__   ___  ___| | __   |  \/  | |/ /           |
-# |           | |   | '_ \ / _ \/ __| |/ /   | |\/| | ' /            |
-# |           | |___| | | |  __/ (__|   <    | |  | | . \            |
-# |            \____|_| |_|\___|\___|_|\_\___|_|  |_|_|\_\           |
-# |                                                                  |
-# | Copyright Mathias Kettner 2013             mk@mathias-kettner.de |
-# +------------------------------------------------------------------+
-#
-# This file is part of Check_MK.
-# The official homepage is at http://mathias-kettner.de/check_mk.
-#
-# check_mk 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 in version 2.  check_mk is  distributed
-# in the hope that it will be useful, but WITHOUT ANY WARRANTY;  with-
-# out even the implied warranty of  MERCHANTABILITY  or  FITNESS FOR A
-# PARTICULAR PURPOSE. See the  GNU General Public License for more de-
-# ails.  You should have  received  a copy of the  GNU  General Public
-# License along with GNU Make; see the file  COPYING.  If  not,  write
-# to the Free Software Foundation, Inc., 51 Franklin St,  Fifth Floor,
-# Boston, MA 02110-1301 USA.
-#
-
-
-factory_settings['cisco_asyncos_queue_default_levels'] = {
-    'levels': (50, 100),  # warn/crit # of messages in work queue
-}
-
-
-def inventory_cisco_asyncos_queue(info):
-    if len(info) > 0:
-        return [(None, None)]
-
-
-def check_cisco_asyncos_queue(_no_item, params, info):
-    warn, crit = params.get('levels', (50, 100))
-
-    queuestatus, workqueuesize = info[0]
-
-    queuestatus = int(queuestatus)
-    workqueuesize = int(workqueuesize)
-
-    perfdata=[('queue', workqueuesize, warn, crit)]
-
-    infotext = '%d message(s) in work queue' % workqueuesize
-    if workqueuesize >= crit:
-        yield 2, infotext + ' (critical at %d)' % crit, perfdata
-    elif workqueuesize >= warn:
-        yield 1, infotext + ' (warning at %d)' % warn, perfdata
-    else:
-        yield 0, infotext, perfdata
-
-    if queuestatus == 1:
-        yield 0, 'Queue space: enough'
-    elif queuestatus == 2:
-        yield 1, 'Queue space: near full'
-    elif queuestatus == 3:
-        yield 2, 'Queue space: full'
-
-check_info['cisco_asyncos_queue'] = {
-    'check_function':          check_cisco_asyncos_queue,
-    'inventory_function':      inventory_cisco_asyncos_queue,
-    'group':                   'cisco_asyncos_queue',
-    'service_description':     'Queue',
-    'has_perfdata':            True,
-    'snmp_info':               ('.1.3.6.1.4.1.15497.1.1.1', [  # ASYNCOS-MAIL-MIB:
-                                '5',  # queueAvailabilityStatus
-                                '11'  # workQueueMessages
-                                ]
-                                ),
-    'default_levels_variable': 'cisco_asyncos_queue_default_levels',
-    'snmp_scan_function':  lambda oid: oid('.1.3.6.1.2.1.1.1.0').find('AsyncOS') != -1,
-    # 'snmp_scan_function': scan_cisco_asyncos,
-    # 'includes': ['cisco_asyncos.include'],
-}
-
diff --git a/cisco_asyncos.mkp b/cisco_asyncos.mkp
index be691ccdddc54f9082d6cd64f3b2730339bad591..9c7a7def77a4f84f6aafb891b353508e92bbe896 100644
GIT binary patch
delta 13
UcmX>fr^6=S&B5Wke<GV2039C#*#H0l

literal 12111
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
F{s*T3?}Y#W

-- 
GitLab