From b640e2bf6b8b6edd4549744efee1d55899aa8185 Mon Sep 17 00:00:00 2001
From: thl-cmk <thl-cmk@outlook.com>
Date: Wed, 3 Mar 2021 21:13:24 +0100
Subject: [PATCH] update project

---
 agent_based/checkpoint_asg_interface.py | 229 ++++++++++++++++++++++++
 checkpoint_asg_interface.mkp            | Bin 53 -> 3284 bytes
 packages/checkpoint_asg_interface       |  14 +-
 3 files changed, 237 insertions(+), 6 deletions(-)
 create mode 100644 agent_based/checkpoint_asg_interface.py

diff --git a/agent_based/checkpoint_asg_interface.py b/agent_based/checkpoint_asg_interface.py
new file mode 100644
index 0000000..608fa25
--- /dev/null
+++ b/agent_based/checkpoint_asg_interface.py
@@ -0,0 +1,229 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2020-11-09
+#
+# Monitor Check Point Maestro SMO interfaces
+#
+# 2021-03-03: rewrite for CMK 2.0
+#
+# sample snmpwalk (for one interface)
+# .1.3.6.1.4.1.2620.1.48.26.1.1.1.4.0 = Gauge32: 4
+# .1.3.6.1.4.1.2620.1.48.26.1.1.2.4.0 = STRING: "bond2.602"
+# .1.3.6.1.4.1.2620.1.48.26.1.1.3.4.0 = STRING: "10.9.9.1/25"
+# .1.3.6.1.4.1.2620.1.48.26.1.1.4.4.0 = STRING: "-"
+# .1.3.6.1.4.1.2620.1.48.26.1.1.5.4.0 = STRING: "00:1c:7f:81:05:09"
+# .1.3.6.1.4.1.2620.1.48.26.1.1.6.4.0 = STRING: "Vlan"
+# .1.3.6.1.4.1.2620.1.48.26.1.1.7.4.0 = STRING: "(up)/(up)"
+# .1.3.6.1.4.1.2620.1.48.26.1.1.8.4.0 = STRING: "NA"
+# .1.3.6.1.4.1.2620.1.48.26.1.1.9.4.0 = STRING: "1500"
+# .1.3.6.1.4.1.2620.1.48.26.1.1.10.4.0 = STRING: "Full"
+# .1.3.6.1.4.1.2620.1.48.26.1.1.11.4.0 = STRING: "355320533"
+# .1.3.6.1.4.1.2620.1.48.26.1.1.12.4.0 = STRING: "4673143507"
+#
+# sample section
+# [
+#  [u'bond2', u'-', u'-', u'00:1c:7f:81:05:09', u'Bond Master', u'(up)/(up)', u'20G', u'NA', u'Full', u'3373103274', u'5007776301'],
+#  [u'eth1-05', u'-', u'-', u'00:1c:7f:81:05:09', u'Bond slave', u'(up)/(up)', u'10G', u'1500', u'Full', u'1014183605', u'3291515315'],
+#  [u'eth2-05', u'-', u'-', u'00:1c:7f:81:05:09', u'Bond slave', u'(up)/(up)', u'10G', u'1500', u'Full', u'2358951560', u'1716293763'],
+#  [u'bond2.602', u'10.9.9.1/25', u'-', u'00:1c:7f:81:05:09', u'Vlan', u'(up)/(up)', u'NA', u'1500', u'Full', u'355320533', u'4673143507'],
+#  [u'bond2.3001', u'10.0.100.49/27', u'-', u'00:1c:7f:81:05:09', u'Vlan', u'(up)/(up)', u'NA', u'1500', u'Full', u'2910413426', u'229216384'],
+#  [u'bond3', u'-', u'-', u'00:1c:7f:81:06:09', u'Bond Master', u'(up)/(up)', u'20G', u'NA', u'Full', u'1479928728', u'133617791'],
+#  [u'eth1-06', u'-', u'-', u'00:1c:7f:81:06:09', u'Bond slave', u'(up)/(up)', u'10G', u'1500', u'Full', u'214459394', u'131774843'],
+#  [u'eth2-06', u'-', u'-', u'00:1c:7f:81:06:09', u'Bond slave', u'(up)/(up)', u'10G', u'1500', u'Full', u'1265469477', u'1843158'],
+#  [u'magg1', u'10.0.100.9/27', u'-', u'00:1c:7f:6e:9b:dc', u'Bond Master', u'(up)/(up)', u'20G', u'NA', u'Full', u'200631796', u'384654797'],
+#  [u'eth1-Mgmt1', u'-', u'-', u'00:1c:7f:6e:9b:dc', u'Bond slave', u'(Up)/(Up)', u'10G', u'1500', u'Full', u'61520991', u'44776128'],
+#  [u'eth2-Mgmt1', u'-', u'-', u'00:1c:7f:6e:9b:dc', u'Bond slave', u'(Up)/(Up)', u'10G', u'1500', u'Full', u'139110651', u'339878254'],
+#  [u'Sync', u'192.0.2.1/24', u'-', u'00:1c:7f:01:04:fe', u'Bond Master', u'(up)/(up)', u'20G', u'NA', u'Full', u'24549684703', u'14214325659'],
+#  [u'eth1-Sync', u'-', u'-', u'00:1c:7f:01:04:fe', u'Bond slave', u'(down)/(down)', u'10G', u'1500', u'Full', u'1228171', u'1511513'],
+#  [u'eth2-Sync', u'-', u'-', u'00:1c:7f:01:04:fe', u'Bond slave', u'(up)/(up)', u'10G', u'1500', u'Full', u'24548432877', u'14212801896']
+# ]
+#
+
+import time
+
+from typing import Mapping, Dict, List, Tuple, NamedTuple
+
+from .agent_based_api.v1.type_defs import (
+    DiscoveryResult,
+    StringTable,
+    CheckResult,
+)
+
+from .agent_based_api.v1 import (
+    register,
+    Service,
+    equals,
+    Result,
+    check_levels,
+    State,
+    SNMPTree,
+    startswith,
+    all_of,
+    any_of,
+
+    GetRateError,
+    get_rate,
+    get_value_store,
+    IgnoreResults,
+    render,
+)
+
+
+class CheckPointASGInterface(NamedTuple):
+    asgNetIfIPv4Addr: str
+    asgNetIfIPv6Addr: str
+    asgNetIfMACAddr: str
+    asgNetIfInfo: str
+    asgNetIfState: str
+    asgNetIfSpeed: str
+    asgNetIfMTU: str
+    asgNetIfDuplex: str
+    asgNetIfRx: int
+    asgNetIfTx: int
+
+
+def parse_checkpoint_asg_interface(string_table: List[StringTable]) -> Dict:
+    parsed = {}
+    for entry in string_table[0]:
+        asgNetIfName, asgNetIfIPv4Addr, asgNetIfIPv6Addr, asgNetIfMACAddr, asgNetIfInfo, asgNetIfState, asgNetIfSpeed, asgNetIfMTU, asgNetIfDuplex, asgNetIfRx, asgNetIfTx = entry
+        # if not asgNetIfIPv4Addr == asgNetIfIPv6Addr == '-':  # do not add interfaces without ip address
+        item = '%s' % (asgNetIfName)
+        parsed.update({item: CheckPointASGInterface(
+            asgNetIfIPv4Addr,
+            asgNetIfIPv6Addr,
+            asgNetIfMACAddr,
+            asgNetIfInfo,
+            asgNetIfState,
+            asgNetIfSpeed,
+            asgNetIfMTU,
+            asgNetIfDuplex,
+            int(asgNetIfRx),
+            int(asgNetIfTx)
+        )})
+
+    return parsed
+
+
+def discovery_checkpoint_asg_interface(section: Dict) -> DiscoveryResult:
+    # sample section
+    # 
+    # {
+    #  'bond2': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=3373103274, asgNetIfTx=5007776301),
+    #  'eth1-05': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1014183605, asgNetIfTx=3291515315),
+    #  'eth2-05': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=2358951560, asgNetIfTx=1716293763),
+    #  'bond2.602': CheckPointASGInterface(asgNetIfIPv4Addr='10.9.9.1/25', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=355320533, asgNetIfTx=4673143507),
+    #  'bond2.3001': CheckPointASGInterface(asgNetIfIPv4Addr='10.0.100.49/27', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=2910413426, asgNetIfTx=229216384),
+    #  'bond3': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=1479928728, asgNetIfTx=133617791),
+    #  'eth1-06': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=214459394, asgNetIfTx=131774843),
+    #  'eth2-06': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1265469477, asgNetIfTx=1843158),
+    #  'bond3.998': CheckPointASGInterface(asgNetIfIPv4Addr='xx.yy.zz.129/28', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1470381718, asgNetIfTx=124676073),
+    #  'magg1': CheckPointASGInterface(asgNetIfIPv4Addr='10.0.100.9/27', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=200631796, asgNetIfTx=384654797),
+    #  'eth1-Mgmt1': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond slave', asgNetIfState='(Up)/(Up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=61520991, asgNetIfTx=44776128),
+    #  'eth2-Mgmt1': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond slave', asgNetIfState='(Up)/(Up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=139110651, asgNetIfTx=339878254),
+    #  'Sync': CheckPointASGInterface(asgNetIfIPv4Addr='192.0.2.1/24', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=24549684703, asgNetIfTx=14214325659),
+    #  'eth1-Sync': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond slave', asgNetIfState='(down)/(down)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1228171, asgNetIfTx=1511513),
+    #  'eth2-Sync': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=24548432877, asgNetIfTx=14212801896)
+    # }
+    #
+    for item in section.keys():
+        yield Service(item=item, parameters={'asgNetIfSpeed': section[item].asgNetIfSpeed})
+
+
+def check_checkpoint_asg_interface(item, params, section: Dict) -> CheckResult:
+    try:
+        asg_interface = section[item]
+
+        inv_asgNetIfSpeed = params['asgNetIfSpeed']
+
+        now = time.time()
+        value_store = get_value_store()
+
+        try:
+            in_rate = get_rate(value_store, 'in', now, asg_interface.asgNetIfRx, raise_overflow=True, )
+        except GetRateError as exc:
+            yield IgnoreResults(str(exc))
+        else:
+            yield from check_levels(in_rate, metric_name='if_in_octets', render_func=render.iobandwidth, label='In', )
+
+        out_rate = get_rate(value_store, 'out', now, asg_interface.asgNetIfTx, raise_overflow=True, )
+        yield from check_levels(out_rate, metric_name='if_out_octets', render_func=render.iobandwidth, label='Out', )
+
+        details = ''
+        details += '\nIPv4 Address: %s' % asg_interface.asgNetIfIPv4Addr
+        details += '\nIPv6 Address: %s' % asg_interface.asgNetIfIPv6Addr
+        details += '\nMAC Address: %s' % asg_interface.asgNetIfMACAddr
+        details += '\nType: %s' % asg_interface.asgNetIfInfo
+        details += '\nMTU: %s' % asg_interface.asgNetIfMTU
+        details += '\nDuplex: %s' % asg_interface.asgNetIfDuplex
+
+        if not asg_interface.asgNetIfIPv4Addr == '-':
+            summary = 'IPv4: %s' % asg_interface.asgNetIfIPv4Addr
+        else:
+            summary = 'IPv4: N/A'
+
+        yield Result(state=State.OK, summary=summary, details=details)
+
+        yield_text = 'State: %s' % asg_interface.asgNetIfState
+        if not asg_interface.asgNetIfState.lower() == '(up)/(up)':
+            yield Result(state=State.CRIT, summary=yield_text)
+        else:
+            yield Result(state=State.OK, summary=yield_text)
+
+        if not asg_interface.asgNetIfSpeed == inv_asgNetIfSpeed:
+            yield Result(state=State.WARN,
+                         summary='Speed: %s (%s expected)' % (asg_interface.asgNetIfSpeed, inv_asgNetIfSpeed))
+        elif not asg_interface.asgNetIfSpeed == 'NA':
+            yield Result(state=State.OK, summary='Speed %s' % asg_interface.asgNetIfSpeed)
+
+        if not asg_interface.asgNetIfDuplex.lower():
+            yield Result(state=State.CRIT, summary='Duplex: %s (Full expected)' % asg_interface.asgNetIfDuplex)
+        else:
+            yield Result(state=State.OK, summary='Duplex: %s' % asg_interface.asgNetIfDuplex)
+
+    except KeyError:
+        pass
+
+
+register.snmp_section(
+    name='checkpoint_asg_interface',
+    parse_function=parse_checkpoint_asg_interface,
+    fetch=[
+        SNMPTree(
+            base='.1.3.6.1.4.1.2620.1.48.26.1.1',  # CHECKPOINT-MIB::asgResourceEntry
+            oids=[
+                '2',  # asgNetIfName
+                '3',  # asgNetIfIPv4Addr
+                '4',  # asgNetIfIPv6Addr
+                '5',  # asgNetIfMACAddr
+                '6',  # asgNetIfInfo
+                '7',  # asgNetIfState
+                '8',  # asgNetIfSpeed
+                '9',  # asgNetIfMTU
+                '10',  # asgNetIfDuplex
+                '11',  # asgNetIfRx
+                '12',  # asgNetIfTx
+            ]
+        ),
+    ],
+    detect=any_of(
+        startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.2620'),
+        all_of(
+            equals('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.8072.3.2.10'),
+            equals('.1.3.6.1.4.1.2620.1.6.1.0', 'SVN Foundation'),
+        )
+    )
+)
+
+register.check_plugin(
+    name='checkpoint_asg_interface',
+    service_name='ASG Interface %s',
+    discovery_function=discovery_checkpoint_asg_interface,
+    check_function=check_checkpoint_asg_interface,
+    check_default_parameters={},
+    check_ruleset_name='checkpoint_asg_interface',
+)
\ No newline at end of file
diff --git a/checkpoint_asg_interface.mkp b/checkpoint_asg_interface.mkp
index fc044c52edd2f72996f24411e33c5e2fc1e587c9..de8c1f9e220cab6e66723cc490fc2364ae0359bf 100644
GIT binary patch
delta 3269
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
DNpOHL

delta 12
Tcmca2Y04_!&B5U?k<|bI6<7l3

diff --git a/packages/checkpoint_asg_interface b/packages/checkpoint_asg_interface
index 798bd81..4319d09 100644
--- a/packages/checkpoint_asg_interface
+++ b/packages/checkpoint_asg_interface
@@ -1,11 +1,13 @@
-{'author': u'Th.L. (thl-cmk[at]outlook[dot]com)',
- 'description': u'Monitor Check Point Maestro SMO interfaces',
+{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)',
+ 'description': 'Monitor Check Point Maestro SMO interfaces\n'
+                '\n'
+                ' - 2021-03-03: rewrite for CMK 2.x\n',
  'download_url': 'http://thl-cmk.hopto.org/',
- 'files': {'checks': ['checkpoint_asg_interface']},
+ 'files': {'agent_based': ['checkpoint_asg_interface.py']},
  'name': 'checkpoint_asg_interface',
  'num_files': 1,
- 'title': u'Check Point Maestro SMO interfaces',
+ 'title': 'Check Point Maestro SMO interfaces',
  'version': '20201109.v0.1',
- 'version.min_required': '1.4.0p38',
- 'version.packaged': '1.6.0p15',
+ 'version.min_required': '2.0.0i1',
+ 'version.packaged': '2.0.0b7',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab