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